小编Pal*_*ant的帖子

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

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

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

集群规格:1个主节点+ 4个节点:C3.8xls-驱动程序内存5G \-执行程序内存3G \-执行程序核心2 \-执行程序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/")};
Run Code Online (Sandbox Code Playgroud)

观察=>

  • 2MB-32MB:大多数时间都用于打开文件句柄[效率不高]
  • 从64MB到1GB:Spark本身针对所有这些文件大小启动320个任务,它不再具有20GB数据的存储桶中的文件数量,例如512 mb文件具有40个文件来生成20gb数据,并且可以完成40个任务,但是而是有320个任务,每个任务处理64MB数据。
  • 4GB文件大小:0字节输出[无法处理内存/数据甚至不可拆分???]

问题=>

  • 强制处理输入大小的任何默认设置为64MB?
  • 由于我正在使用的数据是随机字节并且已经压缩,因此如何进一步拆分此数据?如果可以拆分此数据,为什么无法拆分4gb目标文件大小的文件大小?
  • 通过Spark上传后,为什么压缩文件的大小会增加?2MB的压缩输入文件在输出存储区中变为3.6 MB。

gzip amazon-s3 amazon-web-services apache-spark

4
推荐指数
1
解决办法
4638
查看次数