Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark Spark输出JSON与拼花文件大小差异_Apache Spark_Parquet - Fatal编程技术网

Apache spark Spark输出JSON与拼花文件大小差异

Apache spark Spark输出JSON与拼花文件大小差异,apache-spark,parquet,Apache Spark,Parquet,这里是Spark的新用户。我无法通过Spark找到关于同一数据帧的JSON和拼花输出之间的文件大小比较的任何信息 目前使用非常小的数据集进行测试,执行df.toJSON().collect()并将其写入磁盘会创建一个15kb的文件。但是,使用df.write.parquet创建105个文件,每个文件大约1.1kb。为什么在这种情况下,使用parquet的总文件大小比使用JSON的大得多 提前感谢您柯南,如果不知道数据的性质,很难准确回答您的问题(您甚至不知道数据帧中的行数)。但让我推测一下 首先

这里是Spark的新用户。我无法通过Spark找到关于同一数据帧的JSON和拼花输出之间的文件大小比较的任何信息

目前使用非常小的数据集进行测试,执行df.toJSON().collect()并将其写入磁盘会创建一个15kb的文件。但是,使用df.write.parquet创建105个文件,每个文件大约1.1kb。为什么在这种情况下,使用parquet的总文件大小比使用JSON的大得多


提前感谢您

柯南,如果不知道数据的性质,很难准确回答您的问题(您甚至不知道数据帧中的行数)。但让我推测一下

首先。包含JSON的文本文件通常比拼花在磁盘上占用更多空间。至少当一个存储数百万行时。原因是拼花是高度优化的基于列的存储格式,它使用二进制编码来存储数据


第二。我猜您有一个非常小的数据帧,有105个分区(可能有105行)。当您存储的数据非常小时,磁盘占用空间应该不会影响您,但如果确实如此,您需要注意,每个拼花文件都有一个相对较大的头来描述您存储的数据。

使用df.toJSON.collect可以从您的所有数据中获得一个JSON(在您的情况下为15kb)您可以将其保存到磁盘—这对于您希望以任何方式使用Spark的情况来说都是不可伸缩的

为了保存拼花地板,您正在使用spark内置函数,并且似乎出于某种原因,您有105个分区(可能是您所做的操作的结果),因此您得到了105个文件。每个文件都有文件结构的开销,可能存储0、1或2条记录。如果你想保存一个文件,你应该在保存之前合并(1)(同样,这只是为了你的玩具示例),这样你会得到一个文件。请注意,由于文件格式开销,它可能仍然更大(即,开销可能仍然大于压缩带来的好处)