我只是在Google Cloud Platform上设置了一个群集来运行一些pyspark作业。 最初我使用ipython.sh(来自github存储库)作为集群的初始化脚本。这允许集群很好地启动,但是当尝试在Ipython笔记本中导入pyspark时,我得到了“无法导入名称累加器”错误。
经过一番搜索后,我认为这与pyspark的安装路径没有包含在我的Python路径中有关,所以我删除了我的集群并希望使用jupyter.sh创建一个新的,作为初始化脚本
然而,现在我的群集根本不会启动,我收到错误。 检查日志“dataproc-initialization-script-0_output”它只是说:
/ usr / bin / env:bash :没有这样的文件或目录
关于我在这里缺少什么的想法?
修改
我让群集从gs开始使用公共初始化脚本://dataproc-initialization-actions/jupyter/jupyter.sh
然而,在尝试在pyspark笔记本中加载pyspark时,我仍遇到同样的问题, 当我尝试“从pyspark导入SparkConf”这样的东西 我得到错误(奇怪的是,如果我第二次运行相同的导入,我会得到一个不同的错误。)
现阶段的任何反馈意见?
这是我笔记本的输出: html notebook output
答案 0 :(得分:2)
创建Dataproc的最新Jupyter初始化操作是为了定位Dataproc --image-version 1.0
,因此将包含Spark 2.0.0的默认版本更改为1.1
似乎已经默默地破坏了PySpark内核(不幸的是而不是在部署期间出错,PySpark内核无法创建正确的Spark环境。)
在Dataproc 1.1即将成为默认值的同时,实际上是did send a pull request的慷慨贡献者,但在审核期间,Dataproc团队希望重构脚本以更好地进行未来验证,而无需明确保留内核配置的独立分支
我继续前进并掀起了refactoring pull request,它允许基本内核生成器对Dataproc 1.0和Dataproc 1.1起作用。一旦合并,使用标准gs://dataproc-initialization-actions/jupyter/jupyter.sh
的新群集将自动开始正常工作。与此同时,您可以做以下两件事之一:
尝试恢复Dataproc 1.0 / Spark 1.6.2:
gcloud dataproc clusters create --initialization-actions gs://dataproc-initialization-actions/jupyter/jupyter.sh \
--image-version 1.0
在合并到上游主服务器之前就地尝试我的更新(并保留最新的Dataproc 1.1 + Spark 2.0.0):
gcloud dataproc clusters create --initialization-actions gs://dataproc-initialization-actions/jupyter/jupyter.sh \
--metadata INIT_ACTIONS_REPO=https://github.com/dennishuo/dataproc-initialization-actions.git,INIT_ACTIONS_BRANCH=dhuo-fix-jupyter-spark2