我必须实现hadoop,所以它可以处理呼叫详细记录的数据?

问题描述 投票:-1回答:1

我已经配置了HDFS,Datanode和namenode以及hbase。我在HDFS中存储了一个CDR csv文件。那么如何将其与Hbase映射并准备好进行处理呢?

hadoop hadoop-streaming hadoop2 hadoop-plugins hadoop-partitioning
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指定列族的名称。 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中有意义的事情。

© www.soinside.com 2019 - 2024. All rights reserved.