pyspark中的高效GroupBy / CombineBy

时间:2018-04-20 10:56:22

标签: python apache-spark amazon-s3 pyspark spark-dataframe

目前我正在使用Spark(使用Spark版本1.6的pyspark),我有一个DataFrame,如:

DataFrame[clientId: bigint, clientName: string, action: string, ...]

我想将其转储到由属性(例如clientId)隔离的S3中,格式为s3://path/<clientId>/<datafiles>

我希望datafiles包含json格式的相应clientId的行,因此对于路径s3://path/1/,数据文件将包含:

{"clientId":1, "clientName":"John Doe", "action":"foo", ...}
{"clientId":1, "clientName":"John Doe", "action":"bar", ...}
{"clientId":1, "clientName":"John Doe", "action":"baz", ...}

我正在考虑使用groupBy然后使用toJSON,但在DataFrames中,您只能收集数据,并且DataFrame太大而无法容纳在驱动程序中(I / O也很庞大)。如何从执行程序中保存组的部分结果?

1 个答案:

答案 0 :(得分:0)

只需partitionBy并写信给JSON:

df.write.partitionBy("clientName").json(output_path)

你会得到结构

s3://path/clientId=some_id/<datafiles>