在 Spark SQL 中通过 COALESCE 减少分区
Posted
技术标签:
【中文标题】在 Spark SQL 中通过 COALESCE 减少分区【英文标题】:Reduce Partitions by COALESCE in Spark SQL 【发布时间】:2021-03-30 18:00:45 【问题描述】:我运行 Spark SQL 查询并使用它们执行数据转换,然后将最终结果集(经过一系列转换步骤后)存储到 S3
。
我最近注意到我的一项工作是在写入 S3
时创建大量分区文件,并且需要很长时间才能完成(实际上它失败了)。所以我想知道在写入S3
之前是否有任何方法可以在SQL API中执行COALESCE
之类的函数来减少分区数量?
我知道重新分区的 SQL API 等效项是Cluster By
。所以想知道在 SQL API 中是否也有类似的COALESCE
操作。
请注意,我只能访问 SQL API,所以我的问题仅与 Spark SQL API 有关。 (例如SELECT col from TABLE1 WHERE
...)
我们使用 Spark SQL 2.4.6.7
谢谢
【问题讨论】:
【参考方案1】:docs 建议使用提示来合并分区,例如
SELECT /*+ COALESCE(3) */ col from TABLE1
【讨论】:
谢谢。我看到这是针对 Spark v3.0 的。这也适用于 Spark 2.4 吗? 找到了。它支持2.4。这里的母马信息:jaceklaskowski.gitbooks.io/mastering-spark-sql/content/…以上是关于在 Spark SQL 中通过 COALESCE 减少分区的主要内容,如果未能解决你的问题,请参考以下文章
在 Apache Spark 中通过管道运行 Windows 批处理文件