pyspark:在外部存储上将大型数据帧保存为 csv 时出现异常
pyspark: Exception while saving Large dataframes as csv on external storage
我有一个数据框,在 pyspark 的变量 df
中有大约 4000 个条目。
当我尝试将数据作为 csv 导出到外部存储时,出现如下奇怪的错误:
Caused by: org.apache.spark.SparkException: Job aborted due to stage failure: Task 12 in stage 9.0 failed 1 times, most recent failure: Lost task 12.0 in stage 9.0 (TID 21, localhost, executor driver): org.apache.spark.SparkException: Task failed while writing rows
Caused by: java.lang.StringIndexOutOfBoundsException: offset 2124, count 3889, length 4096
py4j.protocol.Py4JJavaError: An error occurred while calling o77.csv.
: org.apache.spark.SparkException: Job aborted.
我的写入命令如下:
df.write.csv("data/out", sep="@", mode="overwrite")
我的数据在上下文中包含 ,
,因此我指定自定义分隔符 @
。
如果我设置限制 20,我可以导出 csv。意味着一个文件只命名为 part-00000-683794ef-bc5e-4566-9e2f-89dd55725571-c000.csv
。此外,如果我使用 df.write.json()
成功完成但未在 csv 中完成。
但是当我尝试输出完整的 dataFrame 时出现错误。
知道是什么原因造成的。
DataFrame 的架构:
root
|-- _c1: string (nullable = true)
|-- _c2: string (nullable = true)
|-- _c3: string (nullable = true)
|-- _c4: string (nullable = true)
|-- _c5: string (nullable = true)
Java 9 在 Spark 中还不支持(也许在 Spark3 中会支持)。人们通常在写入或读取文件时遇到很多问题。
尝试安装 java 8。让我知道它是否有效。
不要忘记更新您的 java 版本并设置所有必要的环境变量。
我有一个数据框,在 pyspark 的变量 df
中有大约 4000 个条目。
当我尝试将数据作为 csv 导出到外部存储时,出现如下奇怪的错误:
Caused by: org.apache.spark.SparkException: Job aborted due to stage failure: Task 12 in stage 9.0 failed 1 times, most recent failure: Lost task 12.0 in stage 9.0 (TID 21, localhost, executor driver): org.apache.spark.SparkException: Task failed while writing rows
Caused by: java.lang.StringIndexOutOfBoundsException: offset 2124, count 3889, length 4096
py4j.protocol.Py4JJavaError: An error occurred while calling o77.csv.
: org.apache.spark.SparkException: Job aborted.
我的写入命令如下:
df.write.csv("data/out", sep="@", mode="overwrite")
我的数据在上下文中包含 ,
,因此我指定自定义分隔符 @
。
如果我设置限制 20,我可以导出 csv。意味着一个文件只命名为 part-00000-683794ef-bc5e-4566-9e2f-89dd55725571-c000.csv
。此外,如果我使用 df.write.json()
成功完成但未在 csv 中完成。
但是当我尝试输出完整的 dataFrame 时出现错误。
知道是什么原因造成的。
DataFrame 的架构:
root
|-- _c1: string (nullable = true)
|-- _c2: string (nullable = true)
|-- _c3: string (nullable = true)
|-- _c4: string (nullable = true)
|-- _c5: string (nullable = true)
Java 9 在 Spark 中还不支持(也许在 Spark3 中会支持)。人们通常在写入或读取文件时遇到很多问题。
尝试安装 java 8。让我知道它是否有效。 不要忘记更新您的 java 版本并设置所有必要的环境变量。