我必须实现hadoop,这样它才能处理调用细节记录的数据?

rjjhvcjd  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(245)

我已经配置了hdfs、datanode和namenode以及hbase。我在hdfs中存储了一个cdrcsv文件。那么,如何将它Map到hbase并准备好处理它呢?

eivnm1vs

eivnm1vs1#

你可以用 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']}

名称指定柱族的名称。分裂只是预裂,所以它有点快。如果这是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中做一些有意义的事情。

相关问题