如何将数据集序列化为二进制文件/实木复合地板?

时间:2016-01-12 12:36:57

标签: apache-spark apache-spark-dataset

我应该如何序列化DataSet?有没有办法使用Encoder创建二进制文件,还是应该将其转换为DataFrame然后将其保存为镶木地板?

2 个答案:

答案 0 :(得分:2)

  

我应该如何序列化数据集?

dataset.toDF().write.parquet("")

我相信它会自动遵循数据集正在使用的架构。

  

有没有办法使用编码器来创建二进制文件

基于Encoder的源代码(适用于1.6.0),它被设计为将输入数据源转换为数据集(来往于InternalRow以确切但这是一个非常低级别的详情)。默认实现将数据帧中的每一列与case-class(对于scala)或元组或基元进行匹配,以生成数据集。

答案 1 :(得分:1)

我认为您使用的是Java或Scala,对吗?因为PySpark尚未支持Dataset。根据我的经验,您可以做的最好的事情是将数据保存为parquet中的HDFS文件,因为我注意到与其他格式(例如{{1})相比,读取文件所需的时间减少了和其他人。

对不起我的题外话,但我认为这很重要。正如您在Dataset类的文档中所看到的,您无法注意到保存数据的任何方法,因此我的建议是使用csv中的toDF方法,然后使用{{来自Dataset的方法。或者也可以使用DataFrame方法使用write最终类。