如何将 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)或元组或原语,以生成数据集。
我应该如何序列化 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)或元组或原语,以生成数据集。