Spark写入/读取S3 - 分区大小和压缩

时间:2017-11-21 23:40:06

标签: amazon-web-services apache-spark amazon-s3 gzip

我正在做一个实验来了解哪个文件大小在s3和[EMR + Spark]中表现最佳

输入数据: 不可压缩数据:文件中的随机字节 总数据大小:20GB 每个文件夹的输入文件大小不同: 从2MB到4GB的文件大小。

群集规格: 1个主人+4个节点:C3.8xls - 驱动程序内存5G - 执行器 - 内存3G \ --executor-cores 2 \ --num-executors 60 \

代码:

scala> def time[R](block: => R): R = {
          val t0 = System.nanoTime()
          val result = block    // call-by-name
         val t1 = System.nanoTime()
          println("Elapsed time: " + (t1 - t0) + "ns")
          result
      }
time: [R](block: => R)R

scala> val inputFiles = time{sc.textFile("s3://bucket/folder/2mb-10240files-20gb/*/*")};
scala> val outputFiles = time {inputFiles.saveAsTextFile("s3://bucket/folder-out/2mb-10240files-20gb/")};

观测=>

  • 2MB - 32MB:大部分时间用于打开文件句柄[不是 高效]
  • 64MB直到1GB:Spark本身正在推出320项任务 所有这些文件大小,它不再是该桶中的文件号 使用20GB数据,例如512 MB的文件有40个文件来制作20GB的数据和 可能只有40个任务要完成,但有320个 每个处理64MB数据的任务。
  • 4GB文件大小:输出0字节 [无法处理内存/数据甚至不能拆分???]

问题=>

  • 强制要处理输入大小的任何默认设置 64MB ??
  • 由于我使用的数据是随机字节而已经存在 压缩如何进一步分割这些数据?如果它可以拆分 这个数据为什么它不能分割4gb目标文件大小的文件大小?
  • 为什么在通过spark上传后压缩文件大小会增加?2MB压缩输入文件在输出桶中变为3.6 MB。

0 个答案:

没有答案