gpt4 book ai didi

apache-spark - 您如何确定 Spark 应用程序的随机分区?

转载 作者:行者123 更新时间:2023-12-05 03:41:36 24 4
gpt4 key购买 nike

我是 spark 的新手,所以我正在学习来自 sparkbyexamples.com 的精彩教程,在阅读时我发现了这一部分:

Shuffle partition size & Performance

Based on your dataset size, a number of cores and memory PySparkshuffling can benefit or harm your jobs. When you dealing with lessamount of data, you should typically reduce the shuffle partitionsotherwise you will end up with many partitioned files with less numberof records in each partition. which results in running many tasks withlesser data to process.

On other hand, when you have too much of data and having less numberof partitions results in fewer longer running tasks and some times youmay also get out of memory error.

Getting the right size of the shuffle partition is always tricky andtakes many runs with different values to achieve the optimized number.This is one of the key properties to look for when you haveperformance issues on PySpark jobs.

有人可以帮助我了解您如何确定您的工作需要多少随机分区吗?

最佳答案

正如您所说,这很棘手,但这是我的策略:

如果你使用“静态分配”,意味着你告诉 Spark 你想为作业分配多少执行器,那么很简单,分区数可以是executors * cores per executor * factorfactor = 1 表示每个执行器将处理 1 个作业,factor = 2 表示每个执行器将处理 2 个作业,依此类推

如果您使用的是“动态分配”,那就更棘手了。您可以在此处阅读详细说明 https://databricks.com/blog/2021/03/17/advertising-fraud-detection-at-scale-at-t-mobile.html .一般的想法是你需要回答很多问题,比如你的数据有多大(以千兆字节为单位),它的结构是什么样的(有多少文件,多少文件夹,多少行等),你会如何阅读它(来自 hdfs 或来自 hive 或来自 jdbc),你有多少资源(内核、执行器、内存),……然后你一遍又一遍地运行和基准测试,以找到适合你的情况的最佳点。

更新#1:

So what is the general industry practice, will a company simply use first tactic and allocate more hardware or they will use dynamic allocation?

通常,如果您有本地 Hadoop 环境,您可以在静态(默认模式)和动态分配(高级模式)之间进行选择。此外,我经常从动态开始,因为我不知道数据有多大及其转换,所以坚持使用动态让我可以灵活地扩展我的工作,而无需过多考虑 Spark 配置。但如果您愿意,您也可以从静态开始,没有什么能阻止您这样做。

然后最终,当涉及到生产过程时,您还可以在静态(非常稳定但消耗更多资源)和动态(不太稳定,即有时由于资源分配而失败,但节省资源)之间进行选择。

最后,大多数 Hadoop 云解决方案(如 Databricks)默认带有动态分配,成本较低。

关于apache-spark - 您如何确定 Spark 应用程序的随机分区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67654124/

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