有一些大型数据文件(镶木地板和文本),我想从中读取使用条件语句的行的子集 . 显然,将整个文件加载到内存中会很浪费 . 我可以将 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是否仍然只是部分加载?
谢谢