python - 过滤器生成的 PySpark DataFrame - 它存储在哪里?

标签 python hadoop apache-spark pyspark hdfs

对于任何软件架构师来说,这可能是一个基本问题,但我对这个概念感到困惑。

假设我有一个存储在 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/

相关文章:

python - 如何使用 python curl 文件

java - 将输入数据动态添加到 Hadoop Map-Reduce 作业?

hadoop - Nutch 2.3.1在 yarn 2.7.1上的错误

postgresql - 在 RedShift 表中存储数组的正确方法是什么?

python - 将 Spark 数据帧转换为以一列为键的多个列表

Python tabstop-aware len() 和填充函数

python - 如何检查一个变量与另一个变量共有多少个字符

scala - 通过 Spark 作业加载到 BigQuery 失败,为 parquet 找到多个来源的异常

python - 如何让 offsetof() 成为私有(private)类成员?

hadoop - HDFS Client 在写入时如何知道 block 大小?