我有一个pyspark数据框,如下所示:
+----+--------------------+
| ID| Email|
+----+--------------------+
| 1| sample@example.org|
| 2| sample2@example.org|
| 3| sampleexample.org|
| 4| sample@exampleorg|
+----+--------------------+
我需要做的是将其拆分为多个块,然后将这些块转换为字典,如:
chunk1
[{'ID': 1,'Email': 'sample@example.org'},{'ID': 2,'Email': 'sample2@example.org'}]
chunk2
[{'ID': 3,'Email': 'sampleexample.org'},{'ID': 4,'Email': 'sample@exampleorg'}]
我在SO上找到了this post,但我认为先将这些块转换为pandas数据帧,再从那里转换为字典并没有任何意义,尽管我可以直接做到这一点。使用该文章中的想法,我得到了以下代码,但不确定这是否是最好的方法:
columns = spark_df.schema.fieldNames()
chunks = spark_df.repartition(num_chunks).rdd.mapPartitions(lambda iterator: [iterator.to_dict('records')]).toLocalIterator()
for list_of_dicts in chunks:
# do work locally on list_of_dicts