如何在 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_HOME
和spark_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 独立集群错误