2017-03-27 47 views
4

我在emr-5.4.0群集上运行zeppelin 0.7.0。我使用默认设置启动群集。 EMR不配置%spark.dep解释器。EMR Zeppelin消除DepInterpreter

我从下面编辑的文件/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 
    } 
} 

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

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

有没有一种方法,使电子病历使用默认的飞艇设置(而不是删除这个配置)?

UPDATE

可能有人也解释了为什么我刚刚创建了今天上午集群,通过克隆原始群集,有着完全不同的配置?

"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 
     } 
    } 
    ] 
+0

感谢您分享此手动方法。我认为这是一个重要的监督,这个解释器不在那里,我们还可以添加外部软件包吗?我不确定AWS如何认为Zeppelin没有这种能力将会有用。 – Davos

+0

在这个页面https://community.hortonworks.com/questions/41537/adding-libraries-to-zeppelin.html有一个建议,你可以使用local.repo来存储jar文件。我不确定具体的工作方式,无论是依赖项的路径需要添加到Spark(或其他)解释器,还是只需在本地仓库中添加jar就足以将其导入到代码中 – Davos

+0

在这里看到答案https://stackoverflow.com/questions/45328671/configure-zeppelins-spark-interpreter-on-emr-when-starting-a-cluster –

回答

3

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

齐柏林似乎有一套REST APIs,允许您更改解释器设置。尤其是this API端点,它允许您创建解释器设置。然而,这似乎并不具有以下有效载荷的工作:

POSThttp://[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所述。

+0

运行'curl -vX POST POST HTTP:// localhost:8890/api/interpreter/setting -d @ payload.json - 使用上述有效负载的“Content-Type:application/json”使用EMR集群。它会以“CREATING”状态作出响应,并在一分钟后可用。 – kadrach