微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。