CentOS中Python in worker has different version x.x than that in driver x.x异常

其实这个异常百度一下,大部分都是添加环境变量,修改conf/spark-env.sh文件,主要就是加入或修改 PYSPARK_PYTHON 和PYSPARK_DRIVER_PYTHON这两个环境变量,这都是老生常谈的问题了,在此我就不赘述了。


但我最近在使用spark远程master结点进行编程的时候,发现无论怎么做这个异常都一直存在,颇为苦恼。

首先,要明确的一点就是你的操作系统中一定存在两个版本的python才会导致这个问题。然后,于是我根据错误提示

File "/opt/spark/python/lib/pyspark.zip/pyspark/worker.py", line 175, in main

定位到对应代码,看看究竟是为什么。

以下是worker.py异常处理的源码:

def main(infile, outfile):
    try:
        boot_time = time.time()
        split_index = read_int(infile)
        if split_index == -1:  # for unit tests
            exit(-1)

        version = utf8_deserializer.loads(infile)
        if version != "%d.%d" % sys.version_info[:2]:
            raise Exception(("Python in worker has different version %s than that in " +
                             "driver %s, PySpark cannot run with different minor versions." +
                             "Please check environment variables PYSPARK_PYTHON and " +
                             "PYSPARK_DRIVER_PYTHON are correctly set.") %
                            ("%d.%d" % sys.version_info[:2], version))

······

似乎有点懂了,应该是链接错误导致的,可以在终端输入python命令,看是不是对应到异常中的前一个版本(worker),如果是的话,那把软链接重新设置成driver所需要的版本即可。

ln -sb /path/to/your/python3/bin/python3 /usr/bin/python

阿西吧,就这点破事耽误了我一下午。

猜你喜欢

转载自blog.csdn.net/danengbinggan33/article/details/80093095
今日推荐