我已经配置了HDFS,Datanode和namenode以及hbase。 我在HDFS中存储了一个CDR csv文件。那么我如何将其与Hbase映射并准备好进行处理呢?
答案 0 :(得分: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指定列族的名称。 Splits只是预先分裂所以它更快一点。如果这是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
注意:你应该考虑一下你的rowkey是什么。挑选第一列可能不是正确的选择。请记住,HBase不是关系数据库。做一些在HBase中有意义的事情。