当前,当处理复杂的嵌套结构时,Spark结构和Dask之间的集成似乎很麻烦。尽管将镶木地板加载是正在进行的大量工作(fastparquet,pyarrow)的一部分,但具体地转储Dask读取的具有嵌套结构的Spark Dataframe似乎并不十分可靠;
所以我的后续问题-假设我可以在Spark中进行一些转换并将DataFrame转换为包含自定义类对象的RDD;有没有一种方法可以使用自定义类对象可靠地转储Spark RDD的数据并在Dask集合中读取它?显然,您可以将rdd收集到python列表中,将其腌制,然后将其读取为常规数据结构,但这消除了加载大于内存数据集的机会。 dask可以使用类似火花酸洗的方法来装载分布式酸洗吗?
答案 0 :(得分:0)
我通过以下操作解决了此问题
具有一个带有自定义对象列表作为行值的Spark RDD,我创建了rdd的一个版本,在其中使用cPickle.dumps
将对象序列化为字符串。然后将此RDD转换为带有字符串列的简单DF,并将其写入拼花地板。 Dask
能够读取结构简单的实木复合地板文件。然后用cPickle.loads
反序列化以获得原始对象