Использование kafka-handler 4.0 в HDP 3.1.4 - PullRequest
1 голос
/ 25 апреля 2020

Мы используем HDP 3.1.4 и хотим использовать kafka-handler для интеграции Kafka и Hive.

Многие из наших тем в Kafka сериализуются с помощью Avro с использованием реестра Confluent Schema, и поставляется стандартный обработчик kafka-handler. с HDP 3.1.4 не содержит новых функций для сообщений Avro, сериализованных с Confluent, которые содержат Magi c Byte . в новых версиях kafka-handler у нас есть некоторые свойства, такие как 'avro.serde.type'='skip' и 'avro.serde.skip.bytes'='5' для обработки Magi c Byte .

Поэтому мы хотели заменить kafka-handler на наши Собственный скомпилированный кафка-обработчик 4.0. мы просто начали с замены kafka-handler 4.0 на HDP kafka-handler по умолчанию, но мы столкнулись с этой ошибкой:

MetaException(message:java.lang.NoSuchFieldError AVRO_SERDE_TYPE)

AVRO_SERDE_TYPE добавлено в hive-serde 4.0, и мы исследуем это потому, что kafka-handler имеет зависимость kafka-exec и kafka-exec содержит нашу старую hive-serde, поставляемую с HDP.

Мы также должны заменить hive-serde. Итак, мы продолжаем с затенением hive-serde в kafka-обработчике:

<relocation>
  <pattern>org.apache.hadoop.hive.serde2</pattern>
  <shadedPattern>org.shaded.apache.hadoop.hive.serde2_shaded</shadedPattern>
</relocation>

, но мы сталкиваемся с этим исключением:

SQL Error [40000] [42000]: Error while compiling
statement: FAILED: ClassCastException class org.apache.hadoop.hive.kafka.KafkaSerDe

так, как мы должны решить эту проблему?

...