-1

我已经配置了 HDFS、Datanode 和 namenode 以及 hbase。我在 HDFS 中存储了一个 CDR csv 文件。那么我怎样才能将它与 Hbase 映射并准备好处理它呢?

4

1 回答 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 回答