[英]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.