将文件写入s3的错误 - pyspark

问题描述:

我在尝试在完成所有处理后将文件写入s3时发生了一些奇怪的错误。 我想知道内存分配是否与此有关。 任何建议都会有帮助。 我在独立模式下运行Spark 2.1.0。将文件写入s3的错误 - pyspark

的错误是如下:

17/09/26 15:50:27 ERROR Utils: Aborting task 
org.apache.spark.SparkException: Python worker exited unexpectedly (crashed) 
    at org.apache.spark.api.python.PythonRunner$$anon$1.read(PythonRDD.scala:230) 
    at org.apache.spark.api.python.PythonRunner$$anon$1.next(PythonRDD.scala:156) 
    at org.apache.spark.api.python.PythonRunner$$anon$1.next(PythonRDD.scala:152) 
    at org.apache.spark.InterruptibleIterator.next(InterruptibleIterator.scala:43) 
    at scala.collection.Iterator$$anon$12.nextCur(Iterator.scala:434) 

    .... 
    Caused by: java.io.EOFException 
    at java.io.DataInputStream.readFully(DataInputStream.java:197) 
    at java.io.DataInputStream.readFully(DataInputStream.java:169) 
    at org.apache.spark.api.python.PythonRunner$$anon$1.read(PythonRDD.scala:169) 
    ... 21 more 
17/09/26 15:50:28 ERROR FileFormatWriter: Job job_20170926152633_0010 aborted. 
17/09/26 15:50:28 ERROR Executor: Exception in task 270.0 in stage 10.0 (TID 6680) 
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:204) 
    at 


.FileFormatWriter$$anonfun$write$1$$anonfun$3.\ 
apply(FileFormatWriter.scala:128) 

该文件写入到S3中的代码如下:

  df.write.format("parquet") \ 
      .option("x-amz-server-side-encryption", "AES256") \ 
      .mode("append") \ 
      .save(s3_path) 
+0

您可以先尝试写入s3,而不加密并追加模式像这​​样'df.write.parquet(s3_path)' – maxmithun

+0

检查此链接可能有助于启用加密。 https://*.com/questions/45461299/how-to-specify-server-side-encryption-for-s3-put-in-pyspark – maxmithun

我用这最简单的方法写在S3上的文件,以便尝试这个。如果你需要这个选项.option("x-amz-server-side-encryption", "AES256"),所以你可以添加它。

 df.write.mode("append").parquet(s3_path) 

我正在使用spark 2.0.1版本。

我不相信。 option("x-amz-server-side-encryption", "AES256").option()命令为DF写入器任务设置属性,而不是在上载中设置HTTP标头。您需要查看s3连接器(EMR或Apache Hadoop's)的文档及其设置。

与此同时,我不认为它会导致崩溃。它会被忽略。

粘贴整个堆栈。