我已经安装了 pyspark,但没有单独安装任何 hadoop 或 Spark 版本。
显然在 Windows 下 pyspark 需要访问 Hadoop 的 winutils.exe 来执行某些操作(例如将文件写入磁盘)。当pyspark想要访问winutilis.exe时,它会在HADOOP_HOME环境变量(用户变量)指定的文件夹的bin目录中查找它。因此,我将 winutils.exe 复制到 pyspark 的 bin 目录(.\site-packages\pyspark\bin
)中,并将 HADOOP_HOME 指定为 .\site-packages\pyspark\
。这解决了获取错误消息的问题:无法在 hadoop 二进制路径中找到 winutils 二进制文件
。
但是,当我使用 pyspark 启动 Spark session 时,我仍然收到以下警告:
WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
安装 Hadoop,然后为 HADDOP_HOME 指定其安装目录确实可以防止出现警告。是否需要安装特定的 hadoop 版本以使 pyspark 不受限制地工作?
最佳答案
Hadoop安装不是强制性的。
Spark只是分布式计算引擎。
Spark 仅提供计算,没有任何存储。 但是 Spark 集成了各种各样的存储系统,如 HDFS、Cassandra、HBase、Mongo DB、本地文件系统等......
Spark 设计为在 Spark、Mesos、YARN、Local、Kubernetes 等各种资源管理平台上运行......
PySpark 是 Spark 之上的 Python API,用于在 Python 中开发 Spark 应用程序。所以Hadoop的安装不是强制的。
注意:只有在 YARN 上运行 Pyspark 应用程序或从 HDFS/Hive/HBase 或两者访问 Pyspark 应用程序的输入/输出时才需要安装 Hadoop。
关于您发布的警告是正常的。所以忽略它。
关于python - 我是否需要安装 Hadoop 才能使用 Pyspark 的所有功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60832217/