You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下用PySpark导出MySQL表为CSV触发Job Aborted异常

问题描述

在Windows系统中使用PySpark读取MySQL表后,尝试将DataFrame保存为CSV格式到本地D盘时持续报错。已将Scala版本调整为与spark_shell一致的2.13.8,执行代码后抛出Py4JJavaError,底层原因为java.lang.UnsatisfiedLinkError。

执行代码

import os
import sys
os.environ["PYSPARK_PYTHON"] = sys.executable
os.environ["PYSPARK_DRIVER_PYTHON"] = sys.executable
from pyspark.sql import functions as F
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("Export to CSV").getOrCreate()
df = spark.read.format("jdbc").options(
    url=mysql_url,
    driver="com.mysql.jdbc.Driver",
    dbtable=table_name,
    user=username,
    password=password).load()

df.show(10)

df.coalesce(1).write.format("csv").mode("overwrite").option("header", "true").option("compression", "uncompressed").save("D:/logs/a")

错误信息(翻译后)

Py4JJavaError
调用o40.save时发生错误。
: org.apache.spark.SparkException: 任务中止。
    at org.apache.spark.sql.errors.QueryExecutionErrors$.jobAbortedError(QueryExecutionErrors.scala:651)
    at org.apache.spark.sql.execution.datasources.FileFormatWriter$.write(FileFormatWriter.scala:288)
    ...(中间栈帧省略)
Caused by: java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
    at org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Native Method)
    at org.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:793)
    at org.apache.hadoop.fs.FileUtil.canRead(FileUtil.java:1218)
    at org.apache.hadoop.fs.FileUtil.list(FileUtil.java:1423)
    at org.apache.hadoop.fs.RawLocalFileSystem.listStatus(RawLocalFileSystem.java:601)
    ...(中间栈帧省略)
    at java.lang.Thread.run(Thread.java:748)

解决方案

  • 以管理员身份运行程序:
    Windows下Hadoop的本地IO操作需要足够权限才能访问系统目录,右键点击脚本或IDE,选择「以管理员身份运行」后再执行保存操作。
  • 禁用Hadoop原生IO支持:
    在初始化SparkSession时添加配置,绕过Windows下的原生库依赖问题:
    spark = SparkSession.builder.appName("Export to CSV") \
        .config("spark.hadoop.io.nativeio.NativeIO.Windows.access.enabled", "false") \
        .getOrCreate()
    
  • 补充Hadoop Windows原生库:
    确认Spark环境中包含Windows版本的Hadoop原生库文件(hadoop.dll、winutils.exe),将这些文件所在路径添加到系统PATH环境变量中。若缺少文件,可从适配的Hadoop发行包中提取。
  • 更换输出目录:
    避免写入系统盘根目录或受保护路径,改为写入用户个人目录,例如:
    df.coalesce(1).write.format("csv").mode("overwrite").option("header", "true").option("compression", "uncompressed").save("C:/Users/你的用户名/Documents/output_csv")
    

内容的提问来源于stack exchange,提问作者user21323408

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 05:37:28