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

Windows11下Spark写入Parquet遇Py4JJavaError问题求助

Windows 11下Spark写入Parquet时java.lang.UnsatisfiedLinkError的解决建议
  • 检查Java与Spark版本兼容性

    • 优先选用OpenJDK 8或11,确保和你的Spark版本匹配(如Spark 3.x适配Java 8/11,Spark 2.x仅适配Java 8)。
    • 验证环境变量:打开命令行执行java -version和javac -version,确认版本一致,且JAVA_HOME指向无空格的Java安装路径(例如C:\Java\jdk1.8.0_381,避免使用带空格的Program Files目录)。
  • 调整Spark临时目录与输出路径权限

    • 手动指定Spark临时目录,避免系统临时目录的权限限制:
      import os
      os.environ['SPARK_LOCAL_DIRS'] = r'C:\SparkTemp'  # 提前创建该文件夹并确保读写权限
      
    • 确保p_home_sales输出路径所在目录具备读写权限,不要将输出目录放在系统保护目录(如C:\Program Files)下。
  • 统一PySpark的Python环境配置

    • 同时设置驱动端和执行端的Python路径,避免环境不一致:
      import os
      os.environ['PYSPARK_DRIVER_PYTHON'] = r'C:\Users\Adam\anaconda3\python.exe'
      os.environ['PYSPARK_PYTHON'] = r'C:\Users\Adam\anaconda3\python.exe'
      
    • 确认Anaconda环境中pyspark和py4j包的版本与Spark版本一致,可通过pip list查看并调整。
  • 修复Windows本地库依赖

    • 下载与Spark版本匹配的winutils.exe,放入Spark安装目录的bin文件夹中。
    • 设置HADOOP_HOME环境变量指向你的Spark安装目录:
      os.environ['HADOOP_HOME'] = r'C:\spark-3.3.0-bin-hadoop3'  # 替换为你的Spark实际路径
      
  • 用极简代码排查问题

    • 先运行测试代码验证写入功能是否正常,排除业务数据的干扰:
      from pyspark.sql import SparkSession
      spark = SparkSession.builder.appName("TestParquetWrite").getOrCreate()
      test_df = spark.createDataFrame([(1, 2020), (2, 2021)], ["id", "date_built"])
      test_df.write.partitionBy('date_built').parquet('test_parquet', mode='overwrite')
      
    • 若测试代码成功,再回到原业务数据排查字段类型、数据格式等问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 20:12:44