Nifi处理器连接Hive | HIVE_CLI_SERVICE_PROTOCOL_V7异常

时间:2017-10-30 16:26:11

标签: hive apache-nifi

我正在开发Nifi处理器以连接配置单元并使用控制器服务执行查询。我能够在Nifi中部署它并尝试运行它,但它失败并出现以下异常

RegisterSchema[id=6b1152ca-015f-1000-d7b9-e44e251aba70] failed to process due to java.lang.NoSuchFieldError: HIVE_CLI_SERVICE_PROTOCOL_V7; rolling back session: {}
java.lang.NoSuchFieldError: HIVE_CLI_SERVICE_PROTOCOL_V7
    at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:175)
    at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105)
    at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
    at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
    at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
    at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)
    at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
    at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)

以下是我的版本依赖

Hive版本:1.1.0 Hadoop:2.7.3

<!-- https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc -->
        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-jdbc</artifactId>
            <version>1.1.0-cdh5.10.0</version>

        </dependency>
            <!-- https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc -->
            <dependency>
                <groupId>org.apache.hive</groupId>
                <artifactId>hive-service</artifactId>
                <version>1.1.0-cdh5.10.0</version>
            </dependency>

这里有指针吗?

1 个答案:

答案 0 :(得分:2)

This SO question似乎相关,并暗示Apache Hive 1.1.0对于您在Hadoop 2.6.0上运行的Hive来说“太旧了”。如果您计划仅部署特定于供应商的Hadoop版本(例如HDP或CDH,而不是Apache Hadoop),那么您可能希望将其存储库添加到POM(有关示例,请参阅顶级NiFi POM)和将版本设置为与其发布的Hadoop对应的特定于供应商的版本。

例如,Apache NiFi中现有的Hive NAR与较新版本的HDP不兼容,因为HDP Hive比相应的Apache Hive基线更新。因此,可以设置特定于供应商的配置文件(在此示例中为-Phortonworks)并覆盖hive.versionhive.hadoop.version等属性,并设置为特定于供应商的值。