我在MacBook上本地启动了PySpark shell,通过以下方式连接到远程服务器上的主节点:
$ PYSPARK_PYTHON=python3 /vagrant/spark-2.0.0-bin-hadoop2.7/bin/pyspark --master spark://[server-ip]:7077
我尝试从网站上执行简单的Spark示例:
from pyspark.sql import SparkSession
spark = SparkSession \
.builder \
.appName("Python Spark SQL basic example") \
.config("spark.some.config.option", "some-value") \
.getOrCreate()
df = spark.read.json("/path/to/spark-2.0.0-bin-hadoop2.7/examples/src/main/resources/people.json")
我收到了错误
初次工作没有接受任何资源;检查您的群集UI 确保工人注册并拥有足够的资源
我的服务器和本地计算机上都有足够的内存,但我一次又一次地遇到这个奇怪的错误。我的Spark集群有6G,我的脚本只使用4个内核,每个节点有1G内存。
[
我已经用Google搜索了这个错误并试图设置不同的内存配置,也禁用了两台机器上的防火墙,但它对我没有帮助。我不知道如何解决它。
有人遇到同样的问题吗?有什么想法吗?
答案 0 :(得分:4)
您正在以客户端模式提交申请。这意味着在本地计算机上启动了驱动程序进程。
执行Spark应用程序时,所有计算机都必须能够相互通信。很可能您的驱动程序进程无法从执行程序访问(例如,它使用私有IP或隐藏在防火墙后面)。如果是这种情况,您可以通过检查执行程序日志来确认(转到应用程序,选择状态为EXITED
的工作人员并检查stderr
。您应该“看到执行者因为失败而失败” org.apache.spark.rpc.RpcTimeoutException
)。
有两种可能的解决方案: