HBase复合行键格式

时间:2017-10-30 14:48:41

标签: csv hbase bulkinsert import-csv

我正在尝试将几个大的.csv文件导入HBase(总计> 1TB)。数据看起来像是来自关系数据库的转储,但没有UID。另外,我不想导入所有列。我决定首先运行一个自定义的MapReduce作业,使它们进入所需的格式(选择列+生成UID),这样我就可以使用标准的hbase importtsv批量导入来导入它们。

我的问题:我可以创建自己的复合行密钥,比如storeID:year:UID使用MapReduce,然后将其提供给tsv import吗?所以说,我的数据看起来像这样:

do {
    // update card values
    card1 = card.nextInt(14);
    card2 = card.nextInt(14);
    war1 = card.nextInt(14);
    war2 = card.nextInt(14);

    System.out.println("Turn " + t++ + " -- Player 1's card: " + card1 + " Player 2's card: " + card2);

根据我的理解,HBase将所有内容存储为字节,时间戳除外。它是否会理解这是一个复合键?!

任何提示都表示赞赏!

1 个答案:

答案 0 :(得分:0)

我在Cloudera问了同样的问题,答案可以找到here.

基本上,答案是肯定的,不需要分隔符。我使用MapReduce作业将数据转换为以下格式:

A2012:1,0.99,1,001 A2012:2,0.99,2,012

使用importtsv和completebulkload,然后将数据正确加载到正确的HBase区域。我使用storeID(A,B,C,...)预分割表。