我在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)
答案 0 :(得分:0)
Spark中尚不支持Java 9(可能在Spark3中也是如此)。人们在写作或阅读文件时遇到很多问题。
尝试安装java 8。让我知道它是否有效。 不要忘记更新您的Java版本并设置所有必要的环境变量。