Добавить в корзинуПозвонить
Найти в Дзене
дата инженеретта

Разбираемся в каталогах

Начинаем понедельник с распутывания клубочка🧶 Концепций каталога развелось столько, что я сама уже запуталась, что есть что) Давайте вместе разложим по полочкам Трино Каталог - это конфиги для подключения к разным источникам данных Они прописываются в файлике по типу 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.cat

Разбираемся в каталогах

Начинаем понедельник с распутывания клубочка🧶 Концепций каталога развелось столько, что я сама уже запуталась, что есть что) Давайте вместе разложим по полочкам

Трино

Каталог - это конфиги для подключения к разным источникам данных

Они прописываются в файлике по типу 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