يدعم ClickHouse التكامل مع عدة catalogs (Unity وGlue وPolaris وغيرها). في هذا الدليل، سنرشدك إلى خطوات الاستعلام عن بياناتك باستخدام ClickHouse وApache Polaris Catalog. يدعم Apache Polaris جداول Iceberg وDelta Tables (عبر Generic Tables). ولا يدعم هذا التكامل حاليًا سوى جداول Iceberg.
المتطلبات الأساسية
للاتصال بكتالوج Polaris، ستحتاج إلى:
- Snowflake Open كتالوج (Polaris المُدار) أو Polaris Catalog مستضاف ذاتيًا
- URI الخاص بكتالوج Polaris (على سبيل المثال،
https://<account-id>.<region>.aws.snowflakecomputing.com/polaris/api/catalog/v1أوhttp://polaris:8181/api/catalog/v1/oauth/tokens) - بيانات اعتماد الكتالوج (client ID وclient secret)
- URI الخاص برموز OAuth المميزة لمثيل Polaris لديك
- نقطة نهاية التخزين لمخزن الكائنات الذي توجد فيه بيانات Iceberg الخاصة بك (على سبيل المثال، S3)
- إصدار ClickHouse 26.1+
بالنسبة إلى Open كتالوج، وهو عرض Polaris المُدار من Snowflake، سيتضمن URI لديك /polaris، بينما في حالة الاستضافة الذاتية، قد لا يتضمنه.
إنشاء اتصال بين Polaris وClickHouse
أنشئ قاعدة بيانات تربط ClickHouse بكتالوج Polaris لديك:
CREATE DATABASE polaris_catalog
ENGINE = DataLakeCatalog('https://<catalog_uri>/api/catalog/v1')
SETTINGS
catalog_type = 'rest',
catalog_credential = '<client-id>:<client-secret>',
warehouse = 'snowflake',
auth_scope = 'PRINCIPAL_ROLE:ALL',
oauth_server_uri = 'https://<catalog_uri>/api/catalog/v1/oauth/tokens',
storage_endpoint = '<storage_endpoint>'الاستعلام عن كتالوج Polaris باستخدام ClickHouse
بمجرد إنشاء الاتصال، يمكنك الاستعلام عن Polaris:
USE polaris_catalog;
SHOW TABLES;للاستعلام عن جدول:
SELECT count(*) FROM `polaris_db.my_iceberg_table`;لمعاينة DDL الخاص بالجدول:
SHOW CREATE TABLE `polaris_db.my_iceberg_table`;تحميل البيانات من Polaris إلى ClickHouse
لتحميل البيانات من Polaris إلى جدول ClickHouse، أنشئ الجدول الهدف بالمخطط المطلوب، ثم نفّذ insert من جدول Polaris:
CREATE TABLE my_clickhouse_table
(
-- عرّف الأعمدة لتتطابق مع جدول Iceberg لديك
`id` Int64,
`name` String,
`event_time` DateTime64(3)
)
ENGINE = MergeTree
ORDER BY id;
INSERT INTO my_clickhouse_table
SELECT * FROM polaris_catalog.`polaris_db.my_iceberg_table`;