Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我怎样才能使用;至于;用pyspark在spark中循环_Python_For Loop_Pyspark - Fatal编程技术网

Python 我怎样才能使用;至于;用pyspark在spark中循环

Python 我怎样才能使用;至于;用pyspark在spark中循环,python,for-loop,pyspark,Python,For Loop,Pyspark,在我的项目中将spark与python3一起使用时,我遇到了一个问题。在键值对中,如('1','+12,3'),部分“2,3”是我想要检查的内容。因此,我编写了以下代码: (假设此键值对保存在名为p_列表的RDD中) 这样做之后,我只能得到结果:('2','+1'),它应该是('2','+1')和('3','+1')。似乎map操作中的“for”循环只执行了一次。我怎么能让它重复多次呢?或者有没有其他方法可以用来在map操作或reduce操作中实现类似于“for”循环的功能 我想说的是,我真

在我的项目中将spark与python3一起使用时,我遇到了一个问题。在键值对中,如
('1','+12,3')
,部分
“2,3”
是我想要检查的内容。因此,我编写了以下代码:
(假设此键值对保存在名为p_列表的RDD中)



这样做之后,我只能得到结果:
('2','+1')
,它应该是
('2','+1')
('3','+1')
。似乎map操作中的“for”循环只执行了一次。我怎么能让它重复多次呢?或者有没有其他方法可以用来在map操作或reduce操作中实现类似于“for”循环的功能


我想说的是,我真正处理的是一个大型数据集。所以我必须使用AWS集群并实现并行化的循环。集群中的从属节点似乎不理解循环。使用Spark RDD功能,我如何让他们知道这一点?或者,如何以另一种管道方式(Spark RDD的主要设计之一)进行这样的循环操作?

您的返回语句不能在循环内;否则,它将在第一次迭代后返回,而不会进入第二次迭代

你可以试试这个

result = []
for i in value:
    result.append((i,label))
return result

然后,
result
将是循环中创建的所有元组的列表。

我想从这个问题中删除spark标记,因为除了
RDD.map
函数之外,没有什么是真正特定于spark的。这是一个真正的火花应用。上面的问题只是我遇到的主要问题的抽象。将有一组键值对保存在rdd中,如('1','+12,3')。我需要比较标签和以下子节点,并返回所有键值对的每个(子节点,标签)。整个操作可能是RDD.map().filter().reduceByKey()等。这应该在带有spark cluster的AWS上完成。您是否尝试过
rdd.foreach()
?rdd.foreach()将函数应用于rdd中的所有元素。我还可以使用rdd.map()或rdd.reduce()将函数应用于每个元素。有什么区别吗?实际上,我试图在rdd.foreach()中设置for循环,但它仍然只为每个元素设置一次。我需要对每个元素执行多次操作,而不是一次。我在一台计算机上运行了这个操作,效果很好。但当我以伪模式或完全分布式模式(如AWS)运行它时,结果表明此操作只执行一次。为什么for循环在分布式计算中不起作用?我明白你的意思,并将尝试使用rdd.flatMap()为rdd中的每个元素展平结果列表。非常感谢。
result = []
for i in value:
    result.append((i,label))
return result