【问题标题】:Spark streaming from eventhub: how to stop stream once there is no more data?来自 eventthub 的 Spark 流:一旦没有更多数据,如何停止流?
【发布时间】:2021-09-20 00:13:41
【问题描述】:

我想做的是从我的事件中心读取一些数据,并将其保存在 azure 数据湖中。但是,问题是,流不会停止,并且不会触发 writeStream 步骤。我找不到任何设置来识别输入速率何时达到 0 以停止流。

【问题讨论】:

    标签: python apache-spark pyspark azure-databricks


    【解决方案1】:

    Apache Spark 中有一个特殊的触发器,通常称为Trigger.Once - 它会处理所有可用数据,然后关闭流。只需在.writeStream 之后添加.trigger(once=True) 即可启用它。

    唯一的问题是,在 Spark 3.x (DBR >= 7.x) 中,它完全忽略了诸如 maxFilesPerTrigger 等限制拉取处理的数据量的选项 - 在这种情况下它会尝试一次性处理所有数据,有时可能会导致性能问题。要解决您可以执行以下 hack 的解决方法 - 将 raw_data.writeStream.....start() 的结果分配给一个变量,例如 query = raw_data.writeStream.... - 并定期检查 query.get('numInputRows') 的值,如果它在一段时间内等于 0,则发出 @987654328 @

    【讨论】:

      猜你喜欢
      • 2017-10-03
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 2018-03-20
      • 2018-01-16
      • 2021-12-28
      • 1970-01-01
      • 2022-12-22
      相关资源
      最近更新 更多