![](/img/trans.png)
[英]Tune Spark, set executors and memory driver for reading large csv file
[英]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.