apache-spark - 启动集群时在 EMR 上配置 Zeppelin 的 Spark 解释器

标签 apache-spark emr amazon-emr 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": [

        ]
      }
    ]
  }
]

我将此对象粘贴到 EMR 的软件配置页面中:
enter image description here
我的问题是,如何/在哪里可以直接配置 Spark 解释器,而无需在每次启动集群时从 Zeppelin 手动配置它?

最佳答案

这有点复杂,您需要做两件事:

  • 编辑 Zeppelin 的 interpreter.json
  • 重启解释器

  • 因此,您需要做的是编写一个 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
    

    将此 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]
    

    关于apache-spark - 启动集群时在 EMR 上配置 Zeppelin 的 Spark 解释器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45328671/

    相关文章:

    apache-spark - 在 Spark 数据帧中加载avro时如何合并模式?

    hadoop - 将外部jar复制到/home/hadoop/lib文件夹EMR Amazon时出错

    amazon-web-services - 由 s3 透明支持的 EMR hdfs

    在引导操作中找不到 Hadoop 命令

    amazon-web-services - EMR 在哪里存储 Spark 标准输出?

    json - 如何使用 JSON 数据制作 HIVE 表?

    hadoop - Hadoop和Amazon EMR/S3中每个文件的单独输出

    scala - 无法在 Spark DataFrame 中对 MapType 列进行分组

    scala - 如何使用 Scala 模拟 Spark DataFrameReader?

    java - 如何使用 Spark - Java 检索保存的 ALS 模型