我的任务是将Pyspark Dataframe输出为cap&#cu; n proto(.capnp)格式。有没有人建议最好的方法来做到这一点?
我有一个capnp架构,我已经看到了capnp(http://capnproto.github.io/pycapnp/)的python包装器,但是我仍然不确定从数据帧到capnp的最佳方式是什么。
答案 0 :(得分:0)
最简单的方法是转到RDD,使用mapPartitions
将分区收集为序列化https://github.com/Microsoft/TypeScript/issues/4130#issuecomment-303486552并将其加入collect()
或使用toLocalIterator
保存到磁盘,如果数据帧很大。参见示例伪代码:
create = your_serialization_method
serialize_partition = lambda partition: [b''.join([create(object).to_bytes() for object in partition])] # creates one-element partition
output = b''.join(df.rdd.mapPartitions(serialize_partition).collect())