将Pyspark作业从Windows驱动程序提交到Ubuntu Spark群集时出现问题

时间:2019-05-28 17:12:08

标签: python windows apache-spark ubuntu pyspark

我无法从Windows驱动程序计算机(Win 10)向在Ubuntu上运行的简单Spark集群提交Pyspark作业。 已经有好几篇文章试图回答这个问题,最引人注目的是ThatDataGuy here上的一篇文章,但没有一篇有帮助。

每次我尝试从Windows框中向远程主机提交简单的wordcount.py示例时,都会出现以下错误:

Cannot run program 'C:\apps\Python\3.6.6\python.exe': error=2, No such file or directory

这是由Py4J jar生成的Java IOException。 我的Spark群集是通过Vagrant在VirtualBox设置中的简单Master,1 Worker设置。所有机器(我的Spark驱动程序便携式计算机和2个VM(主服务器/工作者)都具有相同的Spark 2.4.2,Python 3.6.6和Scala 12.8。请注意,Scala程序针对远程集群使用spark-submit 此外,代码示例在直接在Master节点或Worker节点上运行时也能正常运行,仅当我尝试将Windows笔记本电脑用作Pyspark中的Spark驱动程序时,针对Ubuntu Spark集群,就会出现此问题。它总是返回上述错误。

似乎Py4j正在尝试从Windows驱动程序的python路径使用或实例化Python,这当然是我的Linux集群看不到的。我已经在群集节点中将Pyspark Python路径设置为其他值。我已经在spark-defaults.conf和spark-env.sh文件的节点环境变量(通过PYSPARK_PYTHON)中设置了PYSPARK_DRIVER_PYTHON.bashrc。所有值都指向/ usr / local / bin / python3,因为在主节点和工作节点上都安装了Python 3.6.6。

我也(只是预感)使用别名“ python”来指向节点中的/ usr / local / bin / python3,然后更改了Windows python快捷方式以提取相同的Python版本。没运气,但我正在抓稻草。 ; /错误仅更改为:

Cannot run program 'python': error=2, No such file or directory

我确实看到了一篇文章,其中Py4J 0.10.7库不支持Python 3.7,因此这使我下降到了Python 3.6。之后错误仍然保持不变。

我唯一没有做的就是尝试在Vagrant中设置另一个共享/同步的文件夹,回到我的Windows Python安装,然后在远程PYSPARK设置中使用/ vagrant / shared / python / whatever。尽管考虑到我正在处理Windows和Linux Python版本(全部3.6.6),但不知道这是否行得通。啊。 :/

有什么想法吗?我有一台Windows 10机器,我喜欢在那里进行Python开发。我也有64GB的RAM,所以我想使用它。请不要让我切换到Scala! ;)

-Pyspark在本地运行正常

spark-submit C:\apps\Spark\spark-2.4.2\examples\src\main\python\wordcount.py C:\Users\sitex\Desktop\p_and_p_ch1.txt

-使用IOException呼叫master时,Pyspark失败

spark-submit --master spark://XXX.XX.XXX.XXX:7077 C:\apps\Spark\spark-2.4.2\examples\src\main\python\wordcount.py C:\Users\sitex\Desktop\p_and_p_ch1.txt

0 个答案:

没有答案