Spark程序的S3 Slow Down异常

时间:2018-05-15 04:13:32

标签: apache-spark amazon-s3

我在EMR集群中运行了简单的spark程序,试图将60 GB的CSV文件转换为镶木地板。当我提交工作时,我得到以下异常。

391, ip-172-31-36-116.us-west-2.compute.internal, executor 96): org.apache.spark.SparkException: Task failed while writing rows.
at org.apache.spark.sql.execution.datasources.FileFormatWriter$.org$apache$spark$sql$execution$datasources$FileFormatWriter$$executeTask(FileFormatWriter.scala:285)
at org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun$write$1.apply(FileFormatWriter.scala:197)
at org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun$write$1.apply(FileFormatWriter.scala:196)
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87)
at org.apache.spark.scheduler.Task.run(Task.scala:109)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:345)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)Caused by: com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.services.s3.model.AmazonS3Exception: Slow Down (Service: Amazon S3; Status Code: 503; Error Code: 503 Slow Down; Request ID: D13A3F4D7DD970FA; S3 Extended Request ID: gj3cPalkkOwtaf9XN/P+sb3jX0CNHu/QF9WTabkgP2ISuXcXdbvYO1Irg0O54OCvKlLz8WoR8E4=), S3 Extended Request ID: gj3cPalkkOwtaf9XN/P+sb3jX0CNHu/QF9WTabkgP2ISuXcXdbvYO1Irg0O54OCvKlLz8WoR8E4=
at com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1639)

2 个答案:

答案 0 :(得分:0)

当您每秒执行过多请求时,

503 Slow Down是来自AWS服务的通用响应。

可能的解决方案:

  1. 首先将文件复制到HDFS。
  2. 你有一个60 Gb文件或许多总计60 Gb的文件吗?如果您有很多小文件,请先尝试将它们合并。
  3. 如果可以,请尝试减少Parquet输出中的分区数量。 df.repartition(100)
  4. 尝试使用较少的Spark工作人员。 val spark = SparkSession.builder.appName("Simple Application").master("local[1]").getOrCreate()

答案 1 :(得分:0)

我对事情失败感到惊讶;当Apache s3a客户端看到这样的问题时,它会退出:你的工作已经完成,只是更慢。

谢尔盖的所有建议都很好。我首先要合并小文件并减少工作人员:较小的群集可以提供更高的性能,并节省资金

还有一个:如果您使用SSE-KMS加密数据,访问该密钥也可以触发限制事件;在尝试使用KMS存储的所有应用程序中共享限制。