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