[英]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.