对于任何软件架构师来说,这可能是一个基本问题,但我对这个概念感到困惑。
假设我有一个存储在 hdfs 上的大型 Spark DataFrame。我现在做这样的过滤操作:
df_new = my_big_hdfs_df.where("my_column='testvalue'")
print(type(df_new))
class 'pyspark.sql.dataframe.DataFrame'>
df_new 到底存储在哪里?如果这是普通的 python,我会猜测在内存中的某个地方。但 PySpark 也是如此吗?或者它只是某种引用?它是否保存在 hdfs 中某处的磁盘上?
最佳答案
df_new
是在 where
函数中应用条件后从 my_big_hdfs_df
进行的转换。
或者换句话说,df_new
是一个逻辑计划,设置为在调用action
时立即对数据执行.
直到 n 操作,例如 show()
、count()
foreach()
,数据才会被触及> 等被调用。
一旦一个 Action 被调用,数据就会被转换并且所有的转换都存储在内存中。有时,它们会在调用 persist()
时溢出到磁盘。并且在调用保存操作时保存到磁盘。
关于python - 过滤器生成的 PySpark DataFrame - 它存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49368475/