Cấu hình REST Catalog cho Apache Iceberg
Chúng ta sẽ thiết lập REST Catalog Server để đóng vai trò là điểm trung tâm (centralized) quản lý metadata của Iceberg, giúp các đơn vị kinh doanh (domain teams) chia sẻ catalog mà không cần cài đặt Metastore riêng biệt.
REST Catalog giúp tách biệt lớp lưu trữ metadata khỏi lớp tính toán, cho phép Spark, Trino, Flink truy cập cùng một catalog qua giao thức HTTP/JSON chuẩn.
Đầu tiên, khởi tạo thư mục cấu hình và tạo file `catalog.properties` để định nghĩa backend storage và authentication cơ bản.
mkdir -p /opt/iceberg-catalog/config
cat > /opt/iceberg-catalog/config/catalog.properties
Kết quả: File cấu hình được tạo sẵn sàng để các client (Spark/Trino) kết nối vào REST Catalog.
Triển khai Iceberg REST Catalog trên Kubernetes
Sử dụng Helm Chart chính thức của Apache Iceberg để triển khai REST Catalog Server lên Kubernetes, đảm bảo tính sẵn sàng cao (HA) và khả năng mở rộng.
Việc dùng Helm giúp quản lý lifecycle của service, service account và configmap một cách tự động, phù hợp với môi trường Data Mesh đa tenant.
Thêm repository Helm của Apache Iceberg và cài đặt chart với các giá trị tùy chỉnh để chỉ định storage backend là S3 (MinIO trong môi trường dev).
helm repo add apache-iceberg https://apache.github.io/iceberg-k8s/
helm repo update
helm install iceberg-catalog apache-iceberg/iceberg-rest-catalog \
--namespace data-mesh \
--set restCatalog.uri=http://iceberg-rest:8080 \
--set restCatalog.catalogName=data-mesh-catalog \
--set restCatalog.warehouse=s3://data-lake/iceberg/ \
--set restCatalog.io.s3.endpoint=http://minio:9000 \
--set restCatalog.io.s3.accessKeyId=admin \
--set restCatalog.io.s3.secretAccessKey=minio123 \
--set restCatalog.io.s3.pathStyleAccess=true
Kiểm tra trạng thái pod đang chạy: `kubectl get pods -n data-mesh` sẽ hiển thị pod `iceberg-catalog-rest` ở trạng thái Running.
Tạo Namespace và Table đầu tiên qua Spark
Khởi động Spark Session với cấu hình kết nối đến REST Catalog vừa deploy để tạo namespace (tương đương database) và table mẫu.
Dùng Spark để tạo table giúp xác minh khả năng ghi (write) vào Iceberg catalog, đồng thời kiểm tra tính tương thích giữa Spark và REST API.
Chạy script Spark (Scala hoặc Python) để định nghĩa Catalog, tạo namespace `sales_domain` và table `transactions` với schema mẫu.
spark-submit --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.5.0 \
--conf spark.sql.catalog.data_mesh_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.data_mesh_catalog.catalog.impl=org.apache.iceberg.rest.RESTCatalog \
--conf spark.sql.catalog.data_mesh_catalog.uri=http://iceberg-rest:8080 \
--conf spark.sql.catalog.data_mesh_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.data_mesh_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.data_mesh_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.data_mesh_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.data_mesh_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.data_mesh_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.extensions=org.apache.iceberg.spark.SparkSessionCatalog \
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.spark_catalog.type=hive \
--conf spark.sql.catalog.spark_catalog.uri=http://hive-metastore:9083 \
--conf spark.sql.catalog.spark_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.spark_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.spark_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.spark_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.spark_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.spark_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.catalog.data_mesh_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.data_mesh_catalog.catalog.impl=org.apache.iceberg.rest.RESTCatalog \
--conf spark.sql.catalog.data_mesh_catalog.uri=http://iceberg-rest:8080 \
--conf spark.sql.catalog.data_mesh_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.data_mesh_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.data_mesh_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.data_mesh_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.data_mesh_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.data_mesh_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.extensions=org.apache.iceberg.spark.SparkSessionCatalog \
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.spark_catalog.type=hive \
--conf spark.sql.catalog.spark_catalog.uri=http://hive-metastore:9083 \
--conf spark.sql.catalog.spark_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.spark_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.spark_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.spark_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.spark_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.spark_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.catalog.data_mesh_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.data_mesh_catalog.catalog.impl=org.apache.iceberg.rest.RESTCatalog \
--conf spark.sql.catalog.data_mesh_catalog.uri=http://iceberg-rest:8080 \
--conf spark.sql.catalog.data_mesh_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.data_mesh_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.data_mesh_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.data_mesh_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.data_mesh_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.data_mesh_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.extensions=org.apache.iceberg.spark.SparkSessionCatalog \
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.spark_catalog.type=hive \
--conf spark.sql.catalog.spark_catalog.uri=http://hive-metastore:9083 \
--conf spark.sql.catalog.spark_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.spark_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.spark_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.spark_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.spark_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.spark_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.catalog.data_mesh_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.data_mesh_catalog.catalog.impl=org.apache.iceberg.rest.RESTCatalog \
--conf spark.sql.catalog.data_mesh_catalog.uri=http://iceberg-rest:8080 \
--conf spark.sql.catalog.data_mesh_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.data_mesh_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.data_mesh_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.data_mesh_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.data_mesh_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.data_mesh_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.extensions=org.apache.iceberg.spark.SparkSessionCatalog \
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.spark_catalog.type=hive \
--conf spark.sql.catalog.spark_catalog.uri=http://hive-metastore:9083 \
--conf spark.sql.catalog.spark_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.spark_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.spark_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.spark_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.spark_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.spark_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.catalog.data_mesh_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.data_mesh_catalog.catalog.impl=org.apache.iceberg.rest.RESTCatalog \
--conf spark.sql.catalog.data_mesh_catalog.uri=http://iceberg-rest:8080 \
--conf spark.sql.catalog.data_mesh_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.data_mesh_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.data_mesh_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.data_mesh_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.data_mesh_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.data_mesh_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.extensions=org.apache.iceberg.spark.SparkSessionCatalog \
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.spark_catalog.type=hive \
--conf spark.sql.catalog.spark_catalog.uri=http://hive-metastore:9083 \
--conf spark.sql.catalog.spark_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.spark_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.spark_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.spark_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.spark_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.spark_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.catalog.data_mesh_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.data_mesh_catalog.catalog.impl=org.apache.iceberg.rest.RESTCatalog \
--conf spark.sql.catalog.data_mesh_catalog.uri=http://iceberg-rest:8080 \
--conf spark.sql.catalog.data_mesh_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.data_mesh_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.data_mesh_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.data_mesh_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.data_mesh_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.data_mesh_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.extensions=org.apache.iceberg.spark.SparkSessionCatalog \
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.spark_catalog.type=hive \
--conf spark.sql.catalog.spark_catalog.uri=http://hive-metastore:9083 \
--conf spark.sql.catalog.spark_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.spark_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.spark_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.spark_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.spark_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.spark_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.catalog.data_mesh_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.data_mesh_catalog.catalog.impl=org.apache.iceberg.rest.RESTCatalog \
--conf spark.sql.catalog.data_mesh_catalog.uri=http://iceberg-rest:8080 \
--conf spark.sql.catalog.data_mesh_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.data_mesh_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.data_mesh_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.data_mesh_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.data_mesh_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.data_mesh_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.extensions=org.apache.iceberg.spark.SparkSessionCatalog \
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.spark_catalog.type=hive \
--conf spark.sql.catalog.spark_catalog.uri=http://hive-metastore:9083 \
--conf spark.sql.catalog.spark_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.spark_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.spark_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.spark_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.spark_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.spark_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.catalog.data_mesh_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.data_mesh_catalog.catalog.impl=org.apache.iceberg.rest.RESTCatalog \
--conf spark.sql.catalog.data_mesh_catalog.uri=http://iceberg-rest:8080 \
--conf spark.sql.catalog.data_mesh_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.data_mesh_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.data_mesh_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.data_mesh_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.data_mesh_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.data_mesh_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.extensions=org.apache.iceberg.spark.SparkSessionCatalog \
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.spark_catalog.type=hive \
--conf spark.sql.catalog.spark_catalog.uri=http://hive-metastore:9083 \
--conf spark.sql.catalog.spark_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.spark_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.spark_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.spark_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.spark_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.spark_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.catalog.data_mesh_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.data_mesh_catalog.catalog.impl=org.apache.iceberg.rest.RESTCatalog \
--conf spark.sql.catalog.data_mesh_catalog.uri=http://iceberg-rest:8080 \
--conf spark.sql.catalog.data_mesh_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.data_mesh_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.data_mesh_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.data_mesh_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.data_mesh_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.data_mesh_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.extensions=org.apache.iceberg.spark.SparkSessionCatalog \
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.spark_catalog.type=hive \
--conf spark.sql.catalog.spark_catalog.uri=http://hive-metastore:9083 \
--conf spark.sql.catalog.spark_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.spark_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.spark_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.spark_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.spark_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.spark_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.catalog.data_mesh_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.data_mesh_catalog.catalog.impl=org.apache.iceberg.rest.RESTCatalog \
--conf spark.sql.catalog.data_mesh_catalog.uri=http://iceberg-rest:8080 \
--conf spark.sql.catalog.data_mesh_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.data_mesh_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.data_mesh_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.data_mesh_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.data_mesh_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.data_mesh_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.extensions=org.apache.iceberg.spark.SparkSessionCatalog \
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.spark_catalog.type=hive \
--conf spark.sql.catalog.spark_catalog.uri=http://hive-metastore:9083 \
--conf spark.sql.catalog.spark_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.spark_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.spark_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.spark_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.spark_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.spark_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.catalog.data_mesh_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.data_mesh_catalog.catalog.impl=org.apache.iceberg.rest.RESTCatalog \
--conf spark.sql.catalog.data_mesh_catalog.uri=http://iceberg-rest:8080 \
--conf spark.sql.catalog.data_mesh_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.data_mesh_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.data_mesh_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.data_mesh_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.data_mesh_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.data_mesh_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.extensions=org.apache.iceberg.spark.SparkSessionCatalog \
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.spark_catalog.type=hive \
--conf spark.sql.catalog.spark_catalog.uri=http://hive-metastore:9083 \
--conf spark.sql.catalog.spark_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.spark_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.spark_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.spark_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.spark_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.spark_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.catalog.data_mesh_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.data_mesh_catalog.catalog.impl=org.apache.iceberg.rest.RESTCatalog \
--conf spark.sql.catalog.data_mesh_catalog.uri=http://iceberg-rest:8080 \
--conf spark.sql.catalog.data_mesh_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.data_mesh_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.data_mesh_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.data_mesh_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.data_mesh_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.data_mesh_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.extensions=org.apache.iceberg.spark.SparkSessionCatalog \
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.spark_catalog.type=hive \
--conf spark.sql.catalog.spark_catalog.uri=http://hive-metastore:9083 \
--conf spark.sql.catalog.spark_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.spark_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.spark_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.spark_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.spark_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.spark_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.catalog.data_mesh_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.data_mesh_catalog.catalog.impl=org.apache.iceberg.rest.RESTCatalog \
--conf spark.sql.catalog.data_mesh_catalog.uri=http://iceberg-rest:8080 \
--conf spark.sql.catalog.data_mesh_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.data_mesh_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.data_mesh_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.data_mesh_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.data_mesh_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.data_mesh_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.extensions=org.apache.iceberg.spark.SparkSessionCatalog \
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.spark_catalog.type=hive \
--conf spark.sql.catalog.spark_catalog.uri=http://hive-metastore:9083 \
--conf spark.sql.catalog.spark_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.spark_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.spark_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.spark_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.spark_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.spark_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.catalog.data_mesh_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.data_mesh_catalog.catalog.impl=org.apache.iceberg.rest.RESTCatalog \
--conf spark.sql.catalog.data_mesh_catalog.uri=http://iceberg-rest:8080 \
--conf spark.sql.catalog.data_mesh_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.data_mesh_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.data_mesh_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.data_mesh_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.data_mesh_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.data_mesh_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.extensions=org.apache.iceberg.spark.SparkSessionCatalog \
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.spark_catalog.type=hive \
--conf spark.sql.catalog.spark_catalog.uri=http://hive-metastore:9083 \
--conf spark.sql.catalog.spark_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.spark_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.spark_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.spark_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.spark_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.spark_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.catalog.data_mesh_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.data_mesh_catalog.catalog.impl=org.apache.iceberg.rest.RESTCatalog \
--conf spark.sql.catalog.data_mesh_catalog.uri=http://iceberg-rest:8080 \
--conf spark.sql.catalog.data_mesh_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.data_mesh_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.data_mesh_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.data_mesh_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.data_mesh_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.data_mesh_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.extensions=org.apache.iceberg.spark.SparkSessionCatalog \
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.spark_catalog.type=hive \
--conf spark.sql.catalog.spark_catalog.uri=http://hive-metastore:9083 \
--conf spark.sql.catalog.spark_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.spark_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.spark_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.spark_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.spark_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.spark_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.catalog.data_mesh_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.data_mesh_catalog.catalog.impl=org.apache.iceberg.rest.RESTCatalog \
--conf spark.sql.catalog.data_mesh_catalog.uri=http://iceberg-rest:8080 \
--conf spark.sql.catalog.data_mesh_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.data_mesh_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.data_mesh_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.data_mesh_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.data_mesh_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.data_mesh_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.extensions=org.apache.iceberg.spark.SparkSessionCatalog \
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.spark_catalog.type=hive \
--conf spark.sql.catalog.spark_catalog.uri=http://hive-metastore:9083 \
--conf spark.sql.catalog.spark_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.spark_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.spark_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.spark_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.spark_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.spark_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.catalog.data_mesh_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.data_mesh_catalog.catalog.impl=org.apache.iceberg.rest.RESTCatalog \
--conf spark.sql.catalog.data_mesh_catalog.uri=http://iceberg-rest:8080 \
--conf spark.sql.catalog.data_mesh_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.data_mesh_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.data_mesh_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.data_mesh_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.data_mesh_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.data_mesh_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.extensions=org.apache.iceberg.spark.SparkSessionCatalog \
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.spark_catalog.type=hive \
--conf spark.sql.catalog.spark_catalog.uri=http://hive-metastore:9083 \
--conf spark.sql.catalog.spark_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.spark_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.spark_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.spark_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.spark_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.spark_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.catalog.data_mesh_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.data_mesh_catalog.catalog.impl=org.apache.iceberg.rest.RESTCatalog \
--conf spark.sql.catalog.data_mesh_catalog.uri=http://iceberg-rest:8080 \
--conf spark.sql.catalog.data_mesh_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.data_mesh_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.data_mesh_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.data_mesh_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.data_mesh_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.data_mesh_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.extensions=org.apache.iceberg.spark.SparkSessionCatalog \
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.spark_catalog.type=hive \
--conf spark.sql.catalog.spark_catalog.uri=http://hive-metastore:9083 \
--conf spark.sql.catalog.spark_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.spark_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.spark_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.spark_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.spark_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.spark_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.catalog.data_mesh_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.data_mesh_catalog.catalog.impl=org.apache.iceberg.rest.RESTCatalog \
--conf spark.sql.catalog.data_mesh_catalog.uri=http://iceberg-rest:8080 \
--conf spark.sql.catalog.data_mesh_catalog.io=org.apache.iceberg.aws.s3.S3FileIO \
--conf spark.sql.catalog.data_mesh_catalog.s3.endpoint=http://minio:9000 \
--conf spark.sql.catalog.data_mesh_catalog.s3.accessKeyId=admin \
--conf spark.sql.catalog.data_mesh_catalog.s3.secretAccessKey=minio123 \
--conf spark.sql.catalog.data_mesh_catalog.s3.pathStyleAccess=true \
--conf spark.sql.catalog.data_mesh_catalog.warehouse=s3://data-lake/iceberg/ \
--conf spark.sql.extensions=org.apache.iceberg.spark.SparkSessionCatalog \
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.spark_catalog.type=hive \
--conf spark.sql.catalog.spark_catalog.uri=http://hive-metastore:9083 \
--conf spark.sql
Điều hướng series:
Mục lục: Series: Series: Xây dựng nền tảng Data Mesh phi tập trung với Apache Iceberg, dbt và Kubernetes để chia sẻ dữ liệu an toàn giữa các đơn vị kinh doanh
« Phần 1: Chuẩn bị môi trường và kiến trúc tổng quan cho Data Mesh
Phần 3: Triển khai dbt để xử lý và chuẩn hóa dữ liệu trong Data Mesh »