问题描述
在写入之前,我尝试使用 Spark AQE 动态合并随机分区。默认情况下,spark 会创建过多的小文件。但是,AQE 功能声称启用它可以优化此功能并将小文件合并为大文件。这对于像我这样的 aws s3 用户来说至关重要,因为小文件过多会导致稍后尝试读取小文件时网络拥塞。
这是我的火花配置:
[('spark.executor.extraJavaOptions','-XX:+UseG1GC'),('spark.executor.id','driver'),('spark.driver.extraJavaOptions',('spark.driver.memory','16g'),('spark.sql.adaptive.enabled','true'),('spark.app.name','pyspark-shell'),('spark.sql.adaptive.coalescePartitions.minPartitionNum','5'),('spark.app.startTime','1614929855179'),('spark.sql.adaptive.coalescePartitions.enabled',('spark.driver.port','34447'),('spark.executor.memory',('spark.driver.host','2b7345ffcf3e'),('spark.rdd.compress',('spark.serializer.objectStreamReset','100'),('spark.master','local[*]'),('spark.submit.pyFiles',''),('spark.submit.deployMode','client'),('spark.app.id','local-1614929856024'),('spark.ui.showConsoleProgress','true')]
AQE需要的参数都启用了,我在执行计划中也看到了AdaptiveSparkPlan isFinalPlan=true
。当我运行一个小任务(读取一个 csv,做一些计算,做一个连接操作并写入 parquet)时,它仍然在 parquet 文件夹中生成太多小文件。我是不是遗漏了什么,或者这个功能没有实现它的承诺?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)