有一些大型数据文件(镶木地板和文本),我想从中读取使用条件语句的行的子集 . 显然,将整个文件加载到内存中会很浪费 . 我可以将 where() 子句应用于加载结果,但是在应用它时,整个表是否已经在内存中了?

我对这两种情况特别感兴趣:
1)将镶木地板文件加载到Dataframe中
2)将文本文件加载到RDD中,然后将其转换为Dataframe

1    ss.read.parquet(filename)
2    ss.createDataFrame(sc.textFile(filename),schema)

另外,如果事实证明Spark非常聪明,可以在加载过程中应用 where() 关闭而不是在事件之后,那么它在什么时候被调用呢?例如,如果我写:

df = ss.read.parquet(filename)
df_filtered = df.select(...).withColumn(...).where(...)

Dataframe是否仍然只是部分加载?

谢谢