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

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

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