【问题标题】:Hive HBase Integration behavior in the event of a failure发生故障时的 Hive HBase 集成行为
【发布时间】:2015-06-25 17:38:25
【问题描述】:

我最近在 Hive 和 HBase 之间进行了集成。我用 HBase serde 创建了一个配置单元表,当我将记录插入配置单元表时,它被加载到 HBase 表中。我试图了解如果插入 HiveHBase 表在两者之间失败怎么办? (HBase 服务失败/网络问题)。我假设已经加载到 HBase 的记录将在那里,当我重新运行该操作时,我将拥有两个具有不同时间戳的数据副本(假设在 20K 记录中插入了 10k 并且发生了故障)。

  1. 将记录插入 HBase 的最佳方法是什么?
  2. Hive 能否为我提供安全检查以查看数据是否已经存在?
  3. mapreduce 是此类场景的最佳选择吗?我将编写一个 mapreduce 程序,它从 hive 中读取数据,并在插入之前逐条检查 hbase 中的记录。这样可以确保没有重复写入

对此的任何帮助将不胜感激。

【问题讨论】:

    标签: hadoop mapreduce hive hbase


    【解决方案1】:

    是的,当您重新运行加载操作时,您将拥有 2 个版本的数据。但这没关系,因为第二个版本将在下一次压缩时被清理。只要您的插入是幂等的(它们很可能是幂等的),您就不会有问题。

    在 Lithium+Klout,我们使用自定义构建的 HBaseSerDe 来写入 HFile,而不是使用 Put 来插入数据。因此,我们生成 HFiles 并使用批量加载工具在作业完成后加载所有数据。这是集成 Hive 和 HBase 的另一种方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-27
      • 2020-09-19
      • 1970-01-01
      • 2022-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-03
      相关资源
      最近更新 更多