【问题标题】:Consume kafka data to HDFS Spark Batch使用 kafka 数据到 HDFS Spark Ba​​tch
【发布时间】:2023-04-07 07:05:01
【问题描述】:

我有很多 Kafka 主题,每个主题都有 1 个分区,在(REST API - Kafka - SQL 服务器)中产生和消费。 但现在我想定期转储这些数据以保存在 HDFS 中,以便以后执行分析。

由于这基本上只是我需要的转储,我不确定我是否需要火花流。 但是,所有文档和示例都为此使用 Spark 流。

有没有办法在不运行流式作业的情况下从 Kafka 主题填充 DF/RDD?或者,一旦处理了最小到最大偏移的设置窗口,这里的范例是否会终止“流式传输”作业? 从而将流式作业视为批处理作业。

【问题讨论】:

    标签: apache-spark apache-kafka hdfs


    【解决方案1】:

    正如您已正确识别的那样,您不必为此使用 Spark Streaming。一种方法是将 HDFS 连接器用于 Kafka Connect。 Kafka Connect 是 Apache Kafka 的一部分。它接受一个 Kafka 主题并将消息从它写入 HDFS。你可以查看它的文档here

    【讨论】:

    • 据我所知,它不是 Kafka 的一部分,只是 confluent 的 kafka 发行版的一部分,还是我遗漏了什么?
    • Kafka Connect 是 Apache Kafka 的一部分。
    • HDFS 连接器是开源的,可用standalone 或作为Confluent Platform 的一部分
    【解决方案2】:

    Kafka 是一个流处理平台,因此与 spark 流一起使用很容易。

    您可以使用 Spark 流式传输,然后以指定的时间间隔检查数据点,这可以满足您的要求。

    有关检查点的更多信息:-https://spark.apache.org/docs/2.0.2/streaming-programming-guide.html#checkpointing

    【讨论】:

    • 是的,但我不希望应用程序在不需要时 24/7 要求资源。因为我需要扩展它,所以运行 300 多个半空闲 spark 作业有点矫枉过正。此外,在多租户集群中,这肯定会失去朋友;)
    • 否则,一旦检查点完成,您将不得不终止工作。
    【解决方案3】:

    您可以使用KafkaUtilscreateRDD 方法进行火花批处理作业。

    这里已经回答了类似的问题- Read Kafka topic in a Spark batch job

    【讨论】:

    • 这似乎是正确的,但是似乎我现在负责自己跟踪偏移量,但是“KafkaCluster.getLatestLeaderOffsets”似乎在 spark 1.6 中不起作用
    猜你喜欢
    • 2019-01-27
    • 1970-01-01
    • 2021-10-29
    • 2017-11-17
    • 1970-01-01
    • 2018-10-08
    • 2019-04-23
    • 2017-04-07
    • 2021-08-20
    相关资源
    最近更新 更多