Spark 使用 python:如何解决 Stage x 包含非常大的任务 (xxx KB).建议的最大任务大小为 100 KB [英] Spark using python: How to resolve Stage x contains a task of very large size (xxx KB). The maximum recommended task size is 100 KB

查看:32
本文介绍了Spark 使用 python:如何解决 Stage x 包含非常大的任务 (xxx KB).建议的最大任务大小为 100 KB的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我刚刚创建了 range(1,100000) 的 python 列表.

I've just created python list of range(1,100000).

使用 SparkContext 完成以下步骤:

Using SparkContext done the following steps:

a = sc.parallelize([i for i in range(1, 100000)])
b = sc.parallelize([i for i in range(1, 100000)])

c = a.zip(b)

>>> [(1, 1), (2, 2), -----]

sum  = sc.accumulator(0)

c.foreach(lambda (x, y): life.add((y-x)))

给出如下警告:

ARN TaskSetManager:第 3 阶段包含一个非常大的任务 (4644 KB).建议的最大任务大小为 100 KB.

如何解决这个警告?有没有办法处理大小?还有,它会不会影响大数据的时间复杂度?

How to resolve this warning? Is there any way to handle size? And also, will it affect the time complexity on big data?

推荐答案

扩展@leo9r 评论:考虑使用的不是python range,而是sc.range https://spark.apache.org/docs/1.6.0/api/python/pyspark.html#pyspark.SparkContext.range.

Expanding @leo9r comment: consider using not a python range, but sc.range https://spark.apache.org/docs/1.6.0/api/python/pyspark.html#pyspark.SparkContext.range.

这样就避免了从驱动程序到执行程序的巨大列表传输.

Thus you avoid transfer of huge list from your driver to executors.

当然,此类 RDD 通常仅用于测试目的,因此您不希望它们被广播.

Of course, such RDDs are usually used for testing purposes only, so you do not want them to be broadcasted.

这篇关于Spark 使用 python:如何解决 Stage x 包含非常大的任务 (xxx KB).建议的最大任务大小为 100 KB的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆