Apache spark Spark读取驱动程序中的orc文件而不是执行器中的文件
我在s3中有30GB的ORC文件(24个部分*1.3G)。我正在使用spark阅读这个兽人并做一些操作。但从日志中我观察到,甚至在进行任何操作之前,spark就已经打开并读取了s3中的所有24个部分(仅读取文件需要12分钟)。但我在这里担心的是,所有这些读取操作都只在驱动程序中发生,此时执行器都处于空闲状态 有人能解释一下为什么会这样吗?我有没有办法利用所有遗嘱执行人来阅读 这同样适用于拼花地板吗Apache spark Spark读取驱动程序中的orc文件而不是执行器中的文件,apache-spark,amazon-s3,orc,Apache Spark,Amazon S3,Orc,我在s3中有30GB的ORC文件(24个部分*1.3G)。我正在使用spark阅读这个兽人并做一些操作。但从日志中我观察到,甚至在进行任何操作之前,spark就已经打开并读取了s3中的所有24个部分(仅读取文件需要12分钟)。但我在这里担心的是,所有这些读取操作都只在驱动程序中发生,此时执行器都处于空闲状态 有人能解释一下为什么会这样吗?我有没有办法利用所有遗嘱执行人来阅读 这同样适用于拼花地板吗 提前谢谢 ORC和Parquet都可以检查文件页脚中的摘要数据,并且,根据s3客户端及其配置,可能
提前谢谢 ORC和Parquet都可以检查文件页脚中的摘要数据,并且,根据s3客户端及其配置,可能会导致它执行一些非常低效的IO。这可能是原因 如果您使用的是s3a://连接器和Hadoop 2.8+的底层JAR,那么您可以将其告知在列数据上获得最大性能所需的随机IO,并调优其他一些东西
val选项=地图(
“spark.hadoop.fs.s3a.experimental.fadvise”=>“random”
“spark.hadoop.orc.splits.include.file.footer”->“true”,
“spark.hadoop.orc.cache.stripe.details.size”->“1000”,
“spark.hadoop.orc.filterPushdown”->“正确”
“spark.sql.parquet.mergeSchema”->“false”,
“spark.sql.parquet.filterPushdown”->“true”
)
您是否提供了数据的模式
如果没有,Spark将尝试获取所有文件的架构,然后继续执行。可能会出现许多问题。请把密码寄出去。