无法在GCP上的数据加载集群中导入pyspark

时间:2016-09-19 15:49:15

标签: pyspark google-cloud-platform google-cloud-dataproc

我只是在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

1 个答案:

答案 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的新群集将自动开始正常工作。与此同时,您可以做以下两件事之一:

  1. 尝试恢复Dataproc 1.0 / Spark 1.6.2:

    gcloud dataproc clusters create --initialization-actions gs://dataproc-initialization-actions/jupyter/jupyter.sh \
        --image-version 1.0
    
  2. 在合并到上游主服务器之前就地尝试我的更新(并保留最新的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