Apache spark spark.executorEnv不';似乎没有任何效果
根据Spark,有一种方法可以将环境变量传递给生成的执行器: spark.ExecuteEnv.[EnvironmentVariableName]将EnvironmentVariableName指定的环境变量添加到执行器进程。用户可以指定其中的多个来设置多个环境变量 我试图引导我的pyspark应用程序使用特定的python可执行文件(anaconda environment with numpy等),这通常是通过更改Apache spark spark.executorEnv不';似乎没有任何效果,apache-spark,environment-variables,pyspark,Apache Spark,Environment Variables,Pyspark,根据Spark,有一种方法可以将环境变量传递给生成的执行器: spark.ExecuteEnv.[EnvironmentVariableName]将EnvironmentVariableName指定的环境变量添加到执行器进程。用户可以指定其中的多个来设置多个环境变量 我试图引导我的pyspark应用程序使用特定的python可执行文件(anaconda environment with numpy等),这通常是通过更改spark env.sh中的pyspark_python变量来完成的。尽管这种
spark env.sh
中的pyspark_python
变量来完成的。尽管这种方式可行,但每次我想切换virtualenv时,向所有集群节点发送新配置看起来是一种巨大的过度杀伤力
这就是为什么我试图通过以下方式传递PYSPARK_PYTHON:
uu@e1:~$PYSPARK\u DRIVER\u PYTHON=ipython PYSPARK--conf\
spark.executenv.PYSPARK_PYTHON=“/usr/share/anaconda/bin/PYTHON”\
--主人spark://e1.local:7077
但它似乎不起作用:
[1]中的:sc.\u conf.getAll()
出[1]:
[(u'spark.executenv.PYSPARK_PYTHON',u'/usr/share/anaconda/bin/PYTHON'),
(u'spark.rdd.compress',u'True'),
(u'spark.serializer.objectStreamReset',u'100'),
(你是星火大师,你是spark://e1.local:7077'),
(u'spark.submit.deployMode',u'client'),
(u'spark.app.name',u'PySparkShell')]
[2]中:定义虚拟对象(x):
导入系统
返回sys.executable
...:
在[3]中:sc.parallelize(xrange(100),50).map(dummy).take(10)
出[3]:
['/usr/bin/python2.7',
“/usr/bin/python2.7”,
“/usr/bin/python2.7”,
“/usr/bin/python2.7”,
“/usr/bin/python2.7”,
“/usr/bin/python2.7”,
“/usr/bin/python2.7”,
“/usr/bin/python2.7”,
“/usr/bin/python2.7”,
“/usr/bin/python2.7”]
我的spark env.sh
没有配置PYSPARK_PYTHON
,因此这只是调用的默认PYTHON。一些附加信息:它是spark 1.6.0独立模式群集
我错过了一些重要的东西吗?快速浏览一下
我想他们只是在做出口
你能做什么
export PYSPARK_PYTHON=“/usr/share/anaconda/bin/PYTHON”
看看它是否适用于所有遗嘱执行人
然后就跑
PYSPARK_DRIVER_PYTHON=ipython PYSPARK快速浏览
我想他们只是在做出口
你能做什么
export PYSPARK_PYTHON=“/usr/share/anaconda/bin/PYTHON”
看看它是否适用于所有遗嘱执行人
然后就跑
PYSPARK_DRIVER_PYTHON=ipython PYSPARK如果理解正确,您希望您的驱动程序使用/usr/bin/python2.7,而执行程序使用/usr/share/anaconda/bin/PYTHON?哦,ipython,我用来启动驱动程序的实际上也是/usr/share/anaconda/bin/PYTHON。我想,我不希望在集群中保持一致,但我更喜欢偶尔在python之间切换。不确定这是否有帮助。快速浏览一下,我想他们只是在做导出,你能做导出PYSPARK_PYTHON=“/usr/share/anaconda/bin/PYTHON”看看它是否适用于所有执行者,然后运行PYSPARK_DRIVER_PYTHON=ipython pysparkIt是一个很好的捕获,先生!我认为,你应该把它作为一个答案,并得到一个投票和接受。如果理解正确,你希望你的驱动程序使用/usr/bin/python2.7,执行者使用/usr/share/anaconda/bin/python?哦,ipython,我用来启动驱动程序的实际上也是/usr/share/anaconda/bin/python。我想,我不希望在集群中保持一致,但我更喜欢偶尔在python之间切换。不确定这是否有帮助。快速浏览一下,我想他们只是在做导出,你能做导出PYSPARK_PYTHON=“/usr/share/anaconda/bin/PYTHON”看看它是否适用于所有执行者,然后运行PYSPARK_DRIVER_PYTHON=ipython pysparkIt是一个很好的捕获,先生!我认为,你应该把它作为一个答案,并获得投票&接受。