【发布时间】:2019-11-01 13:22:06
【问题描述】:
在 Databricks 上使用 pyspark/Delta 湖,我有以下场景:
sdf = spark.read.format("delta").table("...")
result = sdf.filter(...).groupBy(...).agg(...)
analysis_1 = result.groupBy(...).count() # transformation performed here
analysis_2 = result.groupBy(...).count() # transformation performed here
据我了解,使用 Delta 湖的 Spark,由于链式执行,result 实际上不是在声明时计算,而是在使用时计算。
然而,在这个例子中,它被多次使用,因此最昂贵的转换被多次计算。
是否可以在代码中的某个点强制执行,例如
sdf = spark.read.format("delta").table("...")
result = sdf.filter(...).groupBy(...).agg(...)
result.force() # transformation performed here??
analysis_1 = result.groupBy(...).count() # quick smaller transformation??
analysis_2 = result.groupBy(...).count() # quick smaller transformation??
【问题讨论】:
标签: apache-spark-sql databricks delta-lake