pyspark:将大型数据帧保存为外部存储上的csv时出现异常

时间:2017-11-09 09:43:25

标签: python csv dataframe pyspark export-to-csv

我在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)

1 个答案:

答案 0 :(得分:0)

Spark中尚不支持Java 9(可能在Spark3中也是如此)。人们在写作或阅读文件时遇到很多问题。

尝试安装java 8。让我知道它是否有效。 不要忘记更新您的Java版本并设置所有必要的环境变量。