使用来自 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 映射任务收集
常规 (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 映射任务收集