Процессоры Apache NiFi Hive с Hive 1.1 (CDH 5.7.1)

Я работаю с 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 и сервером.

Любые предложения по решению этой проблемы?

Я думал о сборке NiFi с hive-jdbc версией зависимостей 1.1.0 вместо 1.2.1 по умолчанию, но я надеюсь, что есть лучшее решение.


person Dennis    schedule 29.08.2016    source источник


Ответы (2)


Поскольку NiFi — это проект Apache, он строится с использованием JAR-файлов Apache (таких как Hive и Hadoop). Однако существуют профили конкретных поставщиков и свойства сборки, которые вы можете использовать для сборки NiFi для определенного дистрибутива Hadoop.

Например, вы можете попробовать следующее, чтобы создать дистрибутив NiFi для CDH 5.7.1:

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 используют библиотеки Hadoop, предоставляемые NiFi Hadoop Libraries NAR, а другие NAR (например, процессоры Hadoop/HDFS) используют те же библиотеки NAR, поэтому лучший подход — собрать все это целиком. В противном случае вы можете попробовать заменить только NAR, связанные с Hadoop/Hive/HBase, и посмотреть, сработает ли это.

person mattyb    schedule 29.08.2016
comment
Спасибо за помощь. Я столкнулся с ошибкой, когда пытался его построить. Compilation failure: error: package org.apache.hadoop.hive.ql.io.filters does not exist. Наверное слишком старая версия. Любые идеи? - person Dennis; 31.08.2016
comment
Пакет не существует, вы можете попытаться заставить его работать, удалив его и сделать тело функции, использующей отсутствующий пакет, пустым ( NO BODY ). Я сделал это и скомпилировал, но версия протокола все равно не соответствует. - person ozw1z5rd; 04.10.2016

Поскольку 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

person Chaffelson    schedule 11.04.2017