我已经配置了hdfs、datanode和namenode以及hbase。我在hdfs中存储了一个cdrcsv文件。那么,如何将它Map到hbase并准备好处理它呢?
eivnm1vs1#
你可以用 importtsv 用于将csv文件大容量加载到hbase的工具。下面是一个关于如何做到这一点的不错的教程:http://blog.cloudera.com/blog/2013/09/how-to-use-hbase-bulk-loading-and-why/以下是博文摘要:首先,创建表:
importtsv
hbase shell create 'cdr', {NAME => 'f'}, {SPLITS => ['g', 'm', 'r', 'w']}
名称指定柱族的名称。分裂只是预裂,所以它有点快。如果这是cdr并且rowkey是一个电话号码或类似的东西,那么您需要根据号码而不是字符进行分割。您只需要选择实际将数据分割成块的分割。然后,使用importtsv从cdr data 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中做一些有意义的事情。
1条答案
按热度按时间eivnm1vs1#
你可以用
importtsv
用于将csv文件大容量加载到hbase的工具。下面是一个关于如何做到这一点的不错的教程:http://blog.cloudera.com/blog/2013/09/how-to-use-hbase-bulk-loading-and-why/以下是博文摘要:
首先,创建表:
名称指定柱族的名称。分裂只是预裂,所以它有点快。如果这是cdr并且rowkey是一个电话号码或类似的东西,那么您需要根据号码而不是字符进行分割。您只需要选择实际将数据分割成块的分割。
然后,使用importtsv从cdr data cdr.csv加载数据:
然后,完成它:
注意:您应该考虑您的rowkey是什么。选择第一列可能不是正确的选择。记住,hbase不是关系数据库。在hbase中做一些有意义的事情。