发生故障时的hive hbase集成行为

8yoxcaq7  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(324)

我最近在hive和hbase之间做了一个集成。我用hbase serde创建了一个配置单元表,当我将记录插入配置单元表时,它会被加载到hbase表中。我试图理解,如果插入到hivehbase表的操作在这两者之间失败怎么办(hbase服务失败/网络问题)。我假设已经加载到hbase中的记录将在那里,并且当我重新运行操作时,我将有两个具有不同时间戳的数据副本(假设插入了20k个记录中的10k个,并且发生了故障)。
将记录插入hbase的最佳方法是什么?
hive能否提供安全检查以查看数据是否已经存在?
mapreduce是这种场景的最佳选择吗?我将编写一个mapreduce程序,从配置单元读取数据,并在插入之前逐个检查hbase中的记录。这样可以确保没有重复写入
在此方面的任何帮助都将不胜感激。

r7xajy2e

r7xajy2e1#

是的,当您重新运行加载操作时,您将有两个版本的数据。但这没关系,因为第二个版本将得到清理,在下次压缩。只要插入是幂等的(很可能是),就不会有问题。
在lithium+klout,我们使用定制的hbasserde来编写hfiles,而不是使用put来插入数据。因此,我们生成hfiles,并在作业完成后使用批量加载工具加载所有数据。这是集成hive和hbase的另一种方法。

相关问题