看完这个视频后,我设置了Spark和HDFS。唯一的区别是我是在服务器(ubuntu)上做的,而不是在VM上。
在服务器上,一切工作完美。现在我想用PySpark从我的本地机器(Windows)访问它。
from pyspark.sql import SparkSession
spark = SparkSession.builder.master("spark://ubuntu-spark:7077").appName("test").getOrCreate()
spark.stop()
但是,这里我得到以下错误消息:
22/11/12 10:38:35 WARN Shell: Did not find winutils.exe: java.io.FileNotFoundException:
java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset. -see
https://wiki.apache.org/hadoop/WindowsProblems
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use
setLogLevel(newLevel).
22/11/12 10:38:35 WARN NativeCodeLoader: Unable to load native-hadoop library for your
platform... using builtin-java classes where applicable
22/11/12 10:38:37 WARN StandaloneAppClient$ClientEndpoint: Failed to connect to master
ubuntu-spark:7077
org.apache.spark.SparkException: Exception thrown in awaitResult: ...
根据其他帖子,DNS应该是正确的。我从Spark Master网站(端口8080)得到这个:
URL: spark://ubuntu-spark:7077
Alive Workers: 1
Cores in use: 2 Total, 0 Used
Memory in use: 6.8 GiB Total, 0.0 B Used
Resources in use:
Applications: 0 Running, 0 Completed
Drivers: 0 Running, 0 Completed
Status: ALIVE
端口打开。我也不明白下面的信息:"HADOOP_HOME和hadoop.home.dir是unset."服务器端已配置Hadoop。为什么我要在本地做同样的事情呢?我的期望是我可以像使用API一样使用Spark,还是我错了?
非常感谢你的帮助。如果您需要配置文件,我可以提供给您。Hadoop不应该是必需的代码,因为你不使用HDFS,但日志说它正在寻找你的Windows机器这些设置。
DNS需要在您的windows机器和服务器运行的任何地方之间工作(VM仍然可以是服务器,因此不清楚您在哪里运行它)。从ping spark-master
开始调试以检查,或者您也应该能够从Windows浏览器实例中打开spark-master:8080
。
如果你只想运行Spark代码,而不在乎它是不是分布式的,你可以在Windows上使用Docker - https://github.com/jupyter/docker-stacks
或在本地为相同的
设置Pycharm