在 Docker 容器中使用 Apache Spark 设置统一目录

问题描述 投票:0回答:1

我正在尝试使用 Apache Spark 3.5.2 在 docker 容器中设置 unity 目录,但遇到了错误。

  • 我按照这个文档使用apache Spark设置和测试unity目录。
  • 按照那里的说明,我需要使用 delta-spark 和 unity-catalog 罐子启动 Spark shell。
  • 我使用它的 github repo 构建了 Unity 目录 jar 自述文件中提到的命令。
    • build/sbt clean package publishLocal spark/publishLocal

但是我在 delta-spark 和 unity 目录中都遇到错误:

  1. 对于 delta-spark 它会出现错误:

    java.lang.NoClassDefFoundError: scala/collection/IterableOnce
    ,看起来像 scala 版本冲突,但我尝试了多种组合,例如 delta-spark_2.12:3.0.0 等。

  2. 对于 Unity 目录,它会抛出:

    java.lang.ClassNotFoundException: io.unitycatalog.client.ApiException

有人可以检查一下这个,并帮助我消除这些错误。我的目标是能够在 Docker 容器中通过 Apache Spark 设置和使用 Unity 目录。

这是我的 github 分支,重现它的步骤写在拉取请求评论中: https://github.com/experientlabs/spark-dp-101/pull/1

重现步骤:

1。将这个

dev_branch
放入您的机器中 https://github.com/experientlabs/spark-dp-101/pull/1

2。进行 docker 构建,您可以使用以下命令。 构建(docker构建命令):

 docker build -t spark-delta-unity-catalog .

3.运行 docker run 命令 运行(docker运行命令)

hostfolder="$(pwd)"
dockerfolder="/home/sparkuser/app"

docker run --rm -it --name spark-uc \
-p 4040:4040 -p 18080:18080 -p 8080:8080 \
spark-delta-unity-catalog:latest bashed

4。进入 docker 容器 bash shell 后,运行以下命令来启动 Spark-shell

  • 带有 Unity 目录的 Spark Shell
/home/spark/bin/spark-shell --verbose \
--jars /home/spark/jars/unitycatalog-spark-0.2.0-SNAPSHOT.jar \
--packages io.delta:delta-spark_2.13:3.2.0 \
--conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension \
--conf spark.sql.catalog.spark_catalog=io.unitycatalog.connectors.spark.UCSingleCatalog \
--conf spark.sql.catalog.spark_catalog.uri=http://localhost:8080 \
--conf spark.sql.catalog.unity=io.unitycatalog.connectors.spark.UCSingleCatalog \
--conf spark.sql.catalog.unity.uri=http://localhost:8080

5。获得 Spark shell 后,尝试运行任何目录查询:

sql("SET spark.sql.defaultCatalog").show(truncate=false)

sql("SELECT current_catalog()").show(truncate=false)

尝试运行任何目录查询时出现 io.unitycatalog.client.ApiException。

apache-spark oss-unity-catalog
1个回答
1
投票

请注意您需要的 Apache Spark™ 和 Unity Catalog 之间的版本兼容性:

  • Unity 目录 >= 0.2
  • Apache Spark >= 3.5.3
  • 三角洲湖>= 3.2.1

根据 Unity 目录 Apache Spark™ 集成

您可以至少更新到这些版本吗?截至撰写本文时,我们目前也在更新 UC docker 以简化此过程。

© www.soinside.com 2019 - 2024. All rights reserved.