java - Hbase和PIG不会存储所有行

标签 java hadoop hbase apache-pig

我正在使用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/

相关文章:

hadoop - 在映射期间替换为 HBase 查找以进行 mapreduce

scala - 使用空参数从Scala调用Java API

java - 更改 reducer 排序顺序

java - 是否可以在没有输入文件的情况下在 Hadoop 集群上运行 map/reduce 作业?

asynchronous - HBase 因 org.apache.hadoop.hbase.NotServingRegionException 区域不在线而失败

HBase 扫描 - RowKey 过滤器

java - OnTouchEvent 与主类位于不同的类中

java - groovy 脚本 eval(string) 方法的性能问题

java - Mockito - 如何监视 doAnswer 中的调用参数

spring - Spring-xd Stream正在将空文件写入我的HDFS