0
我是一个新手火花。我正在使用python(pyspark)编写我的程序。我使用groupByKey
函数将键 - 值对转换为键 - (值列表)对。我在64核心计算机上运行spark,并尝试使用以下命令启动程序来使用所有64个内核。星火不利用任何减少parallization
spark-submit --master local[64] my_program.py
然而,我注意到,在执行groupByKey
功能,正在使用只有一个核心。数据相当大。那么,为什么spark不会将其分割成64个分区,并在64个不同的核心中进行缩减/分组?
我错过了一些并行化的重要步骤?
代码的相关部分看起来像这样,
# Here input itself is a key-(list of values) pair. The mapPartitions
# function is used to return a key-value pair (variable x), from
# which another key-(list of values) pair is created (variable y)
x = input.mapPartitions(transFunc)
# x contains key value pair, such as [(k1, v1), (k1, v2), (k2, v3)]
y = x.groupByKey()
# y contains key-list of values pair such as [(k1, [v1, v2]), (k2, [v2])]
你是如何加载你的数据? – maasg 2014-11-08 11:42:34
@maasg:我使用mapPartitions。在mapPartitions之后,say变量x中的结果数据是一个键值对,其中key是一个字符串,值也是一个字符串。然后,我使用groupByKey组成键(值列表)对的关键字,其中键与x中的键相同,并且值列表是字符串值列表。 – MetallicPriest 2014-11-08 11:51:53
您可以将代码添加到问题中吗? – maasg 2014-11-08 11:56:10