【问题标题】:How to configure the number of partition not exceeds available cores?如何配置不超过可用核心的分区数?
【发布时间】:2019-10-29 04:36:57
【问题描述】:

我正在寻找一种方法来根据可用核心的大小对我的应用程序中的所有数据帧进行分区。如果我的可用核心(执行器数 * 每个执行器的核心数)为 20,那么我想重新分区所有我的数据框到 20..

我可以看到重新分区我的数据帧的唯一方法是df.repartition(20),但我希望将其应用于我的应用程序中存在的所有数据帧,而不必为每个数据帧编写df.repartition(20)

更改 spark.default.parallelism conf 不起作用,因为它仅在您使用 RDD(较低级别的 api)而不是数据帧时应用。

对此有什么建议吗?

【问题讨论】:

    标签: apache-spark apache-spark-sql sparkcore


    【解决方案1】:

    如果您使用的是DataFrame/Dataset API,那么您可以使用此配置指令设置默认随机分区的数量:

    spark.sql.shuffle.partitions
    

    您可以在Performance Tuning 页面上阅读有关此配置选项的更多信息。

    使用此配置选项,任何触发数据混洗的转换都会自动将数据重新分区到此数量的分区。

    【讨论】:

    • 这行得通.. 是否有类似的配置可用于覆盖数据帧的默认并行性?
    • 这是我所知道的唯一一个。否则,并行性由数据源控制,以及它如何拆分数据,或者如您所知,通过调用.repartition().coalesce()
    猜你喜欢
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 2013-01-03
    • 1970-01-01
    • 2016-05-20
    • 2018-04-10
    相关资源
    最近更新 更多