如何按字段对pySpark RDD进行分区,而不将其转换为数据框?

问题描述

是否可以通过特定字段对rdd进行分区,而无需将其转换为数据帧?

我想参加第四字段

最好将列表转换为rdd

people = [
          ('john',35,54,'A'),('george',94,84,'B'),('nicolas',7,9,('tom',86,93,('jason',62,73,('bill',15,58,('william',3,('brad',37,('cosmo',52,67,('jerry',30,'A')
  ]


rdd = spark.sparkContext.parallelize(people)

或者在执行字典zip后

people = [('john','A')]

fields = ('name','x','y','class')

data = [dict(zip(fields,person)) for person in people]

rdd = spark.sparkContext.parallelize(data)

>>> data

[{'name': 'john','x': 35,'y': 54,'class': 'A'},{'name': 'george','x': 94,'y': 84,'class': 'B'},{'name': 'nicolas','x': 7,'y': 9,{'name': 'tom','x': 86,'y': 93,{'name': 'jason','x': 62,'y': 73,{'name': 'bill','x': 15,'y': 58,{'name': 'william','x': 9,'y': 3,{'name': 'brad','x': 73,'y': 37,{'name': 'cosmo','x': 52,'y': 67,{'name': 'jerry','y': 30,'class': 'A'}]

之所以需要这样做,是因为在重新分区之后,我将对该数据集执行一个嵌套循环,当在列表上执行该嵌套循环比在数据帧上执行嵌套循环更容易和更快。

如果那是不可能的,那我还能做什么?我可以将列表转换为数据框,重新分区,然后再次将数据框转换为列表吗?

解决方法

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

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

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