【发布时间】:2019-07-02 18:01:48
【问题描述】:
如果您加载一些数据,计算一个 DataFrame,将其写入磁盘,然后稍后使用 DataFrame...假设它还没有缓存在 RAM 中(假设它还不够),Spark 会足够聪明吗从磁盘加载数据而不是从原始数据重新计算 DataFrame?
例如:
df1 = spark.read.parquet('data/df1.parquet')
df2 = spark.read.parquet('data/df2.parquet')
joined = df1.join(df2, df1.id == df2.id)
joined.write.parquet('data/joined.parquet')
computed = joined.select('id').withColummn('double_total', 2 * joined.total)
computed.write.parquet('data/computed.parquet')
在适当的情况下,当我们存储computed时,它会从data/joined.parquet加载joined DataFrame,还是总是通过加载/加入df1/df2重新计算,如果不是当前缓存joined?
【问题讨论】:
-
如此有效地询问 write.parquet 是否算作连接转换的操作。我也很想知道答案
标签: python apache-spark caching pyspark apache-spark-sql