【问题标题】:EMR Zeppelin removing DepInterpreterEMR Zeppelin 移除 DepInterpreter
【发布时间】:2017-08-19 23:23:39
【问题描述】:

我在 emr-5.4.0 集群上运行 zeppelin 0.7.0。我正在使用默认设置启动集群。 %spark.dep 解释器没有被 EMR 配置。

我已经从下面编辑了文件/etc/zeppelin/conf/interpreter.json

"2ANGGHHMQ": {
  "id": "2ANGGHHMQ",
  "name": "spark",
  "group": "spark",
  "properties": {
    "spark.yarn.jar": "",
    "zeppelin.spark.printREPLOutput": "true",
    "master": "yarn-client",
    "zeppelin.spark.maxResult": "1000",
    "spark.app.name": "Zeppelin",
    "zeppelin.spark.useHiveContext": "true",
    "args": "",
    "spark.home": "/usr/lib/spark",
    "zeppelin.spark.concurrentSQL": "false",
    "zeppelin.spark.importImplicit": "true",
    "zeppelin.pyspark.python": "python",
    "zeppelin.dep.localrepo":"/usr/lib/zeppelin/local-repo"
  },
  "interpreterGroup": [
    {
      "class": "org.apache.zeppelin.spark.SparkInterpreter",
      "name": "spark"
    },
    {
      "class": "org.apache.zeppelin.spark.PySparkInterpreter",
      "name": "pyspark"
    },
    {
      "class": "org.apache.zeppelin.spark.SparkSqlInterpreter",
      "name": "sql"
    }
  ],
  "option": {
    "remote": true,
    "port": -1,
    "perNoteSession": false,
    "perNoteProcess": false,
    "isExistingProcess": false
  }
}

我必须手动添加以下内容并重新启动 zeppelin:

{
  "class":"org.apache.zeppelin.spark.DepInterpreter",
  "name": "dep"
}

有没有办法让 EMR 使用默认的 zeppelin 设置(而不是删除此配置)?

更新

谁能解释一下为什么我今天早上刚刚创建的集群,通过克隆原始集群,具有完全不同的配置?

"interpreterGroup": [
    {
      "name": "spark",
      "class": "org.apache.zeppelin.spark.SparkInterpreter",
      "defaultInterpreter": false,
      "editor": {
        "language": "scala",
        "editOnDblClick": false
      }
    },
    {
      "name": "pyspark",
      "class": "org.apache.zeppelin.spark.PySparkInterpreter",
      "defaultInterpreter": false,
      "editor": {
        "language": "python",
        "editOnDblClick": false
      }
    },
    {
      "name": "sql",
      "class": "org.apache.zeppelin.spark.SparkSqlInterpreter",
      "defaultInterpreter": false,
      "editor": {
        "language": "sql",
        "editOnDblClick": false
      }
    }
  ]

【问题讨论】:

  • 感谢您分享此手动方法。我认为这是一个主要的疏忽,没有这个解释器,我们怎么能添加外部包?我不确定 AWS 认为 Zeppelin 没有这种能力会有什么用处。
  • 在这个页面community.hortonworks.com/questions/41537/…有一个建议可以使用local.repo来存放jar文件。我不确定这到底是如何工作的,是否需要将依赖项的路径添加到 Spark(或其他)解释器,或者是否只需将 jar 放在本地 repo 中就足以将其导入您的代码

标签: amazon-emr apache-zeppelin


【解决方案1】:

根据 AWS,克隆集群只会克隆基本配置,而不是您在创建集群后所做的更改。此外,EMR 中没有配置 API 允许您更改 Zeppelin 的 interpreter.json 文件,因此目前唯一的方法是手动更改配置。

Zeppelin 似乎确实有一组 REST APIs 允许您更改解释器设置。特别是this API 端点,它允许您创建解释器设置。但是,这似乎不适用于以下有效负载:

POST : http://[zeppelin-server]:[zeppelin-port]/api/interpreter/setting

Payload:

{
  "name": "dep",
  "group": "spark",
  "properties": {},
  "interpreterGroup": [
    {
       "class":"org.apache.zeppelin.spark.DepInterpreter",
       "name": "dep",
       "defaultInterpreter": true
    }
  ],
  "dependencies": []
}

因此,目前唯一的选择是手动更改interpreter.json。如果上述端点正常工作,您可以按照here 的说明将其添加到集群创建步骤中。

【讨论】:

  • 使用上述有效负载运行 curl -vX POST http://localhost:8890/api/interpreter/setting -d @payload.json --header "Content-Type: application/json" 可在 EMR 集群上运行。它将以CREATING 状态响应,并在一分钟后可用。
猜你喜欢
  • 2016-06-11
  • 2016-12-09
  • 2020-06-22
  • 2018-02-27
  • 2016-06-21
  • 2019-05-20
  • 2016-03-06
  • 2018-05-11
  • 2016-10-25
相关资源
最近更新 更多