在cmd中运行pyspark或spark-sql,从csv数据源创建表均报以下错误:
java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$POSIX.stat(Ljava/lang/String;)Lorg/apache/hadoop/io/nativeio/NativeIO$POSIX$Stat;
经过排查是Spark环境的相关依赖之间版本不匹配出现的问题,又将Spark环境的相关依赖重新排查了下,这里梳理下整个环境搭建的过程。
Spark环境搭建
运行环境
- windows 11
- Spark 3.4.4
- Hadoop 3.3.6
- Java JDK 1.8
运行Spark需要Java JDK,并配置好JAVA_HOME变量。此外,Spark会用到HDFS和YARN,因此需要安装Hadoop。
安装Java JDK
安装后,需要配置环境变量JAVA_HOME,并添加bin目录到环境变量。
安装Hadoop
下载对应的版本后,先不要用解压软件解压,会提示报错:
Can not create symbolic link : 客户端没有所需的特权
可以使用管理员运行cmd,在Hadoop下载目录下执行:
tar zxvf hadoop-3.3.6.tar.gz
解压完毕后,设置系统变量HADOOP_HOME,并添加bin目录到环境变量。
安装winutils
winutils是由社区开发的工具,其模拟了Hadoop在Unix系统中的一些环境和命令,解决了Windows和Hadoop的兼容性问题。
因此winutils是Hadoop在Windows上安装和使用的前提条件,如果没有winutils,在Windows上使用Hadoop可能会遇到未知的问题。
地址:https://github.com/cdarlint/winutils/tree/master
下载项目文件到本地,选择对应hadoop版本中的bin目录下的hadoop.dll和winutils.exe文件拷贝到 C:\Windows\System32目录中。
安装Spark
下载解压到对应目录,然后添加环境变量:
- PYSPARK_PYTHON:路径为本地python.exe的相关路径
- SPARK_HOME:为Spark的解压目录
并添加Spark的bin目录到环境变量中。
1516

被折叠的 条评论
为什么被折叠?



