我需要根据另一个 Kafka 主题中的一些事件将数据从 Hive 导出到 Kafka 主题。我知道我可以使用 HQL 从 Spark 作业中的 hive 读取数据并从 Spark 将其写入 Kafka,但是有更好的方法吗?
这可以使用非结构化流式处理来实现。下面提到的步骤:
-
创建一个 Spark 流式处理作业,该作业连接到所需的主题并提取所需的数据导出信息。
-
从 stream 中,在驱动程序变量中收集并获取数据导出要求。
-
使用指定条件创建数据框
-
使用 kafkaUtils 将数据框写入所需的主题。
-
根据数据量和 kafka 写入吞吐量提供轮询间隔。
通常,你以相反的方式执行此操作(Kafka 到 HDFS/Hive)。
但欢迎您尝试使用 Kafka Connect JDBC 插件按计划从 Hive 表中读取,这会将行转换为结构化键值 Kafka 消息。
否则,我会重新评估其他工具,因为 Hive 很慢。Couchbase或Cassandra为摄取Kafka提供了更好的CDC功能。或者重新编写插入 Hive 的上游应用程序,而不是立即写入 Kafka,例如,您可以从中加入其他主题。