我在看完这个video之后设置了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都是未设置的。”Hadoop是在服务器上配置的。为什么我要在本地再次做同样的事情呢?我的期望是我可以像API一样使用Spark还是我错了?
非常感谢您的帮助。如果您需要任何配置文件,我可以提供。
1条答案
按热度按时间nnsrf1az1#
由于您没有使用HDFS,因此Hadoop对于显示的代码应该不是必需的,但日志显示它正在您的 *Windows机器 * 上查找这些设置。
DNS需要在你的Windows机器和你的服务器运行的地方之间工作(一个VM仍然可以是服务器,所以不清楚你在哪里运行它)。开始调试
ping spark-master
来检查,或者你也应该能够从Windows浏览器示例打开spark-master:8080
。如果你只想运行Spark代码,而不关心它是否是分布式的,你可以在Windows上使用Docker-https://github.com/jupyter/docker-stacks
或者在本地为相同的