【问题标题】:How to export data from hive to kafka如何将数据从hive导出到kafka
【发布时间】:2019-01-15 15:41:30
【问题描述】:

我需要根据另一个 Kafka 主题中的一些事件将数据从 Hive 导出到 Kafka 主题。我知道我可以使用 HQL 从 Spark 作业中的 hive 读取数据并将其从 Spark 写入 Kafka,但是有更好的方法吗?

【问题讨论】:

    标签: apache-spark hive apache-kafka


    【解决方案1】:

    这可以使用非结构化流式传输来实现。下面提到的步骤:

    1. 创建一个连接到所需主题并获取所需数据导出信息的 Spark Streaming 作业。

    2. 从流中,收集并在驱动程序变量中获取您的数据导出要求。

    3. 使用指定条件创建数据框

    4. 使用 kafkaUtils 将数据框写入所需主题。

    5. 根据您的数据量和 kafka 写入吞吐量提供轮询间隔。

    【讨论】:

    • 我们可能正在流式传输接近 1000 万条记录。您认为这种方法是最优化的吗?我在问是否有像 sqoop 这样的 hadoop 组件,它可以进行配置单元查询并直接写入 Kafka,而不会将记录带入 Spark 进程的内存中。
    • 您可以使用 Flink,如果您使用 Cloud,AWS 中的 Firehouse 和 Azure 的流分析可以类似地工作。但对于 Databricks 或 Hadoop 应用程序中的自定义应用程序,这是唯一的方法
    • @Srijit 即使是 Sqoop 也需要将记录带入内存
    • @Srijit 不,YARN 上的 Spark 将占用与 YARN 上的 Sqoop (Mapreduce) 相同的物理资源
    • Sqoop 用于从 RDBMS 进行数据迁移,它使用分布式文件系统和 Java Heap 内存。 Spark 是一个数据处理引擎。如果我了解您的要求,您想要实现的目标,那么目前还没有现成的工具可用。您可以查看一个名为 Striim 的付费工具
    【解决方案2】:

    通常情况下,您会以相反的方式执行此操作(Kafka 到 HDFS/Hive)。

    但欢迎您尝试使用 Kafka Connect JDBC 插件按计划从 Hive 表中读取数据,这会将行转换为结构化的键值对 Kafka 消息。

    否则,我会重新评估其他工具,因为 Hive 很慢。 Couchbase 或 Cassandra 为摄入 Kafka 提供了更好的 CDC 功能。或者重新编写插入 Hive 的上游应用程序,而不是立即写入 Kafka,例如,您可以从中加入其他主题。

    【讨论】:

      猜你喜欢
      • 2014-05-30
      • 2020-09-01
      • 2016-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多