Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 如何强制python版本在从GCPDataproc集群派生的datalab实例中同步?_Google Cloud Platform_Pyspark_Google Cloud Dataproc - Fatal编程技术网

Google cloud platform 如何强制python版本在从GCPDataproc集群派生的datalab实例中同步?

Google cloud platform 如何强制python版本在从GCPDataproc集群派生的datalab实例中同步?,google-cloud-platform,pyspark,google-cloud-dataproc,Google Cloud Platform,Pyspark,Google Cloud Dataproc,我已经使用image 1.2在GCP中创建了一个Dataproc集群。我想从数据实验室笔记本上运行Spark。如果我保持Datalab笔记本运行Python2.7作为其内核,那么这很好,但是如果我想使用Python3,我会遇到一个小的版本不匹配。我将在下面演示与Datalab脚本不匹配的情况: ###配置 导入系统,操作系统 sys.path.insert(0,“/opt/panera/lib”) os.environ['PYSPARK_PYTHON']='/opt/conda/bin/PYTH

我已经使用image 1.2在GCP中创建了一个Dataproc集群。我想从数据实验室笔记本上运行Spark。如果我保持Datalab笔记本运行Python2.7作为其内核,那么这很好,但是如果我想使用Python3,我会遇到一个小的版本不匹配。我将在下面演示与Datalab脚本不匹配的情况:

###配置
导入系统,操作系统
sys.path.insert(0,“/opt/panera/lib”)
os.environ['PYSPARK_PYTHON']='/opt/conda/bin/PYTHON'
os.environ['PYSPARK\u DRIVER\u PYTHON']='/opt/conda/bin/PYTHON'
将google.datalab.storage导入为存储
从io导入字节io
spark=SparkSession.builder\
.enableHiveSupport()\
.config(“hive.exec.dynamic.partition”,“true”)\
.config(“hive.exec.dynamic.partition.mode”,“非严格”)\
.config(“mapreduce.fileoutputcommitter.marksuccessfuljobs”,“false”)\
.getOrCreate()\
sc=spark.sparkContext
###导入库
从pyspark.mllib.tree导入DecisionTree,DecisionTreeModel
从pyspark.mllib.util导入MLUtils
从pyspark.mllib.regression导入标签点
###小例子
数据=[
标签点(0.0,[0.0]),
标签点(1.0,[1.0]),
标签点(1.0,[2.0]),
标签点(1.0,[3.0])
]
toyModel=DecisionTree.trainClassifier(sc.parallelize(data),2,{})
打印(toyModel)
错误:

Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.runJob.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 0.0 failed 4 times, most recent failure: Lost task 0.3 in stage 0.0 (TID 3, pan-bdaas-prod-jrl6-w-3.c.big-data-prod.internal, executor 6): org.apache.spark.api.python.PythonException: Traceback (most recent call last):
  File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/worker.py", line 124, in main
    ("%d.%d" % sys.version_info[:2], version))
Exception: Python in worker has different version 3.6 than that in driver 3.5, PySpark cannot run with different minor versions.Please check environment variables PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON are correctly set.
其他初始化脚本: gs://dataproc初始化操作/cloud-sql-proxy/cloud-sql-proxy.sh gs://dataproc初始化操作/datalab/datalab.sh
…以及加载一些必要库和实用程序的脚本数据实验室中的Python 3内核使用的是Python 3.5而不是Python 3.6

您可以尝试在Datalab内部设置一个3.6环境,然后为其安装一个新的kernelspec,但只需将Dataproc集群配置为使用Python3.5可能更容易


设置群集以使用3.5的说明如下

,因此这很有趣。这在技术上解决了这个问题,使用Python3.5生成了一个包含工作节点和驱动节点的dataproc集群。但是,现在不再安装numpy,我的其他初始化脚本也不兼容。这个答案很可能会得到投票。。。但在结束这个问题之前,我想先想一想接下来的步骤。您是使用Dataproc github repo中的其他init操作,还是自定义操作?知道这些不兼容是否与3.5和3.6之间的根本差异有关,或者只是硬编码版本假设的问题吗?@DennisHuo,是的,我们正在使用其他init操作,但据我所知,这些都不是特定于python版本的。我将把numpy问题提交给我们这边的一位数据工程师,他会更清楚地知道该实用程序中是否有什么东西导致了该问题。