目前我正在使用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也很庞大)。如何从执行程序中保存组的部分结果?
答案 0 :(得分:0)
只需partitionBy
并写信给JSON:
df.write.partitionBy("clientName").json(output_path)
你会得到结构
s3://path/clientId=some_id/<datafiles>