【问题标题】:What is the best way to structure a spark structured streaming pipeline?构建 Spark 结构化流管道的最佳方法是什么?
【发布时间】:2023-03-21 14:53:02
【问题描述】:

我正在将数据从我的 postgres 数据库移动到 kafka,并在中间使用 spark 进行一些转换。 我有 50 张桌子,对于每张桌子,我都有与其他桌子完全不同的转换。 所以,我想知道如何构建我的 spark 结构化流代码的最佳方式。我认为有三种选择:

  1. 将这50张表的所有读写逻辑放在一个对象中,只调用这个对象。

  2. 为每个表创建 50 个不同的对象,并在一个新对象中创建一个主方法,调用 50 个对象中的每一个,然后调用 spark.streams.awaitAnyTermination()

  3. 通过 spark submit 单独提交这 50 个对象中的每一个

如果有其他更好的选择,请与我联系。

谢谢

【问题讨论】:

    标签: apache-spark spark-streaming spark-structured-streaming spark-streaming-kafka


    【解决方案1】:

    按照您的方法 1 创建单个对象看起来不太好。这将难以理解和维护。

    在第 2 步和第 3 步之间,我还是更喜欢第 3 步。拥有单独的作业维护起来会有点麻烦(管理部署和构建公共代码),但如果做得好,它将给我们更多的灵活性。如果需要,我们可以轻松地取消部署单个表。此外,任何后续部署或更改都意味着仅部署相关的表流。其他现有的表管道将继续工作。

    【讨论】:

    • 很好,但是有一个问题,可以发送以触发大量并行运行的多个 Spark 结构化流作业吗?我如何发送这 50 个工作?我将所有 50 个罐子放在一个 spark 提交 --jars 选项中?我放了这个选项,但我真的不知道这是否可行
    • 可以设置多个 spark 结构化流作业。对我来说,我会有一个部署脚本,其中包含要部署的作业的名称或 all 标志,这意味着它将部署所有 50 个作业。作业的部署将包括 jar 的构建、配置管理以及将其提交到 spark 集群。
    猜你喜欢
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多