我最近在Hive和HBase之间进行了整合。我用HBase serde创建了一个hive表,当我将记录插入hive表时,它被加载到HBase表中。我试图了解如果插入HiveHBase表之间失败怎么办? (HBase服务失败/网络问题)。我假设已经加载到HBase中的记录将在那里,当我重新运行操作时,我将有两个具有不同时间戳的数据副本(假设插入了20K记录10k并且发生了故障)。
对此的任何帮助将不胜感激。
答案 0 :(得分:0)
是的,重新运行加载操作时,您将拥有2个版本的数据。但是这很好,因为第二个版本将在下一次压缩时得到清理。只要你的插入是幂等的(他们很可能是),你就不会有问题。
在Lithium + Klout,我们使用自定义构建的HBaseSerDe编写HFile,而不是使用Put来插入数据。因此,我们生成HFile并使用批量加载工具在作业完成后加载所有数据。这是你可以整合Hive和HBase的另一种方式。