【问题标题】:Can I use HCatInputFormat with MultipleInputs in Hadoop?我可以在 Hadoop 中将 HCatInputFormat 与 MultipleInputs 一起使用吗?
【发布时间】:2014-05-16 12:58:45
【问题描述】:

我正在尝试在两个数据集之间进行连接,一个存储在 Hive 表中,另一个不存储。我看到根据人们的做法,这不是很正常,例如,他们要么将所有内容定义为 Hive 表,要么不定义。

现在有了 MultipleInputs 类,但是 addInputPath 方法需要 Configuration、Path、InputFormat、Mapper

我可以在那里使用输入格式并尝试将表名伪装成路径,但这听起来充其量只是一个疯狂的猜测。

有一个更新版本的 Hive 的补丁(我在 CDH4 上,这意味着 hive 0.10 和 hcat 0.5 遗憾)。我发现这个补丁不能直接翻译成我当前的版本,而且似乎只适用于多个表而不是它们的混合。

https://issues.apache.org/jira/browse/HIVE-4997

这可能吗?您有什么建议吗?

我唯一能想到的就是在不使用表格的情况下读取原始数据,但这意味着我宁愿避免使用 Hive 特定格式的逻辑。

【问题讨论】:

    标签: hadoop mapreduce hive hcatalog


    【解决方案1】:

    HCatMultipleInputs 可用于读取多个 hive 表。

    这是一个补丁(适用于 0.13),我们可以安装它以支持多表。它有 HCatMultipleInputs 来支持多个配置单元表。

    https://issues.apache.org/jira/i#browse/HIVE-4997

    示例用法: HCatMultipleInputs.addInput(job,Table1, db1,properites1, Mapper1.class);

    您可以使用以下链接中的工作代码: https://github.com/abhirj87/training/tree/master/multipleinputs

    【讨论】:

    • 我在问题中发布了相同的链接以及为什么我不希望将其作为解决方案,我看不出这如何解决我的问题。
    【解决方案2】:

    这里的解决方案显然是升级到 0.14.0(或修补旧版本)或不使用 HCatalog 而是直接读取元存储并手动将每个分区子目录添加到 MultipleInputs。

    就我个人而言,由于我无法轻松升级,并且子分区工作量太大,因此我只专注于以其他方式优化作业,并且暂时对运行一系列作业不屑一顾。

    【讨论】:

    • 你在 0.14.0 中是如何做到的?看起来补丁从未提交过。
    • :(当我发布这个时,它应该在那里,也许他们意识到他们后来把它遗漏了,但看起来你是对的,我已经有一段时间没有大数据了,是 Hive也许会死?没有得到维护?
    • 我认为 spark 就是现在的样子。
    【解决方案3】:

    有没有办法在单独的 mapreduce 程序中单独实现补丁。看来补丁还没有提交,但我想在我的工作中使用该解决方案。

    【讨论】:

      猜你喜欢
      • 2014-03-24
      • 2015-04-22
      • 2023-03-25
      • 2020-08-04
      • 2018-10-23
      • 2011-02-22
      • 2021-03-16
      • 2016-11-20
      • 2019-01-25
      相关资源
      最近更新 更多