【问题标题】:Getting "An error occurred while calling o58.csv" error while writing a spark dataframe into a csv file将 spark 数据帧写入 csv 文件时出现“调用 o58.csv 时发生错误”错误
【发布时间】:2022-01-03 02:30:55
【问题描述】:

使用df.write.csv 尝试将我的 spark 数据帧导出到 csv 文件后,我收到以下错误消息:

 ~\AppData\Local\Programs\Python\Python39\lib\site-packages\py4j\protocol.py
 in get_return_value(answer, gateway_client, target_id, name

     324             value = OUTPUT_CONVERTER[type](answer[2:], gateway_client)
     325             if answer[1] == REFERENCE_TYPE:
     326                 raise Py4JJavaError(
     327                     "An error occurred while calling {0}{1}{2}.\n".
     328                     format(target_id, ".", name), value)
 
 Py4JJavaError: An error occurred while calling o58.csv. :
 org.apache.spark.SparkException: Job aborted.

欢迎任何帮助,因为我无法理解这里发生了什么,尽管这看起来很简单。

编辑:发布整个代码

from pyspark.sql.types import *
import pandasql as sqldf
import pyspark
from pyspark.sql import SparkSession
spark= SparkSession.builder.appName('SIAF').getOrCreate()
spark.conf.set('spark.sql.repl.eagerEval.enabled', True)
sc = spark.sparkContext
spark

spark_df=spark.read.csv(r'C:\Users\...\SIAF_2.csv',sep = ',', header=True, inferSchema=True)

df = spark_df.select(
    [
        "MENU",
        "NOM_SISTEMA",
        "DSC_GRP_USUARIO",
        "NOM_USUARIO",
        "NOM_FUNCIONARIO",
        "IND_ATIVO",
        "DAT_DESLIGAMENTO",
    ]
).where(
    (spark_df["MENU"].isNotNull())
    & (spark_df["IND_ATIVO"] == "S")
    & (spark_df["DAT_DESLIGAMENTO"].isNull())
).sort( 
    spark_df["MENU"], ascending=True)

df.show(5)

df.write.csv(
    "C:/Users/.../spark_test", mode="overwrite", sep=",", header=True
    )

【问题讨论】:

  • 在写之前,如果你打电话给df.show(),可以吗?如果您粘贴完整的代码会更好。
  • 是的,df.show() 工作得很好。使用 df.write.csv() 将 df 写入 csv 文件时出现此错误。
  • 当您尝试写入时,该文件未在其他应用程序中打开,对吧?你的 Java 版本是多少?
  • 你的目标路径是否存在?它是否有权在该路径上写入文件..您可以更改您正在写入的路径并查看吗?
  • Java 版本:“1.8.0_311”我直接从我的下载文件夹打开文件,因为我试图避免任何可能与通过 Onedrive 使用共享文件夹有关的错误。 AFAIK,我有权在我试图将 .csv 文件保存到的文件夹中写入/读取。我已经尝试改变路径但没有成功

标签: python dataframe csv pyspark


【解决方案1】:

问题出在 Java SDK(或 JDK)版本上。目前 pyspark 仅支持 JDK 8 和 11 版本(最新的是 17) 要下载 JDK 的旧版本,请前往 https://www.oracle.com/br/java/technologies/javase/jdk11-archive-downloads.html 并下载版本 11(注意:您需要提供有效的电子邮件和密码创建一个 Oracle 帐户)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 2018-11-30
    • 2017-11-08
    • 2021-01-17
    • 2017-04-15
    相关资源
    最近更新 更多