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