Spark 程序的 S3 减速异常

kal*_*thy 5 amazon-s3 apache-spark

我在 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)
Run Code Online (Sandbox Code Playgroud)

Ser*_*lev 5

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()