Процессор ExecuteSQL возвращает поврежденные данные - PullRequest
0 голосов
/ 11 июня 2018

У меня есть поток в NiFI, в котором я использую процессор ExecuteSQL, чтобы получить целое слияние подразделов с именем dt из таблицы hive.Например: моя таблица разделена на sikid и dt.Так что у меня под sikid=1, dt=1000 и под sikid=2, dt=1000.То, что я сделал, это select * from my_table where dt=1000.

К сожалению, я получаю взамен от процессора ExecuteSQL поврежденные данные, включая строки с dt=NULL, в то время как в исходной таблице нет даже одной строки с dt = NULL.

DBCPConnectionPool настроен для использования HiveJDBC4 баночка.Позже я попытался использовать совместимый jar в соответствии с выпуском CDH, но тоже не исправил.

Процессор ExecuteSQL настроен так:

Normalize Table/Column Names: true

Use Avro Logical Types: false

Версия улья: 1.1.0

CDH: 5.7.1

Есть идеи, что происходит?Спасибо!

РЕДАКТИРОВАТЬ: Очевидно, мои возвращенные данные содержат дополнительные строки ... несколько тысяч из них ... что довольно странно.

Ответы [ 2 ]

0 голосов
/ 21 июня 2018

В конце концов это было решено с помощью свойства улья hive.query.result.fileformat=SequenceFile

0 голосов
/ 12 июня 2018

HiveJDBC4 (я предполагаю, что драйвер Simba Hive) анализирует имя таблицы по именам столбцов?Это было единственное место, где была несовместимость с драйвером JDBC Apache Hive, он не поддерживал getTableName(), поэтому не работает с ExecuteSQL, и даже если это было так, когда имена столбцов извлекались из ResultSetMetaData, они имелиимена таблиц с добавлением точки ..Это часть пользовательского кода в HiveJdbcCommon (используется SelectHiveQL) против JdbcCommon (используется ExecuteSQL).

Если вы пытаетесь использовать ExecuteSQL из-за проблем с методом аутентификации, как этооблегчен с водителем Симба?Вы указываете информацию об аутентификации в URL JDBC, а не в файле hive-site.xml, например?Если вы зададите свой вопрос об авторизации (используя SelectHiveQL) как отдельный вопрос SO и поставите ссылку на него здесь, я сделаю все возможное, чтобы помочь в этом вопросе и помочь вам преодолеть это.

...