在 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 湖的 Sparkresult
实际上并不是在声明时计算,而是在使用时计算。
然而,在这个例子中,它被多次使用,因此最昂贵的转换被多次计算。
是否可以在代码中的某个点强制执行,例如
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??