Skip to main content
 首页 » 编程设计

python之如何在 pyspark 的 spark 中使用 "for"循环

2025年02月15日41leader

我在我的项目中使用带有 python3 的 spark 时遇到了问题。在Key-Value对中,比如('1','+1 2,3'),"2,3"部分就是我要检查的内容.所以我写了下面的代码:
(假设这个键值对保存在一个名为 p_list 的 RDD 中)


def add_label(x):    
    label=x[1].split()[0]   
    value=x[1].split()[1].split(",")   
    for i in value:      
        return (i,label)   
p_list=p_list.map(add_label) 

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

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

请您参考如下方法:

你的 return 语句不能在循环内;否则,它会在第一次迭代后返回,永远不会进入第二次迭代。

你可以试试这个

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

result 将是在循环内创建的所有元组的列表。