dremio nessie 集成玩法
昨天我简单写了dremio 集成nessie 的玩法, 实际上dremio 与nessie 的集成可以分为两大类,一类是使用nessie 做为catalog 服务
(当然也是支持写入iceberg 的),一类是基于外部工具(spark,flink) 使用nessie 做为metadata storage 然后dremio 查询
参考玩法图
- 外部工具类的
- catalog 类的
此时nessie 同时可以做为一个catalog 存储,同时还可以结合s3 存储创建表数据(直接利用dremoio 管理iceberg 表)
玩法说明
- catalog 模式的
可以直接参考我以前写的 - 外部工具型的
简单说明下spark 集成的,spark 基于了3.5,spark 使用了本地软件包
环境准备
version: "3"
services:
minio:
image: minio/minio
ports:
- "9000:9000"
- "19001:19001"
environment:
MINIO_ACCESS_KEY: minio
MINIO_SECRET_KEY: minio123
command: server --console-address :19001 --quiet /data
dremio:
build: .
volumes:
- ./dremio:/myappdemo
ports:
- "9047:9047"
- "31010:31010"
nessie:
image: projectnessie/nessie:0.75.0-java
ports:
- "19120:19120"
- "19121:19121"
spark 配置
spark.sql.extensions org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions,org.projectnessie.spark.extensions.NessieSparkSessionExtensions
spark.sql.catalog.nessie.warehouse s3a://myws/
# spark.sql.catalog.nessie.type rest
spark.sql.catalog.nessie.uri http://localhost:19120/api/v1 # 注意使用了v api
spark.sql.catalog.nessie.ref main
spark.sql.catalog.nessie.authentication.type NONE
spark.sql.catalog.nessie.s3.endpoint http://localhost:9000
spark.sql.catalog.nessie.catalog-impl org.apache.iceberg.nessie.NessieCatalog
# spark.sql.catalog.nessie.io-impl org.apache.iceberg.aws.s3.S3FileIO
spark.sql.catalog.nessie org.apache.iceberg.spark.SparkCatalog
spark.hadoop.fs.s3a.access.key minio
spark.hadoop.fs.s3a.secret.key minio123
spark.hadoop.fs.s3a.endpoint http://localhost:9000
spark.hadoop.fs.s3a.path.style.access true
spark sql shell
./bin/spark-sql \
--packages "org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.4.0,org.projectnessie.nessie-integrations:nessie-spark-extensions-3.5_2.12:0.75.0,org.apache.hadoop:hadoop-aws:3.3.3"
效果
dremio 链接(使用v2 api)
配置s3(注意应该与spark 配置的实际的s3 key 是一样的。root path 可以不一样,核心是s3 的权限)
iceberg 表信息
查询刚才创建的表
nessie 系统效果
当然此时还是可以创建表的,源数据也是存储在nessie 中的
说明
dremio 官方也写了一些关于spark 以及flink 集成的文章,都值得参考学习下,当然可以结合实际使用,上边说的两种模式也是可以混合试试使用的,同时利用nessie 方便的分支管理能力,我们可以开发灵活的数据模型
参考资料
https://iceberg.apache.org/docs/latest/nessie/
https://iceberg.apache.org/docs/1.4.3/nessie/
https://projectnessie.org/tools/iceberg/spark/
https://github.com/projectnessie/nessie
https://github.com/tabular-io/docker-spark-iceberg
https://projectnessie.org/tools/iceberg/flink/
https://docs.dremio.com/cloud/arctic/engines/flink/
https://projectnessie.org/tools/iceberg/flink/#reading-tables
https://www.dremio.com/blog/using-flink-with-apache-iceberg-and-nessie/
https://www.dremio.com/blog/intro-to-dremio-nessie-and-apache-iceberg-on-your-laptop/
https://github.com/rongfengliang/dremio-nessie-learning