运行pyspark的时候报错了

img


最近在学习python,在做pyspark练习的时候遇到这个问题WARN NativeCodeLoader: Unable to load native-hadoop library for your platform using builtin-java classes where applicable
但是我看B站的视频,好像老师也没下载什么hadoop,就是找到python.exe的路径代码加上(如图)就可以了

我python版本是3.10.11,但是环境变量好像没找到python,python需要像java那样配置环境变量吗?是这个问题导致的还是因为啥

img

相信我,1.控制桌面卸载python。2.重新安装,安装时候记得勾选上 add python 3.10.11 to path 保证好使

img

一般在软件安装的时候是自己配置的,单纯从你的上面看,没有环境

img

img

需要配置的

关于错误

警告
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform。这仅仅是一个警告,找不到平台(Windows)相关依赖包,所以用了java提供的包替代。
这个是不会影响结果的,可以直接忽略。而且,windows平台没有解决方案。因为啊,hadoop这一套本身就是基于unix开发的,其他平台支持和兼容性本身就有些问题。

异常
ERROR ShutdownHookManager: Exception while deleting Spark temp dir....。这是一个异常,删除临时文件夹失败了。
出现这个问题的原因有两个:

  1. HADOOP_HOME环境变量没有配置。
  2. 权限问题。程序没有删除临时文件夹的权限。有两个解决方案吧,一个是提升程序的运行权限(用管理员身份执行脚本);一个是执行winutils.exe chmod -R 777 C:\Users\415387\AppData\Local\Temp\。至于winutil.exe你肯定知道在哪里;目录替换成你出错的那个。

总结

整体而言,这两个问题好像都不会影响结果,是可以正常出结果的。你忽略它们也是可以的。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    根据问题描述来看,可能是缺少本地的Hadoop库导致的。可以尝试以下解决方案:

    1. 确认是否已经安装了Hadoop

    如果尚未安装Hadoop,则需要先安装并配置Hadoop环境。可以参考参考资料中的段落3中的hadoop的安装教程。

    1. 配置环境变量

    将Hadoop的安装路径添加到系统环境变量中,可以参考参考资料中的段落0中的环境变量配置方式。确保SPARK_HOME、JAVA_HOME和PATH等系统环境变量正确设置。

    1. 确认Python版本并配置环境变量

    当前使用的是Python 3.10.11版本,需要确保安装正确并配置对应的环境变量。

    可以参考参考资料中的段落1中的Linux操作系统中安装python3并配置环境变量教程进行配置。

    1. 将Hadoop库添加到PySpark环境中

    在PySpark中,可以通过修改$SPARK_HOME/conf/spark-env.sh文件来添加环境变量。也可以通过代码在运行时添加环境变量:

    from pyspark import SparkConf,SparkContext conf = SparkConf().setAppName("APPName").setMaster("local").set("spark.executor.memory","2g") sc =SparkContext(conf=conf, pyFiles=['/local/path/to/hadoop/native/lib/libhadoop.so'])

    其中,'/local/path/to/hadoop/native/lib/libhadoop.so'需要根据本地环境和Hadoop的版本来进行修改。

    1. 检查PySpark运行配置

    在运行PySpark代码之前,需要确保已经正确地配置了PySpark,可以参考参考资料中的段落5中的PySpark安装和PySpark API和数据结构教程进行配置。

    综上所述,如果上述解决方案均不能解决问题,可能需要更深入的调试和问题诊断,可以尝试打印出完整的错误提示并进行分析,或者搜索相关的错误信息进行排查。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

两个方法,有Hadoop和没有Hadoop
有Hadoop

其实,warn级别的警告,对后续操作,比如hadoop fs和hive等不影响。如果不介意的同学可以不处理这个警告,或者在日志内取消该方面的警告,具体如下:
进入到hadoop/etc/hadoop目录,找到log4j.properties文件,添加以下命令。

log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR


python安装的时候又一个界面 需要勾选 Add To Path,默认是没有勾选,可能你再安装过程中没有勾选,所以导致没有将python添加到环境变量中去,建议你现在根据网上的教程,收到配置下python的环境变量。之后打开cmd输入python -V可以验证是否已经配置成功。
WARN NativeCodeLoader: Unable to load native- 这个错误,应该是你的dfs系统没有打开,使用以下命令开启hdfs系统:
start-dfs.sh