Разбираемся в каталогах
Начинаем понедельник с распутывания клубочка🧶 Концепций каталога развелось столько, что я сама уже запуталась, что есть что) Давайте вместе разложим по полочкам
Трино
Каталог - это конфиги для подключения к разным источникам данных
Они прописываются в файлике по типу etc/catalog/
iceberg.properties:
connector.name=iceberg
iceberg.catalog.type=hive_metastore
hive.metastore.uri=thrift://hive-metastore:9083
Потом можно в запросах обращаться по названию этого коннектора:
SELECT * FROM iceberg.db.table;
SELECT * FROM postgres.public.table;
Spark
Каталог - это API Spark для работы с разными источниками данных
Я бы сказала, что это похоже на концепцию в трино. Потому что мы так же можем определить новый каталог для источника и указать, как к нему подключаться. Но только в коде спарк приложения:
spark.conf.set("spark.sql.catalog.spark_catalog", "org.apache.iceberg.spark.SparkSessionCatalog")
spark.conf.set("spark.sql.catalog.spark_catalog.type", "hive")
spark.conf.set("spark.sql.catalog.clickhouse", "com.clickhouse.spark.ClickHouseCatalog")
spark.conf.set("spark.sql.catalog.clickhouse.host", "host")
spark.conf.set("spark.sql.catalog.clickhouse.user", "user")
spark.conf.set("spark.sql.catalog.clickhouse.password", "password")
Дальше обращаться по названию каталога через Spark SQL/DataFrame API:
spark.table("spark_catalog.default.table")
spark.table("clickhouse.default.table")
Iceberg
Каталог - это хранилище метаданных Iceberg таблиц (где лежат снепшоты, манифесты, схемы)
Без каталога айсберг-таблица для движка не существует. Именно каталог знает актуальный снепшот, работает с эволюцией схем и транзакциями
Есть несколько реализаций: HMS (Hive Metastore), JDBC (обычные бд), AWS Glue, REST - Nessie, Polaris, Lakekeeper, lakeFS, Tabular, Unity Catalog
Data Catalog
Каталог - это реестр всех метаданных
Он нужен для Data Governance: сканирует мету из бд, хранит схемы таблиц, содержит техническое описание сущностей и полей, бизнес-описание метрик, умеет в data lineage. Здесь каталог вообще сборку от предыдущих пунктов
Примеры: DataHub, OpenMetadata, Apache Atlas, Amundsen, Marquez, AWS Glue Data Catalog
@data_engineerette
Обсуждение 16
Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.
Обсудить в Telegram