pyspark - RDD partitionBy 并映射一个函数不能两者都发生吗?

问题描述

我想将 python 列表转换为 RDD、partitionBY 键,然后映射一个将迭代每条记录的函数,即“子列表”。

当我的列表采用以下格式时,我可以分区但无法映射函数

 records = [
        [3,['BEP8N',63,19,'A',15,[10,3,22]]],[4,['2KL05',55,44,'B',16,[8,21,13]]],[3,['1MJ03',51,56,[7,23,13,15]]],['26GPP',14,26,[2,27,12]]]
       ]    

当我的列表是以下格式时,我可以映射一个函数,但不能分区:

records = [
          [
           [3,12]]]
          ]
          ]  

一般我使用以下命令

rdd1 = sc.parallelize(records)
newpairRDD = rdd1.partitionBy(2,lambda k: k)
funcRDD = newpairRDD.map(lambda x: def_func(x))

其中 def_func 是一个 python 函数,它迭代记录(子列表)并返回一个新列表,就像这样

def def_func(x):
g=x.copy()
new_list = []

for i in g:
    if i[1][2]>50:
        new_list.append(i)
return new_list

怎么了?如何在我的数据上分区然后映射一个函数

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)