我可以在hadoop中使用hcatinputformat和多个输入吗?

ih99xse1  于 2021-06-02  发布在  Hadoop
关注(0)|答案(3)|浏览(271)

我正在尝试在两个数据集之间进行连接,一个存储在配置单元表中,另一个没有。我看,根据人们所做的,这是不太正常的,因为在,他们要么定义一切作为Hive表或他们不。
现在有了multipleinputs类,但是addinputpath方法采用configuration、path、inputformat和mapper
我可以在那里使用输入格式,并尝试将表名伪装成路径,但这听起来充其量只是一个猜测。
新版本的hive有一个补丁(我在cdh4上,这意味着hive0.10和hcat0.5)。我发现这个补丁并不能直接翻译成我当前的版本,而且似乎只适用于多个表,而不是它们的混合。
https://issues.apache.org/jira/browse/hive-4997
这可能吗?你有什么建议吗?
我唯一能想到的是不使用表读取原始数据,但这意味着我宁愿避免特定于配置单元格式的逻辑。

qcbq4gxm

qcbq4gxm1#

这里的解决方案显然是要么升级到0.14.0(或者修补旧版本),要么不使用hcatalog,而是直接读取metastore并手动将每个分区子目录添加到多个输入中。
就我个人而言,由于我不能轻松升级和子分区是太多的工作,我只专注于优化其他方式的工作,并与运行序列的工作轻视现在。

rekjcdws

rekjcdws2#

hcatmultipleinputs可用于读取多个配置单元表。
下面是一个补丁(适用于0.13),我们可以看看如何安装多表支持。它有hcatmultipleinputs来支持多个配置单元表。
https://issues.apache.org/jira/i#browse/hive-4997

Example useage:
HCatMultipleInputs.addInput(job,Table1, db1, properites1, Mapper1.class);

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

vngu2lb8

vngu2lb83#

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

相关问题