gpt4 book ai didi

apache-spark - PySpark:如何加速 sqlContext.read.json?

转载 作者:行者123 更新时间:2023-12-02 17:07:27 29 4
gpt4 key购买 nike

我正在使用下面的 pyspark 代码从 s3 存储桶中读取数千个 JSON 文件

sc = SparkContext()
sqlContext = SQLContext(sc)
sqlContext.read.json("s3://bucknet_name/*/*/*.json")

读取和解析 JSON 文件需要花费大量时间(约 16 分钟)。我怎样才能并行化或加速这个过程?

最佳答案

简短的回答是:这取决于(取决于底层基础设施)和数据内的分布(称为偏斜,它仅在您执行任何导致随机播放的操作时适用)。

如果您发布的代码运行在 AWS 的 EMR 或 MapR 上,最好优化每个集群节点上的执行器数量,使每个执行器的核心数量为 3 到 5 个。从读写 S3 的角度来看,这个数字很重要。

缓慢背后的另一个可能原因可能是可怕的公司代理。如果您对 S3 服务的所有请求都通过公司代理进行路由,那么后者将成为巨大的瓶颈。最好通过 EMR 集群上的 NO_PROXY JVM 参数绕过代理到 S3 服务。

talk from Cloudera连同他们优秀的博客 onetwo是对调整集群的出色介绍。由于我们使用的是 sql.read.json,因此底层的 Dataframe 将被分成由 yarn param sql.shuffle.paritions 给定的分区数> described here .最好将其设置为 2 * Number of Executors * Cores per Executor。在计算值超过 200

的集群上,这肯定会加快读取速度

此外,如上述答案所述,如果您知道 json 的架构,当 inferSchema 设置为 true< 时,它可能会加快处理速度.

我还恳请您查看 Spark UI并深入研究 DAG 以寻找慢作业。它是 Spark 性能调优的宝贵工具。

我计划在 AWS 上整合尽可能多的基础设施优化' EMR进入博客。完成后将使用链接更新答案。

关于apache-spark - PySpark:如何加速 sqlContext.read.json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50957967/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com