【问题标题】:PySpark Wait to finish in notebook (Databricks)PySpark 等待在笔记本中完成(Databricks)
【发布时间】:2022-01-22 18:50:30
【问题描述】:

目前,我在一个单元格中使用 spark 数据框(自动加载器)时遇到了一些问题,可能需要一些时间来写入数据。然后,在下面的单元格中,代码引用了第一个表所做的工作。但是,如果由于 spark 的分布式特性而运行整个笔记本(特别是作为作业),则第二个单元在第一个单元完全完成之前运行。如何让第二个单元等待 writeStream 的完成而不将它们放在单独的笔记本中。

例子:

单元格1

autoload = pysparkDF.writeStream.format('delta')....table('TABLE1')

单元格2

df = spark.sql('select count(*) from TABLE1')

【问题讨论】:

    标签: apache-spark pyspark databricks spark-structured-streaming


    【解决方案1】:

    您需要使用awaitTermination 函数等待流处理完成(请参阅docs)。像这样:

    • 单元格 1
    autoload = pysparkDF.writeStream.format('delta')....table('TABLE1')
    autoload.awaitTermination()
    
    • 单元格 2
    df = spark.sql('select count(*) from TABLE1')
    

    虽然读起来更容易也更难犯这样的错误:

    df = spark.read.table('TABLE1').count()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-05
      • 1970-01-01
      相关资源
      最近更新 更多