【问题标题】:Apache NiFi Hive Processors with Hive 1.1 (CDH 5.7.1)带有 Hive 1.1 (CDH 5.7.1) 的 Apache NiFi Hive 处理器
【发布时间】:2016-08-29 07:39:49
【问题描述】:

我使用 Cloudera Manager CDH 5.7.1,它仅支持 Hive 1.1.0。 NiFi 1.0.0-BETA 使用 Hive 1.2.1。

当我尝试使用 SelectHiveQL 处理器时,我收到以下错误:Required field 'client_protocol' is unset!,这意味着 Hive 客户端和服务器之间存在版本不匹配

有解决这个问题的建议吗?

我想过用hive-jdbc依赖版本1.1.0而不是默认的1.2.1来构建NiFi,但我希望有更好的解决方案。

【问题讨论】:

    标签: hive cloudera-cdh cloudera-manager apache-nifi


    【解决方案1】:

    由于 NiFi 是一个 Apache 项目,它使用 Apache JAR(例如 Hive 和 Hadoop)构建。但是,您可以使用特定于供应商的配置文件和构建属性来为特定的 Hadoop 发行版构建 NiFi。

    例如,您可以尝试以下方法为 CDH 5.7.1 构建 NiFi 发行版:

    mvn clean install -DskipTests -Pcloudera -Dhadoop.version=2.6.0-cdh5.7.1 -Dhive.version=1.1.0-cdh5.7.1 -Dhbase.version=1.2.0-cdh5.7.1
    

    Hive 处理器使用 NiFi Hadoop Libraries NAR 提供的 Hadoop 库,而其他 NAR(如 Hadoop/HDFS 处理器)使用相同的库 NAR,因此最好的方法是构建整个东西。否则,您可以尝试仅替换 Hadoop/Hive/HBase 相关的 NAR,看看是否可行。

    【讨论】:

    • 感谢您的帮助。我在尝试构建它时遇到了错误。 Compilation failure: error: package org.apache.hadoop.hive.ql.io.filters does not exist。可能版本太旧了。有什么想法吗?
    • 包不存在,你可以尝试让它工作删除它并使使用丢失包的函数体为空( NO BODY )。我这样做并编译了,但协议版本仍然不匹配。
    【解决方案2】:

    由于 NiFi 需要更新版本的 Hive,因此有必要删除不受支持的新功能(例如 HiveStreaming 和 ORC 支持),支持旧版本的 Thrift,并针对 Cloudera 特定的库进行构建。

    我创建了当前 NiFi-1.1.x 版本的一个分支,并进行了必要的更改以使 PutHiveQL 和 SelectHiveQL 处理器工作,您可以按如下方式构建:

    git clone https://github.com/Chaffelson/nifi.git
    git checkout nifi-1.1.x-cdhHiveBundle
    mvn -T C2.0 clean install -Pcloudera -Dhive.version=1.1.0-cdh5.10.0 -Dhive.hadoop.version=2.6.0-cdh5.10.0 -Dhadoop.version=2.6.0-cdh5.10.0 -DskipTests
    

    我已在 Hortonworks 社区论坛上发布了更完整的报道:https://community.hortonworks.com/articles/93771/connecting-nifi-to-cdh-hive.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多