Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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
Performance Spark不相同的输入/输出目录大小(对于相同的数据)_Performance_File_Apache Spark_Namenode - Fatal编程技术网

Performance Spark不相同的输入/输出目录大小(对于相同的数据)

Performance Spark不相同的输入/输出目录大小(对于相同的数据),performance,file,apache-spark,namenode,Performance,File,Apache Spark,Namenode,以减少NameNode分配的块数。我正在尝试将一些小文件连接到128MB文件。这些小文件是gz格式的,128MB的文件也必须是gz格式的 为了实现这一点,我得到了所有小文件的总大小,并将这个总大小除以128,得到我需要的文件数 然后执行rdd.repartitionnbFiles.saveAsTextFilePATH,classOf[gzip代码] 问题是我的输出目录比我的输入目录大10%。我使用默认和最佳压缩级别进行了测试,我总是获得更高的输出大小 我不知道为什么我的输出目录比输入目录高,但我

以减少NameNode分配的块数。我正在尝试将一些小文件连接到128MB文件。这些小文件是gz格式的,128MB的文件也必须是gz格式的

为了实现这一点,我得到了所有小文件的总大小,并将这个总大小除以128,得到我需要的文件数

然后执行rdd.repartitionnbFiles.saveAsTextFilePATH,classOf[gzip代码]

问题是我的输出目录比我的输入目录大10%。我使用默认和最佳压缩级别进行了测试,我总是获得更高的输出大小

我不知道为什么我的输出目录比输入目录高,但我想这与我正在重新划分输入目录的所有文件有关

有人能帮我理解为什么我会得到这个结果吗


谢谢:

压缩级别将取决于数据分布。当您使用rdd.repartitionnbFiles时,您会随机洗牌所有数据,因此,如果输入中存在某种结构,从而降低了熵并实现了更好的压缩,则数据将丢失


您可以尝试其他方法,如colaesce而不进行无序排列或排序,以查看是否可以获得更好的结果。

文件数等于nbFiles?nbFiles是我将在输出中生成的文件数,以获得128MB大小的文件。sumSize/128 MB