JDBC 外表
JDBC External Table Of Doris 提供了Doris通過數(shù)據(jù)庫訪問的標(biāo)準(zhǔn)接口(JDBC)來訪問外部表,外部表省去了繁瑣的數(shù)據(jù)導(dǎo)入工作存淫,也省去了之前ODBC繁雜的驅(qū)動安裝部署及版本匹配問題,兼容性更好叮盘,操作更簡單僵芹,讓Doris可以具有了訪問各式數(shù)據(jù)庫的能力,并借助Doris本身的OLAP的能力來解決外部表的數(shù)據(jù)分析問題:
支持各種數(shù)據(jù)源接入Doris
支持Doris與各種數(shù)據(jù)源中的表聯(lián)合查詢涩搓,進行更加復(fù)雜的分析操作
創(chuàng)建 JDBC Resource
Doris 目前支持的JDBC數(shù)據(jù)源有:MySQL,Oracle劈猪,PostgreSQL昧甘,SQLServer,Clickhouse
這里我們以MySQL為例來演示
CREATE EXTERNAL RESOURCE jdbc_resource
properties (
"type"="jdbc",
"user"="root",
"password"="zhangfeng",
"jdbc_url"="jdbc:mysql://192.168.31.54:3306/demo",
"driver_url"="file:///Users/zhangfeng/.m2/repository/mysql/mysql-connector-java/8.0.29/mysql-connector-java-8.0.29.jar",
"driver_class"="com.mysql.cj.jdbc.Driver"
);
這里 driver_url 可以使用本地路徑和http路徑兩種方式战得,
注意:
如果是本地路徑要求所有 FE 和 BE 節(jié)點都要有這個驅(qū)動 Jar 包
http 方式是 FE 和 BE 是通過 http 方式下載驅(qū)動到本地
http方式示例如下:
CREATE EXTERNAL RESOURCE jdbc_resource
properties (
"type"="jdbc",
"user"="root",
"password"="zhangfeng",
"jdbc_url"="jdbc:mysql://192.168.31.54:3306/demo",
"driver_url"="http://192.168.31.54/8.0.29/mysql-connector-java-8.0.29.jar",
"driver_class"="com.mysql.cj.jdbc.Driver"
);
創(chuàng)建MySQL JDBC 外表
CREATE TABLE `order_analysis` (
`date` varchar(20),
`user_src` varchar(20) ,
`order_src` varchar(11) ,
`order_location` varchar(2),
`new_order` int DEFAULT NULL,
`payed_order` int DEFAULT NULL,
`pending_order` int DEFAULT NULL,
`cancel_order` int DEFAULT NULL,
`reject_order` int DEFAULT NULL,
`good_order` int DEFAULT NULL,
`report_order` int DEFAULT NULL
) ENGINE=JDBC
PROPERTIES (
"resource" = "jdbc_resource",
"table" = "order_analysis",
"table_type"="mysql"
);
查詢外表
這里我們使用MySQL來演示充边,其他的JDBC外表使用方式一樣,具體請參靠官方文檔:https://doris.apache.org/zh-CN/docs/dev/ecosystem/external-table/jdbc-of-doris
Mutil Catalog 訪問 MySQL
多源數(shù)據(jù)目錄(Multi-Catalog)是 Doris 1.2.0 版本中推出的功能,旨在能夠更方便對接外部數(shù)據(jù)目錄浇冰,以增強Doris的數(shù)據(jù)湖分析和聯(lián)邦數(shù)據(jù)查詢能力贬媒。
在之前的 Doris 版本中,用戶數(shù)據(jù)只有兩個層級:Database 和 Table肘习。當(dāng)我們需要連接一個外部數(shù)據(jù)目錄時际乘,我們只能在Database 或 Table 層級進行對接。比如通過 create external table 的方式創(chuàng)建一個外部數(shù)據(jù)目錄中的表的映射漂佩,或通過 create external database 的方式映射一個外部數(shù)據(jù)目錄中的 Database脖含。如果外部數(shù)據(jù)目錄中的 Database 或 Table 非常多,則需要用戶手動進行一一映射投蝉,使用體驗不佳器赞。
而新的 Multi-Catalog 功能在原有的元數(shù)據(jù)層級上,新增一層Catalog墓拜,構(gòu)成 Catalog -> Database -> Table 的三層元數(shù)據(jù)層級。其中请契,Catalog 可以直接對應(yīng)到外部數(shù)據(jù)目錄咳榜。目前支持的外部數(shù)據(jù)目錄包括:
Hive MetaStore:對接一個 Hive MetaStore,從而可以直接訪問其中的 Hive爽锥、Iceberg涌韩、Hudi 等數(shù)據(jù)。
Elasticsearch:對接一個 ES 集群氯夷,并直接訪問其中的表和分片臣樱。
JDBC: 對接數(shù)據(jù)庫訪問的標(biāo)準(zhǔn)接口(JDBC)來訪問各式數(shù)據(jù)庫的數(shù)據(jù)。(目前只支持訪問MYSQL)
JDBC Mutil Catalog
下面我們以 MySQL 為例演示 Mutil Catalog 使用
用于創(chuàng)建一個名為 jdbc 的 Catalog 連接指定的 MySQL
CREATE CATALOG jdbc PROPERTIES (
"type"="jdbc",
"jdbc.user"="root",
"jdbc.password"="zhangfeng",
"jdbc.jdbc_url" = "jdbc:mysql://localhost:3306/demo",
"jdbc.driver_url" = "file:///Users/zhangfeng/.m2/repository/mysql/mysql-connector-java/8.0.29/mysql-connector-java-8.0.29.jar",
"jdbc.driver_class" = "com.mysql.cj.jdbc.Driver"
);
這里 jdbc.driver_url 可以使用本地路徑和http路徑兩種方式腮考,
注意:
如果是本地路徑要求所有 FE 和 BE 節(jié)點都要有這個驅(qū)動 Jar 包
http 方式是 FE 和 BE 是通過 http 方式下載驅(qū)動到本地
http方式示例如下:
CREATE CATALOG jdbc_resource properties (
"type"="jdbc",
"jdbc.user"="root",
"jdbc.password"="zhangfeng",
"jdbc.jdbc_url"="jdbc:mysql://192.168.31.54:3306/demo",
"jdbc.driver_url"="http://192.168.31.54/8.0.29/mysql-connector-java-8.0.29.jar",
"jdbc.driver_class"="com.mysql.cj.jdbc.Driver"
);
然后我們查看創(chuàng)建好的 Catalog 并切換到我們創(chuàng)建的 catalog下
show catalogs;
切換到我們創(chuàng)建好的 jdbc catalog
mysql> switch jdbc;
Query OK, 0 rows affected (0.00 sec)
查看 jdbc catalog 下的數(shù)據(jù)庫
show databases;
切換數(shù)據(jù)庫
mysql> use demo;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
查看數(shù)據(jù)庫下的表
查看表結(jié)構(gòu)
desc order_analysis;
查詢表
select date,user_src,order_src from order_analysis limit 2;
下面你就可以通過這個雇毫,創(chuàng)建Doris的OLAP表將MySQL的表通過下面這種方式導(dǎo)入到Doris表里
insert into <doris_table> select * from <mysql_table>
你也可以很輕松的使用 JDBC Mutil Catalog方式將MySQL表和Doris表進行關(guān)聯(lián)分析,而不需要創(chuàng)建外表
我們來使用jdbc mutil catalog 外表踩蔚,使用create table as select方式創(chuàng)建一個doris olap表并將外表的數(shù)據(jù)導(dǎo)入到doris里
create table demo.order_analysis_3
PROPERTIES("replication_num" = "1")
as select * from jdbc.demo.order_analysis;
上面這個sql 我們是通過 jdbc mutil catalog 外表的 jdbc.demo.order_analysis;
這里以 JDBC Mutil Catalog方式演示了Mutil Catalog方式的使用棚放,其他Hive、Hudi馅闽、Iceberg及ES使用方法一樣飘蚯,具體可以參照官方文檔:https://doris.apache.org/zh-CN/docs/dev/ecosystem/external-table/multi-catalog
后面我們也將持續(xù)的將其他的DB融合到Mutil Catalog內(nèi),為用戶提供更方便福也、更快捷的使用體驗