我正在使用PIG和HBASE将一些信息存储到DB中。我有一个从DUMP命令获取的数据集,它将在下一阶段存储在HBASE中。
DUMP somedata;
生成具有重复行的数据块,如下所示。
(rowkey, cf:1, cf:2 ....)
(12345::456::idea, 4567, deleted, 2.3, next, super)
(12345::456::idea, 4567, deleted, 2.3, next, super)
(12345::456::idea, 4567, deleted, 2.3, next, super)
(12345::456::idea, 4567, deleted, 2.3, next, super)
(12345::456::idea, 4568, deleted, 2.3, next, super)
(12345::456::idea, 4568, deleted, 2.3, next, super)
(12345::456::idea, 4568, deleted, 2.3, next, super)
(12345::456::idea, 4569, deleted, 2.3, next, super)
(12345::456::idea, 4569, deleted, 2.3, next, super)
(12345::456::idea, 4569, deleted, 2.3, next, super)
当使用STORE命令通过HBaseStorage存储某些数据时,所有重复的行都将被消除并存储不同的行。我不确定这是否是预期的行为。
上面只有它存储
(12345::456::idea, 4567, deleted, 2.3, next, super)
(12345::456::idea, 4568, deleted, 2.3, next, super)
(12345::456::idea, 4569, deleted, 2.3, next, super)
有时它确实会丢失一些要存储的行。
有人可以澄清吗?
最佳答案
这就是HBase的设计方式!它只是按照family:列名附加数据。您为HBASE设置了一个KEY,那么如果4条记录带有相同的key,最终它将仅存储一条记录。
例如:
ID,NAME,AGE
1,SAM,20
2,RAJ,25
1,ANN, 27
如果ID设置为KEY,则HBASE仅具有
1 ANN 27,
2,RAJ,25
接下来,如果您插入更多数据:
id,hometown
1,Bangalore
5 Jaipur
HABSE将具有:
1 ANN 27,Bangalore
2,RAJ,25
5 Jaipur
Iff you want to save all records , you will have to use concept of composite keys.
关于java - Hbase和PIG不会存储所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42218432/