我已经配置了 HDFS、Datanode 和 namenode 以及 hbase。我在 HDFS 中存储了一个 CDR csv 文件。那么我怎样才能将它与 Hbase 映射并准备好处理它呢?
问问题
533 次
1 回答
0
您可以使用该importtsv
工具将 CSV 文件批量加载到 HBase。这是一个关于如何做到这一点的不错的教程:http: //blog.cloudera.com/blog/2013/09/how-to-use-hbase-bulk-loading-and-why/
以下是博客文章的摘要:
首先,您创建表:
hbase shell
create 'cdr', {NAME => 'f'}, {SPLITS => ['g', 'm', 'r', 'w']}
NAME 指定列族的名称。拆分只是预拆分,因此速度更快。如果这是 CDR 并且 ROWKEY 将是电话号码或类似的东西,那么您希望拆分数字,而不是字符。您只想选择实际将数据拆分为块的拆分。
然后,您使用 importtsv 从您的 cdr 数据 cdr.csv 加载数据:
hadoop jar /usr/lib/hbase/hbase-xxx.jar importtsv
-Dimporttsv.separator=,
-Dimporttsv.bulk.output=output
-Dimporttsv.columns=HBASE_ROW_KEY,f:col2,f:col3,f:col4,... cdr cdr.csv
然后,完成它:
hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles output wordcount
注意:您应该考虑一下您的行键是什么。选择第一列可能不是正确的选择。请记住,HBase 不是关系数据库。在 HBase 中做一些有意义的事情。
于 2014-07-23T18:01:39.687 回答