如何将 Dataset 序列化为二进制 file/parquet?

How to serialize Dataset to binary file/parquet?

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

我认为您使用的是 Java 或 Scala,对吧?因为 PySpark 还不支持 Dataset。根据我的经验,最好的办法是将数据保存为 HDFS 中的 parquet 文件,因为我注意到与 [=13] 等其他格式相比,读取文件所需的时间减少了=] 和其他人。

抱歉我跑题了,但我认为这很重要。正如您在 Dataset class, you can't notice any method to save the data, therefore my suggestion is to use toDF method from Dataset and then using write method from DataFrame. Or also use the DataFrameWriter final class 的文档中看到的那样,使用 parquet 方法。

How should I serialize a DataSet?

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

我相信它会自动遵守数据集使用的模式。

Is there a way to use the Encoder to create a binary file

基于Encoder(对于1.6.0)的源代码,它旨在将输入数据源转换为数据集(准确地说是InternalRow,但这是一个非常low-level细节)。默认实现将数据帧中的每一列匹配到 case-class(对于 scala)或元组或原语,以生成数据集。