在亚马逊网络服务的文档中,他们指定了如何激活对Spark作业()的监控,但不是python外壳作业。
使用原样的代码会给出这个错误:ModuleNotFoundError: No module named 'pyspark'
更糟糕的是,在注释掉from pyspark.context import SparkContext之后,我得到了ModuleNotFoundError: No module named 'awsglue.context'。python shell作业似乎不能访问glue上下文?
当从终端运行以下简单脚本时,它在pyspark中工作得很好:
import pyspark
sc = pyspark.SparkContext()
foo = sc.parallelize([1,2])
foo.foreach(print)
但是当在Rodeo中运行时,它会产生一个错误,其中最重要的一行是:
Exception: Python in worker has different version 2.7 than that in driver 3.5, PySpark cannot run with different minor versions
在以下链接中可以找到完整的错误输
我试图在中间层集群上运行一个PySpark作业,但是我似乎无法让它运行。我知道Mesos不支持PySpark应用的集群部署模式,需要在客户端模式下运行。我相信这就是问题所在。
当我尝试提交一个PySpark作业时,我得到了下面的输出。
... socket.hpp:107] Shutdown failed on fd=48: Transport endpoint is not connected [107]
我认为在客户端模式下运行的spark作业需要直接连接到节点,而这会被阻塞吗?
我需要更改什么配置才能在客户端模式下运行PySpark作业?
我尝试在IPython笔记本中运行Apache,遵循以下内容(以及注释中的所有建议)-
但是,当我通过以下命令运行IPython笔记本时:
ipython notebook --profile=pyspark
我知道这个错误:
Error: Must specify a primary resource (JAR or Python or R file)
如果我在外壳里运行火花放电,一切都好。这意味着我在连接火花和IPython方面有一些问题。
顺便说一下,这是我的bash_profile:
export SPARK_HOME="$HOME/spark-1.4.0"
expo
我遵循这个链接,以便为IPython创建PySpark配置文件。
00-pyspark-setup.py
# Configure the necessary Spark environment
import os
import sys
spark_home = os.environ.get('SPARK_HOME', None)
sys.path.insert(0, spark_home + "\python")
# Add the py4j to the path.
# You may need to change the version number t
为了编写一个独立的脚本,我想直接从Python启动和配置一个Spark上下文。使用PySpark的脚本,我可以通过以下方式设置驱动程序的内存大小:
$ /opt/spark-1.6.1/bin/pyspark
... INFO MemoryStore: MemoryStore started with capacity 511.5 MB ...
$ /opt/spark-1.6.1/bin/pyspark --conf spark.driver.memory=10g
... INFO MemoryStore: MemoryStore started with capacity 7.0 GB .