是否可以按特定字段重新划分rdd,而不将其转换为Dataframe?
我想按第四个字段重新划分。
最好是在将列表转换为rdd之后
people = [
('john', 35, 54, 'A'),
('george', 94, 84, 'B'),
('nicolas', 7, 9, 'B'),
('tom', 86, 93, 'A'),
('jason', 62, 73, 'B'),
('bill', 15, 58, 'A'),
('william', 9, 3, 'A'),
('brad', 73, 37, 'B'),
('cosmo', 52, 67, 'B'),
('jerry', 73, 30, 'A')
]
rdd = spark.sparkContext.parallelize(people)
或者在执行dict压缩之后
people = [('john', 35, 54, 'A'),
('george', 94, 84, 'B'),
('nicolas', 7, 9, 'B'),
('tom', 86, 93, 'A'),
('jason', 62, 73, 'B'),
('bill', 15, 58, 'A'),
('william', 9, 3, 'A'),
('brad', 73, 37, 'B'),
('cosmo', 52, 67, 'B'),
('jerry', 73, 30, '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, 'class': 'B'},
{'name': 'tom', 'x': 86, 'y': 93, 'class': 'A'},
{'name': 'jason', 'x': 62, 'y': 73, 'class': 'B'},
{'name': 'bill', 'x': 15, 'y': 58, 'class': 'A'},
{'name': 'william', 'x': 9, 'y': 3, 'class': 'A'},
{'name': 'brad', 'x': 73, 'y': 37, 'class': 'B'},
{'name': 'cosmo', 'x': 52, 'y': 67, 'class': 'B'},
{'name': 'jerry', 'x': 73, 'y': 30, 'class': 'A'}]
这样做的原因是,在重新分区之后,我将在这个数据集上执行一个嵌套循环,这在列表上执行比在Dataframe上执行更容易、更快。
如果那是不可能的,我还能做什么?我可以将我的列表转换为Dataframe、重新分区,然后再将Dataframe转换为列表吗?
暂无答案!
目前还没有任何答案,快来回答吧!