3.x是否只读取来自文件格式(如parquet)的过滤数据,而不是将整个文件加载到内存中

wrrgggsh  于 2021-07-12  发布在  Spark
关注(0)|答案(1)|浏览(265)

在从s3加载/读取parquet文件的情况下,spark3.x是在内存中加载完整的文件,然后执行过滤,还是像hadoop那样加载过滤后的数据?

xurqigkl

xurqigkl1#

它加载并四处寻道,但是如果您使用的是s3a连接器和hadoop-2.7二进制文件(许多spark发行版都与之捆绑在一起),那么seek()是通过中断任何现有的get请求,然后从新的seek位置再次执行另一个get到eof来实现的。这是非常低效的寻找重代码;hadoop-2.8+允许您切换到随机io(fs.s3a.experimental.fadvise random)。
提示:对于hadoop2.8+,在您拥有的fsdatainputstream上调用tostring(),您将从s3a和abfs连接器得到一个统计报告,告诉您读取的字节数、丢弃的字节数等。

相关问题