繁体   English   中英

pyspark 数据管道使用中间结果

[英]pyspark data pipeline use intermediary results

在 pyspark 中,我会对数据帧进行连续操作,并喜欢从中间结果中获取输出。 不过,它总是需要相同的时间,我想知道它是否曾经缓存过任何东西? 换个角度问,使用中间结果的最佳实践是什么? dask 中,您可以执行dd.compute(df.amount.max(), df.amount.min())这将找出需要缓存和计算的内容。 pyspark 中是否有等价物?

在下面的例子中,当它到达print()时它会执行 3x 吗?

df_purchase = spark.read.parquet("s3a:/example/location")[['col1','col2']]
df_orders = df_purchase.groupby(['col1']).agg(pyspark.sql.functions.first("col2")).withColumnRenamed("first(col2, false)", "col2")
df_orders_clean = df_orders.dropna(subset=['col2'])

print(df_purchase.count(), df_orders.count(), df_orders_clean.count())

是的,每次您对 dag 执行操作时。 它执行并优化完整查询。

默认情况下,Spark 不缓存任何内容。

缓存时要小心,缓存可能会以负面方式干扰: Spark:显式缓存会干扰 Catalyst 优化器优化某些查询的能力?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM