Performance Spark不相同的输入/输出目录大小(对于相同的数据)
以减少NameNode分配的块数。我正在尝试将一些小文件连接到128MB文件。这些小文件是gz格式的,128MB的文件也必须是gz格式的 为了实现这一点,我得到了所有小文件的总大小,并将这个总大小除以128,得到我需要的文件数 然后执行rdd.repartitionnbFiles.saveAsTextFilePATH,classOf[gzip代码] 问题是我的输出目录比我的输入目录大10%。我使用默认和最佳压缩级别进行了测试,我总是获得更高的输出大小 我不知道为什么我的输出目录比输入目录高,但我想这与我正在重新划分输入目录的所有文件有关 有人能帮我理解为什么我会得到这个结果吗Performance Spark不相同的输入/输出目录大小(对于相同的数据),performance,file,apache-spark,namenode,Performance,File,Apache Spark,Namenode,以减少NameNode分配的块数。我正在尝试将一些小文件连接到128MB文件。这些小文件是gz格式的,128MB的文件也必须是gz格式的 为了实现这一点,我得到了所有小文件的总大小,并将这个总大小除以128,得到我需要的文件数 然后执行rdd.repartitionnbFiles.saveAsTextFilePATH,classOf[gzip代码] 问题是我的输出目录比我的输入目录大10%。我使用默认和最佳压缩级别进行了测试,我总是获得更高的输出大小 我不知道为什么我的输出目录比输入目录高,但我
谢谢:压缩级别将取决于数据分布。当您使用rdd.repartitionnbFiles时,您会随机洗牌所有数据,因此,如果输入中存在某种结构,从而降低了熵并实现了更好的压缩,则数据将丢失
您可以尝试其他方法,如colaesce而不进行无序排列或排序,以查看是否可以获得更好的结果。文件数等于nbFiles?nbFiles是我将在输出中生成的文件数,以获得128MB大小的文件。sumSize/128 MB