簡體   English   中英

將 spark dataframe 寫入 csv 文件時出現“調用 o58.csv 時出錯”錯誤

[英]Getting "An error occurred while calling o58.csv" error while writing a spark dataframe into a csv file

使用df.write.csv嘗試將我的 spark dataframe 導出到 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
    )

問題在於 Java SDK(或 JDK)版本。 Currently pyspark only supports JDK versions 8 and 11 (the most recent one is 17) To download the legacy versions of JDK, head to https://www.oracle.com/br/java/technologies/javase/jdk11-archive-downloads .html並下載版本 11(注意:您需要提供有效的電子郵件和密碼才能創建 Oracle 帳戶)

我有同樣的錯誤。 但是,我找到了一個主題並解決了我的問題。 在我的例子中,我在站點中下載了正確版本的 winutils: https://github.com/cdarlint/winutils在文件夾bin我下載了hadoop.dll並放入 winutils.exe 的相同路徑例如“C :\Spark\spark-3.2.1-bin-hadoop3.2\bin"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM