Ram*_*ami 5 amazon-emr emr apache-spark apache-zeppelin
我正在EMR上创建集群并配置Zeppelin以从S3读取笔记本.为此,我使用的json对象看起来像这样:
[
{
"Classification": "zeppelin-env",
"Properties": {
},
"Configurations": [
{
"Classification": "export",
"Properties": {
"ZEPPELIN_NOTEBOOK_STORAGE":"org.apache.zeppelin.notebook.repo.S3NotebookRepo",
"ZEPPELIN_NOTEBOOK_S3_BUCKET":"hs-zeppelin-notebooks",
"ZEPPELIN_NOTEBOOK_USER":"user"
},
"Configurations": [
]
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
我在EMR的Stoftware配置页面中粘贴了这个对象:
我的问题是,我是如何/在哪里直接配置Spark解释器而无需在每次启动集群时从Zeppelin手动配置它?
这有点牵扯,你需要做两件事:
因此,您需要做的是编写一个shell脚本,然后向运行此shell脚本的EMR集群配置添加一个额外的步骤.
Zeppelin配置在json中,你可以使用jq(一个工具)来操作json.我不知道你想要改变什么,但这里是一个添加(神秘缺失)DepInterpreter的例子:
#!/bin/bash
# 1 edit the Spark interpreter
set -e
cat /etc/zeppelin/conf/interpreter.json | jq '.interpreterSettings."2ANGGHHMQ".interpreterGroup |= .+ [{"class":"org.apache.zeppelin.spark.DepInterpreter", "name":"dep"}]' | sudo -u zeppelin tee /etc/zeppelin/conf/interpreter.json
# Trigger restart of Spark interpreter
curl -X PUT http://localhost:8890/api/interpreter/setting/restart/2ANGGHHMQ
Run Code Online (Sandbox Code Playgroud)
将此shell脚本放在s3存储桶中.然后启动EMR集群
--steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://eu-west-1.elasticmapreduce/libs/script-runner/script-runner.jar,Args=[s3://mybucket/script.sh]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2494 次 |
| 最近记录: |