当前位置: 首页 > 知识库问答 >
问题:

Pyspark Py4JJavaError在创建增量表时出错

姚洲
2023-03-14

这是在jupyter笔记本上运行的pyspark代码。

import pyspark
from delta import *
builder = pyspark.sql.SparkSession.builder.appName("MyApp") \
         .config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension") \
  
         .config("spark.sql.catalog.spark_catalog",
         "org.apache.spark.sql.delta.catalog.DeltaCatalog")
spark = configure_spark_with_delta_pip(builder).getOrCreate()

Py4JJavaError:调用None时出错。组织。阿帕奇。火花应用程序编程接口。JAVAJavaSparkContext.:JAVAlang.IllegalAccessError:课堂组织。阿帕奇。火花存储StorageUtils$(在未命名模块@0x30cb5b99中)无法访问sun类。尼奥。DirectBuffer(在模块java.base中),因为模块java。base不导出sun。尼奥。连接至未命名模块@0x30cb5b99

  • delta spark=1.1.0
export HADOOP_HOME=/opt/hadoop-2.8.0
export SPARK_HOME=/opt/spark-3.2.0-bin-hadoop3.2
export PATH=$SPARK_HOME/bin:$PATH
export PYSPARK_PYTHON=python3
export PYSPARK_DRIVER_PYTHON="jupyter"
export PYSPARK_DRIVER_PYTHON_OPTS="notebook"

共有1个答案

蒋正平
2023-03-14

注意:我的英语很差,我使用deepl。com来翻译我的母语文章,我尝试使用尽可能多的代码。

使用pip或conda安装pyspark3.1和pyspark3.2会出现一些问题,原因我无法探索,解决方案如下。

  1. 安装python 3.8和java 8。

建议使用anaconda或miniconda安装python 3.8和jupyter notebook,并安装JDK 8(https://www.oracle.com/java/technologies/downloads/#java8),正如spark 3.2.1文档所说:“spark在Java 8/11、Scala 2.12/2.13、Python 3.6和R 3.5上运行。从spark 3.2.0开始,Python 3.6支持已被弃用。从spark 3.2.0开始,8u201之前的Java 8支持已被弃用。对于Scala API,spark 3.2.1使用Scala 2.12。您需要使用兼容的Scala版本(2.12.x).对于Python 3.9,由于Apache Arrow中支持的Python版本,Arrow优化和UDF可能无法工作。请参阅最新的Python兼容性页面。对于Java11,-Dio。内蒂。Apache Arrow库还需要tryReflectionSetAccessible=true。这就阻止了java。不支持运行例外:太阳。杂项。不安全或java。尼奥。指挥部。(long,int)在Apache Arrow内部使用Netty时不可用。"

安装py4j和pyrow

conda安装py4j pyarrow

如果你安装了pyspark,请卸载。从https://spark.apache.org/downloads.html下载火花文件并解压缩,将pyspark文件夹从Spark文件夹中的python目录复制到conda包目录(例如,C:\User\wjh\minicon da3\Lib\site-包)。

最后,我不熟悉Linux,你的.bash_profile的问题可能是PYSPARK_PYTHON的值,不需要设置PYSPARK_DRIVER_PYTHON和PYSPARK_DRIVER_PYTHON_OPTS,除非你想在命令中输入pyspark后打开笔记本。但这样你就无法访问交互式。

 类似资料:
  • 下面是我创建的表格。 创建嵌套表时出现以下错误。 ORA-02320:为嵌套表列odetails\u ntab ORA-25175创建存储表失败:找不到主键约束02320。00000-“为嵌套表列%s创建存储表失败”*原因:为指定的嵌套表列创建存储表时出错*操作:有关更多详细信息,请参阅下面的消息。如果他们描述的情况能够得到纠正,那么就这样做;否则请与Oracle支持部门联系。 获取第9行ORA-

  • 这个sql查询在执行时给了我一个错误。我不明白问题出在哪里。请在这里帮助我 您的SQL语法有错误;请查看与您的MariaDB服务器版本相对应的手册,以了解在第1行使用近“-2453852243(proj\u id VARCHAR(256)NOT NULL PRIMARY KEY,title VARCHAR(256),mento”的正确语法

  • 问题内容: 我想为我创建的每个对象创建一个唯一的ID-这是类: 我想拥有一个self.ID,它会在每次创建对该类的新引用时自动递增,例如: 我知道我可以引用resource_cl,但是我不确定如何从那里继续… 问题答案: 您是否知道python中的id函数,可以使用它代替您的反思想吗?

  • 我正在terraform中创建具有以下模式的dynamodb表: 地形代码 并获得以下错误:aws_dynamodb_table。: AWS错误创建DynamoDB表:验证异常:检测到1个验证错误:值'KEYS-ONLY'在'global二级Indexes.1.member.projection.projection类型'未能满足约束:成员必须满足枚举值集:[ALL,包括,KEYS_ONLY] 这

  • 我正在用MySQL数据库构建一个django应用程序。当我第一次运行“Python Manage.py Migrate”时,一些表创建得很好,然后出现一些错误。引出的错误是: 完整的回溯是: