[1.2.0新功能系列:二] Apache Doris 1.2.0 JDBC外表 及 Mutil Catalog

JDBC 外表

JDBC External Table Of Doris 提供了Doris通過數(shù)據(jù)庫訪問的標(biāo)準(zhǔn)接口(JDBC)來訪問外部表,外部表省去了繁瑣的數(shù)據(jù)導(dǎo)入工作,也省去了之前ODBC繁雜的驅(qū)動(dòng)安裝部署及版本匹配問題,兼容性更好,操作更簡(jiǎn)單,讓Doris可以具有了訪問各式數(shù)據(jù)庫的能力,并借助Doris本身的OLAP的能力來解決外部表的數(shù)據(jù)分析問題:

支持各種數(shù)據(jù)源接入Doris

支持Doris與各種數(shù)據(jù)源中的表聯(lián)合查詢,進(jì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é)點(diǎn)都要有這個(gè)驅(qū)動(dòng) Jar 包

http 方式是 FE 和 BE 是通過 http 方式下載驅(qū)動(dòng)到本地

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"
);

查詢外表

image.png

這里我們使用MySQL來演示,其他的JDBC外表使用方式一樣,具體請(qǐng)參靠官方文檔: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 版本中推出的功能,旨在能夠更方便對(duì)接外部數(shù)據(jù)目錄,以增強(qiáng)Doris的數(shù)據(jù)湖分析和聯(lián)邦數(shù)據(jù)查詢能力。

在之前的 Doris 版本中,用戶數(shù)據(jù)只有兩個(gè)層級(jí):Database 和 Table。當(dāng)我們需要連接一個(gè)外部數(shù)據(jù)目錄時(shí),我們只能在Database 或 Table 層級(jí)進(jìn)行對(duì)接。比如通過 create external table 的方式創(chuàng)建一個(gè)外部數(shù)據(jù)目錄中的表的映射,或通過 create external database 的方式映射一個(gè)外部數(shù)據(jù)目錄中的 Database。如果外部數(shù)據(jù)目錄中的 Database 或 Table 非常多,則需要用戶手動(dòng)進(jìn)行一一映射,使用體驗(yàn)不佳。

而新的 Multi-Catalog 功能在原有的元數(shù)據(jù)層級(jí)上,新增一層Catalog,構(gòu)成 Catalog -> Database -> Table 的三層元數(shù)據(jù)層級(jí)。其中,Catalog 可以直接對(duì)應(yīng)到外部數(shù)據(jù)目錄。目前支持的外部數(shù)據(jù)目錄包括:

Hive MetaStore:對(duì)接一個(gè) Hive MetaStore,從而可以直接訪問其中的 Hive、Iceberg、Hudi 等數(shù)據(jù)。

Elasticsearch:對(duì)接一個(gè) ES 集群,并直接訪問其中的表和分片。

JDBC: 對(duì)接數(shù)據(jù)庫訪問的標(biāo)準(zhǔn)接口(JDBC)來訪問各式數(shù)據(jù)庫的數(shù)據(jù)。(目前只支持訪問MYSQL)

JDBC Mutil Catalog
下面我們以 MySQL 為例演示 Mutil Catalog 使用

用于創(chuàng)建一個(gè)名為 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é)點(diǎn)都要有這個(gè)驅(qū)動(dòng) Jar 包

http 方式是 FE 和 BE 是通過 http 方式下載驅(qū)動(dòng)到本地

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;
image.png

切換到我們創(chuàng)建好的 jdbc catalog

mysql> switch jdbc;
Query OK, 0 rows affected (0.00 sec)

查看 jdbc catalog 下的數(shù)據(jù)庫

 show databases;
image.png

切換數(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ù)庫下的表


image.png

查看表結(jié)構(gòu)

 desc order_analysis;
image.png

查詢表

select date,user_src,order_src from order_analysis limit 2;
image.png

下面你就可以通過這個(gè),創(chuàng)建Doris的OLAP表將MySQL的表通過下面這種方式導(dǎo)入到Doris表里

insert into <doris_table> select * from <mysql_table>
你也可以很輕松的使用 JDBC Mutil Catalog方式將MySQL表和Doris表進(jìn)行關(guān)聯(lián)分析,而不需要?jiǎng)?chuàng)建外表

我們來使用jdbc mutil catalog 外表,使用create table as select方式創(chuàng)建一個(gè)doris olap表并將外表的數(shù)據(jù)導(dǎo)入到doris里

create table demo.order_analysis_3 
PROPERTIES("replication_num" = "1")  
as select * from jdbc.demo.order_analysis;

上面這個(gè)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),為用戶提供更方便、更快捷的使用體驗(yàn)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容