如何在 Zeppelin 中切换 Spark 版本以使用 Spark 3.x

Posted

技术标签:

【中文标题】如何在 Zeppelin 中切换 Spark 版本以使用 Spark 3.x【英文标题】:How can I switch the Spark version in Zeppelin to use Spark 3.x 【发布时间】:2021-09-10 11:30:11 【问题描述】:

我正在尝试设置 Spark 和 Zeppelin 的 Docker 化版本,但我似乎无法理解如何将 Zeppelin 版本切换到 Spark 的 3.x 版本。

我正在使用来自 Docker Hub 的默认 Zeppelin 映像。这是我的 docker-compose.yml 的摘录。

  zeppelin:
    image: apache/zeppelin:0.9.0
    container_name: zeppelin
    #depends_on:
    #  - spark-master
    ports:
      - "8083:8080"

如果我访问 Zeppelin(在 localhost:8083),并执行 spark.version,它仍将版本读取为 2.4.5。

如何在 Zeppelin 中更改 spark 版本?我可以看到支持的版本相当多,但文档没有说明如何切换版本。 https://github.com/apache/zeppelin/blob/master/spark/spark-shims/src/main/scala/org /apache/zeppelin/spark/SparkVersion.java#L25

【问题讨论】:

【参考方案1】:

您可以在单独的容器中运行 spark 并将 spark master 指向它,另一种简单的方法是在Zeppelin 之上使用Spark 构建您的图像

创建一个 Dockerfile 文件,以 zeppelin 作为基础镜像

FROM apache/zeppelin:0.9.0
ENV SPARK_VERSION=3.0.0
ENV HADOOP_VERSION=3.2
ENV SPARK_INSTALL_ROOT=/spark

ENV SPARK_HOME=$SPARK_INSTALL_ROOT/spark-$SPARK_VERSION-bin-hadoop$HADOOP_VERSION

USER root
RUN mkdir "$SPARK_INSTALL_ROOT"
USER $USER

RUN cd "$SPARK_INSTALL_ROOT" && \
    wget --show-progress https://archive.apache.org/dist/spark/spark-$SPARK_VERSION/spark-$SPARK_VERSION-bin-hadoop$HADOOP_VERSION.tgz && \
    tar -xzf spark-$SPARK_VERSION-bin-hadoop$HADOOP_VERSION.tgz

现在使用这个镜像来运行docker-compose,你可以创建一个带有标签的镜像并在这里使用它或者你可以直接参考Dockerfile如下 版本:'2'

services:
  zeppelin:
    image: zeppelin-spark
    build:
      context: .
      dockerfile: Dockerfile
    container_name: zeppelin
    ports:
      - "8083:8080"

现在运行 docker-compose up -d 确保两个文件在同一个目录中,或者随意调整上下文中的路径

然后您会看到版本为 3.0.0

【讨论】:

【参考方案2】:

您需要将SPARK_HOMEspark_master 设置为正确的。请按照 Zeppelin 文档中的说明进行操作:

https://zeppelin.apache.org/docs/latest/interpreter/spark.html

【讨论】:

以上是关于如何在 Zeppelin 中切换 Spark 版本以使用 Spark 3.x的主要内容,如果未能解决你的问题,请参考以下文章

Zeppelin Spark Maxmind jackson.databind NoSuchMethodError

如何在现有的 Apache Spark 独立集群上安装 Apache Zeppelin

如何在 Zeppelin/Spark/Scala 中漂亮地打印数据框?

zeppelin with spark 1.5.2 独立集群错误

Zeppelin+Spark+Kubernetes:让 Zeppelin Job 在现有的 Spark 集群上运行

如何在 zeppelin 中将数组从 spark 绑定到 javascript?