繁体   English   中英

在驱动程序中不在驱动程序中火花读取orc文件

[英]Spark reading orc file in driver not in executors

我在s3中有30GB的ORC文件(24个部分* 1.3G) 我正在使用spark来阅读此orc并进行一些操作。 但是从日志中我观察到的甚至在进行任何操作之前都没有发现,spark正在打开并从s3中读取所有24个部分(花12分钟只是为了读取文件) 但是我在这里担心的是,所有这些读取操作仅在驱动程序中发生,而执行器此时都处于空闲状态

有人可以解释一下为什么会这样吗? 有什么办法可以利用所有执行程序进行阅读吗?

实木复合地板也一样吗?

提前致谢。

ORC和Parquet都可以检查文件页脚中的摘要数据,并且取决于s3客户端及其配置,可能会导致它执行一些效率很低的IO。 可能是原因。

如果您使用的是s3a://连接器和Hadoop 2.8+的基础JAR,则可以将其告知达到列数据最大性能所需的随机IO,并进行其他调整。

val OPTIONS = Map( "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" -> "true" "spark.sql.parquet.mergeSchema" -> "false", "spark.sql.parquet.filterPushdown" -> "true" )

您是否提供了数据架构?

如果不是,Spark会尝试获取所有文件的架构,然后继续执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM