在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 Downloads | Oracle

安装后,需要配置环境变量JAVA_HOME,并添加bin目录到环境变量。

安装Hadoop

地址:Apache 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

地址:Downloads | Apache Spark

下载解压到对应目录,然后添加环境变量:

  • PYSPARK_PYTHON:路径为本地python.exe的相关路径
  • SPARK_HOME:为Spark的解压目录

并添加Spark的bin目录到环境变量中。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐