NiFi 的 PutHiveStreaming 处理器不会从 hive-site.xml 中获取属性

Posted

技术标签:

【中文标题】NiFi 的 PutHiveStreaming 处理器不会从 hive-site.xml 中获取属性【英文标题】:NiFi's PutHiveStreaming processor does not pick up the properties from the hive-site.xml 【发布时间】:2018-05-15 16:19:38 【问题描述】:

我想使用 NiFi 将数据插入配置单元表。

我见过的最好和最简单的选择是使用“PutHiveStreaming”处理器。我知道使用此处理器需要满足的设置;其中一些是关于可以在表创建期间完成的 hive 表,有些是关于 hive 属性,例如:

    hive.txn.manager = org.apache.hadoop.hive.ql.lockmgr.DbTxnManager hive.compactor.initiator.on = true hive.compactor.worker.threads > 0

我已经在 $HADOOP_HOME/conf 目录中的 hive-site.xml 中设置了这些属性,并在“Hive 配置资源”下提供了该处理器的完整路径。但是,hive-site.xml 中的这些属性不会被此处理器拾取。

Configuration of PutHiveStreaming

很遗憾,我们无权 $HIVE_HOME/conf 或 /etc/hive/conf 直接更改 hive-site.xml。

有人可以解释为什么赋予该处理器的 hive-site.xml 属性没有被拾取,以及在使用 NiFi 时覆盖 hive 属性的解决方法是什么?即:有没有办法为给定的流文件执行多个查询?

【问题讨论】:

【参考方案1】:

我相信这些是需要在 HiveServer2 实例上设置的服务器属性,而不是 NiFi 客户端。

也仅供参考,如果您运行的是 1.2.0 之前的 NiFi 版本,您可能会遇到NIFI-3530。我不认为这是这里的问题,而是您需要在 HiveServer2 实例使用的 hive-site.xml 文件中设置这些属性。

【讨论】:

感谢您的回复@mattyb。我的问题是,如果我们无权更改服务器属性会怎样?有什么方法可以提供我们自己的 hive-site.xml? 不幸的是,HiveServer2 必须配置为 ACID 表才能使 PutHiveStreaming 工作。您仍然可以使用 PutHDFS 将文件放入 Hadoop 并在其上创建一个非 ACID 表。

以上是关于NiFi 的 PutHiveStreaming 处理器不会从 hive-site.xml 中获取属性的主要内容,如果未能解决你的问题,请参考以下文章

大数据NiFi(十七):NiFi术语

NiFi源码整理

NIFI Apache NiFI 使用技巧

大数据NiFi(十三):NiFi监控

大数据NiFi(十三):NiFi监控

大数据NiFi:什么是NiFi