SR不只查内部表:External Catalog、联邦查询与统一分析
SRä¸åªæ¥å é¨è¡¨ï¼External Catalogãè馿¥è¯¢ä¸ç»ä¸åæ
大大大大æ´å¤© 2026-08-19 0 é 读10åéä¸ãå¼è¨
å¾å¤å¢éä½¿ç¨ StarRocks ç第ä¸è¯æ±æ¯âææ°æ®å¯¼è¿æ¥ï¼ç¶åæ¥å¾å¿«âãè¿æ¡è·¯å¾å¾èªç¶ï¼éè¿ Routine LoadãStream LoadãBroker LoadãINSERT INTO æ Flink Connector æå®æ¶æç¦»çº¿æ°æ®åå ¥ StarRocks å é¨è¡¨ï¼åä¾èµåå¼åå¨ãåéåæ§è¡ãMPP å¹¶è¡ãç©åè§å¾ãååºåæ¡¶åç´¢å¼è½åæ¯æä½å»¶è¿ OLAPã
ä½ç°å®çæ°æ®æ¶æé常没æè¿ä¹å¹²åã宿¶æç»å¯è½å¨ Kafka æ StarRocksï¼ç¦»çº¿å¤§å®½è¡¨å¯è½å¨ Hiveï¼å¢éæ¹è¡¨å¯è½å¨ Iceberg æ Hudiï¼ä¸å¡ç»´è¡¨å¨ MySQL æ PostgreSQLï¼æ¥å¿æ£ç´¢å¨ Elasticsearchãäºæ¯ä¸ä¸ªåæé®é¢å¾å¾è·¨è¶å¤ä¸ªç³»ç»ï¼
ä¸ä¸ªå
¸ååæé®é¢ï¼
âçè¿å» 90 å¤©ç¨æ·è¡ä¸ºè¶å¿ï¼
å
³è宿¶ä¼åç¶æï¼
åææè¿ä¸æ¬¡è®¢åå飿§æ ç¾åå±ãâ
æ°æ®å¯è½åæ£å¨ï¼
StarRocks å
é¨è¡¨ -> 宿¶èåãæå¡åææ
Iceberg / Hive -> å岿ç»ã离线宽表
MySQL / PostgreSQL -> ä¸å¡ç»´è¡¨ãé
置表
Elasticsearch -> æ¥å¿ãæç´¢åæ ç¾
å¦ææ¯æ¬¡è·¨æºåæé½å æ¬æ°æ®ï¼å·¥ç¨é¾è·¯ä¼åé¿ï¼åæ¥ä»»å¡ã临æ¶è¡¨ãæ°æ®æ ¡éªãæé对é½ãå£å¾è§£éé½ä¼å¸¦æ¥ææ¬ãExternal Catalog çæä¹å¨äºï¼å®æâæ¯å¦æ¬æ°æ®âä»é»è®¤å¨ä½åææ¶æéæ©ï¼è½ç´æ¥æ¥çå ç´æ¥æ¥ï¼é¢ç¹ä¸é«ä»·å¼çåç¼åãç©åæå¯¼å ¥ã
äºãExternal Catalog æ¯ä»ä¹
StarRocks ä¸æä¸¤ç±» Catalogï¼default_catalog管ç StarRocks å
鍿°æ®ï¼External Catalog ç¨äºè®¿é®å¤é¨æ°æ®æºãæ¯ä¸ª StarRocks éç¾¤åªæä¸ä¸ªå
é¨ Catalogï¼å称为 default_catalogï¼External Catalog åéè¿å¤é¨ Metastore 让 StarRocks ç´æ¥è®¿é®å¤é¨æ°æ®æºï¼å¹¶æ¯æè·¨ Catalog æ¥è¯¢ã
å¯ä»¥æ Catalog ç解为 StarRocks çâæ°æ®å½åç©ºé´ + å æ°æ®è¿æ¥å¨âãå®è§£å³ä¸ä¸ªæ ¸å¿é®é¢ï¼
| é®é¢ | Catalog çä½ç¨ |
|---|---|
| æ°æ®å¨åªé | éè¿ Catalog åç§°å®ä½å é¨è¡¨æå¤é¨ç³»ç» |
| è¡¨ç»ææä¹æ¥ | ä» StarRocks å é¨å æ°æ®æå¤é¨ Metastore è·å |
| æ¥è¯¢æä¹æ§è¡ | FE åºäºå æ°æ®çæè®¡åï¼BE/CN å¹¶è¡æ«æå 鍿å¤é¨æ°æ® |
æ¥è¯¢å¤é¨æ°æ®æ¶ï¼FE 访é®å¤é¨æ°æ®æºç Metastore è·åå æ°æ®å¹¶çææ§è¡è®¡åï¼è®¡åä¸ååï¼BE æ CN å¹¶è¡æ«æå¤é¨æ°æ®ãæ§è¡è®¡ç®å¹¶è¿åç»æãExternal Catalog 䏿¯ç®åç SQL 代çï¼èæ¯æå¤é¨æ°æ®çº³å ¥ StarRocks çåå¸å¼æ§è¡æ¡æ¶ã
ä¸ãExternal Catalog æ¯æåªäºæº
StarRocks External Catalog è¦ç HiveãIcebergãHudiãDelta LakeãJDBCãElasticsearchãPaimonãUnified Catalog çç±»åï¼å ¶ä¸ Elasticsearch Catalog å Paimon Catalog ä» v3.1 èµ·æ¯æï¼Unified Catalog ä» v3.2 èµ·æ¯æãJDBC Catalog ä» v3.0 èµ·æ¯æ MySQL å PostgreSQLï¼Oracle å SQL Server åå«å¨åç» 3.2.9ã3.3.1 çæ¬å å ¥æ¯æï¼ClickHouse 以å®éªè½åä» v3.3.0 èµ·åºç°ã
| Catalog ç±»å | å ¸åæ°æ®æº | éååºæ¯ | 注æç¹ |
|---|---|---|---|
| Hive Catalog | Hive 表ãHMS å æ°æ® | 离线æ°ä»ãå岿ç»ã彿¡£æ°æ®åæ | ä¾èµ Metastoreãæä»¶æ ¼å¼ååå¨å¯è®¿é®æ§ |
| Iceberg Catalog | Iceberg æ¹è¡¨ | æ¹ä»è¡¨ãå¿«ç §è¡¨ãå¢éæ°æ®åæ | è¡¨çæ¬ãå é¤æä»¶æ¯æä¸ StarRocks çæ¬æå ³ |
| Hudi Catalog | Hudi 表 | å¢éæ¹è¡¨ãè¿å®æ¶æ¹ä» | 读æ§è½ä¸æä»¶å¸å±ãCompaction ç¶ææå ³ |
| Delta Lake Catalog | Delta 表 | Delta æ¹è¡¨æ¥è¯¢ | éæ ¸å¯¹å ·ä½çæ¬åè½åè¾¹ç |
| Paimon Catalog | Paimon 表 | æµæ¹ä¸ä½æ¹ä»è¡¨ | é¨ååºæ¯å¯è½æ¶å JNI ææ ¼å¼éå¶ |
| JDBC Catalog | MySQLãPostgreSQLãOracleãSQL Server ç | 维表ãé 置表ãå°è§æ¨¡ä¸å¡åºå ³è | ä¸éåå¤§è§æ¨¡äºå®è¡¨æ«æ |
| Elasticsearch Catalog | Elasticsearch ç´¢å¼ | æç´¢æ ç¾ãæ¥å¿ç´¢å¼èæ¥ | æ¥è¯¢è¯ä¹ä¸ ES æ å°ãè°è¯ä¸æ¨è½åæå ³ |
| Unified Catalog | HiveãIcebergãHudiãDelta LakeãPaimonãKudu ç | åä¸ Metastore/Storage ä¸å¤æ¹è¡¨æ ¼å¼ç»ä¸è®¿é® | 宿¹æ 注为 Betaï¼ä¸ä¸ä¸ª Unified Catalog åªæ¯æåä¸åå¨ç³»ç»ååä¸ Metastore æå¡ |
Unified Catalog ä» v3.2 èµ·æä¾ï¼ç¨äºæ HiveãIcebergãHudiãDelta LakeãKudu çæ°æ®æºä½ä¸ºç»ä¸æ°æ®æºå¤çï¼å¹¶å¯ç´æ¥æ¥è¯¢ HiveãIcebergãHudiãDelta LakeãPaimonãKudu æ°æ®èæ éæå·¥å»ºè¡¨ã ä½å®ææç¡®éå¶ï¼ä¸ä¸ª Unified Catalog åªæ¯ææ¥å ¥ä¸ä¸ªåå¨ç³»ç»åä¸ä¸ª Metastore æå¡ï¼å æ¤å®æ´éåå䏿¹ä»åºåº§ä¸ç夿 ¼å¼ç»ä¸è®¿é®ï¼è䏿¯ä»»æå¼ææºå¤§æ¼çã
Catalog ç±»åä¸å®ä½
StarRocks SQL
|
+---------------+----------------+
| |
default_catalog external catalogs
StarRocks å
é¨è¡¨ å¤é¨æ°æ®æºå
¥å£
| |
| +---------------+----------------+
| | | |
OLAP Table Lake Catalog JDBC Catalog ES Catalog
宿¶èå Hive/Iceberg MySQL/PG/... Elasticsearch
æç»æå¡ Hudi/Paimon 维表/é
置表 æ¥å¿/æ ç¾
é«å¹¶åæ¥è¯¢ Delta/Kudu å°è¡¨å
³è æ£ç´¢ååæ
åãå¤è¡¨å Catalog çå ³ç³»
StarRocks æ©æä¹æ¯æ External Tableï¼å³éè¿CREATE EXTERNAL TABLEå¨ StarRocks ä¸å建ä¸å¼ æ å°å¤é¨æ°æ®æºç表ã宿¹å·²æç¡®æç¤ºï¼External Table åè½é¤å°æ°è¾¹è§åºæ¯å¤ä¸åæ¨èï¼æªæ¥å¯è½åºå¼ï¼ä¸è¬åºæ¯å»ºè®®ä½¿ç¨ External Catalog 管çåæ¥è¯¢å¤é¨æ°æ®æºã
| 维度 | External Table | External Catalog |
|---|---|---|
| æ½è±¡å±çº§ | 表级æ å° | Catalog çº§æ°æ®æºæ¥å ¥ |
| å æ°æ®ç®¡ç | å¨ StarRocks ä¸å»ºå¤è¡¨å¹¶ç»´æ¤è¡¨æ å° | è¿æ¥å¤é¨ Metastoreï¼æåºè¡¨åç° |
| æ¨èç¨åº¦ | 宿¹å·²ä¸æ¨èä¸è¬åºæ¯ä½¿ç¨ | 宿¹æ¨èç¨äº HiveãIcebergãHudiãJDBC çå¤é¨æ°æ®æ¥è¯¢ |
| å ¸åé®é¢ | è¡¨å¤æ¶å»ºè¡¨åç»´æ¤ææ¬é« | æ´éåç»ä¸å½å空é´åè·¨æºæ¥è¯¢ |
| éç¨è¾¹ç | å°éåå²å ¼å®¹æç¹æ®åºæ¯ | å½å主è¦è·¯çº¿ |
äºãè馿¥è¯¢æä¹åç
è馿¥è¯¢çæ ¸å¿æ¯â䏿®µå¼å½åâï¼catalog.database.tableï¼è·¨ Catalog è馿¥è¯¢æ¶ï¼å¯ä»¥ç¨catalog_name.database_nameæcatalog_name.database_name.table_nameæå®è¦æ¥è¯¢çæ°æ®ã
-- å½åå¨ default_catalog.olap_db ä¸ï¼æ¥è¯¢ Hive Catalog ä¸ç表
SELECT *
FROM hive_catalog.hive_db.hive_table;
-- å½åå¨ hive_catalog.hive_db ä¸ï¼æ¥è¯¢ StarRocks å
é¨è¡¨
SELECT *
FROM default_catalog.olap_db.olap_table;
-- å
é¨è¡¨ä¸å¤é¨è¡¨ Join
SELECT *
FROM hive_catalog.hive_db.hive_table h
JOIN default_catalog.olap_db.olap_table o
ON h.id = o.id;
仿§è¡è§è§çï¼è馿¥è¯¢ä¸æ¯ææææ°æ®å å¤å¶å°ä¸ä¸ªå°æ¹ï¼èæ¯å¨åä¸ä¸ª SQL 计åä¸ç»åä¸å Scan èç¹ãStarRocks ç FE è´è´£è§£æ Catalogãè·åå æ°æ®ãçæåå¸å¼è®¡åï¼BE/CN è´è´£å¹¶è¡æ«æ StarRocks å é¨ Tablet æå¤é¨æä»¶/è¿ç«¯æ°æ®ï¼å¹¶å®æè¿æ»¤ãJoinãèåçç®åã
è¿ä¸ªè½å让 StarRocks å¯ä»¥æä¸ºç»ä¸åæå ¥å£ï¼ä½å®ä¹è¦æ±çè§£æ¯ç±»æ°æ®æºç代价模åãæ¹è¡¨æ«æå¯è½åæä»¶æ°éã对象åå¨å»¶è¿ãååºè£åªå½±åï¼JDBC Catalog å¯è½åè¿ç«¯æ°æ®åºè¿æ¥æ°ãç½ç»å»¶è¿ãè°è¯ä¸æ¨åè¿åæ°æ®éå½±åï¼å é¨è¡¨åæ´éåé«å¹¶åãä½å»¶è¿ãé¢ç¹è®¿é®çæå¡åæ¥è¯¢ã
å ãæ§è½ä¼å
1.Data Cache
External Catalog æ¥è¯¢å¤é¨æä»¶æ¶ï¼è¿ç«¯ I/O ç»å¸¸æ¯æ§è½ç¶é¢ãData Cache 伿è¿ç¨åå¨ä¸çæ°æ®æåå è½½å°æ¬å°ç¼åï¼åå°å¯¹è±¡åå¨è¯»å忬å°ç£çåå ¥ååï¼ä» v3.4.0 èµ·ï¼StarRocks 对 External Catalog æ¥è¯¢ååç®å离é群äºåç表使ç¨ç»ä¸ Data Cache å®ä¾ã
Data Cache éåéå¤è®¿é®ç¸åååºãç¸ååãç¸åæ¶é´çªå£çåºæ¯ï¼ä¾å¦ BI çæ¿ãæ¥å¸¸æ¥è¡¨ãåºå®åæè·¯å¾ãå®ç¼åçæ¯æ°æ®åï¼ä¸æ¯è®¡ç®ç»æï¼å æ¤å¯¹å¤æ Join åèåç CPU 代价叮婿éã
Data Cache å·¥ä½çè§£
ç¬¬ä¸æ¬¡æ¥è¯¢ï¼
BE/CN -> è¿ç«¯å¯¹è±¡åå¨/HDFS -> è¯»åæ°æ®å -> åå
¥æ¬å°ç¼å -> è¿åç»æ
åç»å½ä¸ï¼
BE/CN -> æ¬å° Data Cache -> è¿åæ°æ®å -> ç»§ç»è®¡ç®
éåï¼
ç¸åçç¹ååºå夿¥
ç¸åæ¥è¡¨å¨ææ§æ¥
æ¹è¡¨å·å¯å¨åéè¦ç¨³å®å»¶è¿
ä¸éååç¬è§£å³ï¼
大 Join 计ç®ä»£ä»·
è·¨æºç½ç»å»¶è¿
è¿ç«¯ JDBC å¤§è¡¨æ«æ
2.弿¥ç©åè§å¾
对äºé¢ç¹æ§è¡ã计ç®å¤æãèåæ Join 代价é«çå¤é¨æ°æ®æ¥è¯¢ï¼åªé Data Cache å¾å¾ä¸å¤ãStarRocks 弿¥ç©åè§å¾è½å¤ä¿åä¸ä¸ªæå¤ä¸ªåºè¡¨çé¢è®¡ç®ç»æï¼å¹¶éè¿æ¥è¯¢æ¹åå¤ç¨è¿äºç»æï¼å¼æ¥ç©åè§å¾çåºè¡¨å¯ä»¥æ¥èªÂ default_catalogãExternal Catalogãå·²æç©åè§å¾åè§å¾ã
卿°æ®æ¹å éåºæ¯ä¸ï¼StarRocks æ¯æåºäº HiveãIcebergãHudiãJDBCãPaimon ç External Catalog åå»ºå¼æ¥ç©åè§å¾ï¼å¹¶éç¨äºæ°æ®æ¹æ¥è¡¨éæå éã宿¶æ°æ®å ³èå岿°æ®ãå¿«éæå»ºææ å±çåºæ¯ã ä½ä¹è¦æ³¨æéå¶ï¼å¤é¨è¡¨ç©åè§å¾ä¸æ¯æç±åºè¡¨æ°æ®ååèªå¨è§¦åå·æ°ï¼åªæ¯æå¼æ¥åºå®é´éå·æ°åæå¨å·æ°ï¼ä¸å¤é¨ Catalog åºè¡¨ä¸ç©åè§å¾ä¹é´ä¸ä¿è¯ä¸¥æ ¼ä¸è´æ§ã
External Catalog + Async MV
å¤é¨æ¹è¡¨ / JDBC 表 / å
é¨å®æ¶è¡¨
|
| 夿 Join / Agg / Rollup
v
+-----------------------------+
| StarRocks Async MV |
| - é¢è®¡ç®ç»æ |
| - æ¬å°åå¨ |
| - æ¥è¯¢æ¹å |
| - 宿¶ææå¨å·æ° |
+-----------------------------+
|
v
BI / API ç»§ç»æ¥å SQLï¼å½ä¸æ¶èªå¨å é
3.å¯¼å ¥å é¨è¡¨
å½ä¸ç±»æ¥è¯¢å¯¹æ¶å»¶ãå¹¶åãç¨³å®æ§åèµæºéç¦»è¦æ±å¾é«æ¶ï¼æç¨³çæ¹æ¡ä»ç¶æ¯ææ°æ®å¯¼å ¥ StarRocks å é¨è¡¨ãExternal Table æå设计æ¯å¸®å©å è½½æ°æ®å° StarRocksï¼è䏿¯ä½ä¸ºå¸¸è§é«ææ¥è¯¢å¤é¨ç³»ç»çæ¹å¼ï¼æ´é«æ§è½çæ¹æ¡éå¸¸æ¯ææ°æ®å è½½å° StarRocksã
å æ¤ï¼ç»ä¸åæä¸æ¯âæææ°æ®é½ä¸å ¥ä»âï¼èæ¯ææ°æ®ç§»å¨åææä¾æ®çå³çï¼
æ¥è¯¢æ²»çå³çæ
æå¼ å¤é¨è¡¨è¢«æ¥è¯¢
|
+-----------+-----------+
| |
ä½é¢æ¢ç´¢ é«é¢ç¨³å®
| |
ç´æ¥ External Catalog æ¯å¦è®¡ç®å¤æï¼
|
+-----------+-----------+
| |
ä¸å¤æ 夿
| |
Data Cache ä¼å
Async MV / å
é¨è¡¨
|
å»¶è¿ä»ä¸æ»¡è¶³ï¼
|
导å
¥å
é¨è¡¨
ä¸ãç»ä¸åæçæ¶æè½å°
External Catalog çæ£è½å°æ¶ï¼ä¸åºåªé®âè½ä¸è½æ¥âï¼èåºé®âåªäºæ°æ®ç´æ¥æ¥ï¼åªäºæ°æ®ç¼åï¼åªäºæ°æ®ç©åï¼åªäºæ°æ®å¯¼å ¥å é¨è¡¨âãä¸ä¸ªè¾ç¨³å¦¥çå屿¹å¼å¦ä¸ï¼
ç»ä¸åæè½å°åå±
+--------------------------------------------------+
| BI / Notebook / Ad-hoc SQL / Metric API |
+---------------------------+----------------------+
|
v
+--------------------------------------------------+
| StarRocks SQL ç»ä¸å
¥å£ |
| - default_catalog å
é¨è¡¨ |
| - external catalogs å¤é¨æ°æ®æº |
| - cross-catalog federated query |
+------------+----------------+--------------------+
| |
v v
+--------------------+ +-------------------------+
| å éå± | | å¤é¨æ°æ®å± |
| - Async MV | | Hive / Iceberg / Hudi |
| - Data Cache | | Delta / Paimon / JDBC |
| - Native Table | | Elasticsearch / Kudu |
+--------------------+ +-------------------------+
|
v
+--------------------------------------------------+
| æ²»çå±ï¼æéãè¡ç¼ãå
æ°æ®å·æ°ãèµæºéç¦»ãææ¬çæ§ |
+--------------------------------------------------+
å¯ä»¥ææ°æ®åæåç±»å¤çï¼
| æ°æ®ç±»å | æ¨èè·¯å¾ | åå |
|---|---|---|
| é«é¢ææ ãDashboard æ ¸å¿çæ¿ | å¯¼å ¥ StarRocks å é¨è¡¨æå¼æ¥ç©åè§å¾ | 追æ±ä½å»¶è¿åé«å¹¶å |
| ä¸é¢æ¹ä»æç»åæ | External Catalog + Data Cache | åå°æ¬è¿ï¼ä¿ç坿¥åæ§è½ |
| ä½é¢æ¢ç´¢æ§æ¥è¯¢ | ç´æ¥ External Catalog æ¥è¯¢ | éä½å»ºæ¨¡ååæ¥ææ¬ |
| å°è§æ¨¡ç»´è¡¨ãé 置表 | JDBC Catalog èæ¥ï¼æå®æåæ¥å é¨è¡¨ | ç´æ¥èæ¥æ¹ä¾¿ï¼ä½å¤§è¡¨æ«æé£é©é« |
å «ã踩åå®è·µ
| åç¹ | è¡¨ç° | 建议 |
|---|---|---|
| æ External Catalog å½å é¨è¡¨ç¨ | 大éè¿ç«¯æ«æï¼å»¶è¿ä¸ç¨³å® | é«é¢æ¥è¯¢å¯¼å ¥å é¨è¡¨æå»ºå¼æ¥ç©åè§å¾ |
| JDBC Catalog æ«å¤§è¡¨ | è¿ç«¯ä¸å¡åºåååé«ï¼æ¥è¯¢æ ¢ | åªèæ¥å°ç»´è¡¨ï¼å¤§è¡¨åæ¥æåæ¹å å·¥ |
| 忽ç¥å æ°æ®å·æ° | æ°ååºæ¥ä¸å°ï¼Schema ä¸ä¸è´ | æ°æ®åå¸åæ§è¡ REFRESH EXTERNAL TABLE æé ç½®å·æ°çç¥ |
| åªçåè½ä¸ççæ¬ | SQL åæ³æ£ç¡®ä½è½åä¸å¯ç¨ | æ StarRocks çæ¬æ ¸å¯¹ Catalogãæ ¼å¼ãMV æ¯æç©éµ |
| è¯¯ç¨ External Table | æ°æ¶æä»å¤§é建å¤è¡¨ | ä¸è¬åºæ¯æ¹ç¨ External Catalog |
| ç©åè§å¾ä¸è´æ§é¢æè¿é« | å¤é¨è¡¨æ´æ°å MV æªåæ¥ | 使ç¨åºå®å·æ°ææå¨å·æ°ï¼å¹¶å¯¹å¤è¯´ææ°æ®å»¶è¿ |
| Unified Catalog 误解为任æç»ä¸ | å¤å¥ Metastore/Storage æ¥ä¸è¿åä¸ Catalog | ä¸ä¸ª Unified Catalog åªæ¯æåä¸åå¨ç³»ç»ååä¸ Metastore |
Aitishiku.com