使用来自 Hive 的 Protobuf Kafka 消息

Working with Protobuf Kafka messages from Hive

常规 (JSON) Kafka 主题可以作为外部表轻松连接到 Hive,如下所示:

CREATE EXTERNAL TABLE
  dummy_table (
    `field1` BIGINT,
    `field2` STRING,
    `field3` STRING
    )
STORED BY
  'org.apache.hadoop.hive.kafka.KafkaStorageHandler'
TBLPROPERTIES (
  "kafka.topic" = "dummy_topic",
  "kafka.bootstrap.servers" = "dummybroker:9092")

但是 Protobuf 编码的主题呢?它们也可以连接吗?我无法在网上找到这方面的任何示例。

如果是 - 应该如何(在何处)指定代码中的 .Proto 文件?

您必须将 kafka.serde.class 添加到属性中。

假设您正在使用带有 Proto 消息的 Confluent Schema Registry,only Avro is supported

否则,有一个名为 Elephant-Bird 的旧项目用于向 Hive 添加 Protobuf 支持。我不确定它是否仍然有效,或者是否可以用于 Kafka Serde 配置。但是假设可以,您的 Proto 文件需要放在 HDFS 中,例如,并由每个 Hive 映射任务收集