導語:Apache Linkis生態全景圖中集成了OceanBase,這個集成爲Linkis生態帶來了更強大的數據存儲和管理能力,進一步提升了平臺的功能和性能。通過集成OceanBase,Linkis生態不僅可以提供高度可靠和高性能的數據存儲,還能夠更好地支持海量數據處理和分析。用戶可以在Linkis平臺上輕鬆地訪問和管理OceanBase中的數據,實現數據的實時查詢、分析和挖掘。
近日,計算中間件 Apache Linkis 在其新版本中通過數據源功能,支持用戶通過 Linkis 去對接使用 OceanBase 數據庫。OceanBase是由螞蟻集團完全自主研發的國產分佈式數據庫,用一套引擎同時支持TP和AP的混合負載, 具有數據強一致、高可用、高性能、在線擴展、高度兼容SQL標準和主流關係數據庫、低成本等特點。
本文主要介紹 Linkis v1.3.2 中 OceanBase 數據庫的集成。由於 OceanBase 數據庫兼容 MySQL 5.7/8.0 的大部分功能和語法。因此,OceanBase 數據庫可以當作 MySQL 使用。
想了解更多的功能特點和應用實踐,請參與6月13日Linkis與OceanBase的聯合Meetup,詳情點擊文章:《活動直播 | Apache Linkis集成OceanBase的探索與實踐》
準備工作
1. 環境安裝
安裝和部署 OceanBase 數據庫,請參閱
部署文檔
https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001687861
一文講透|如何部署OceanBase社區版
https://open.oceanbase.com/blog/2235967744
2. 環境驗證
你可以使用 MySQL 命令來驗證 OceanBase 數據庫的安裝情況。
mysql -h${ip} -P${port} -u${username} -p${password} -D${db_name}
連接成功,如下圖所示:
1. 通過 linkis-cli 提交
sh ./bin/linkis-cli -engineType jdbc-4 -codeType jdbc -code "show tables"
-submitUser hadoop -proxyUser hadoop -runtimeMap
wds.linkis.jdbc.connect.url=jdbc:mysql://${ip} :${port}/${db_name} -runtimeMap
wds.linkis.jdbc.driver=com.mysql.jdbc.Driver -runtimeMap
wds.linkis.jdbc.username=${username} -runtimeMap wds.linkis.jdbc.password
=${password}
2. 通過 Linkis Java SDK 提交任務
Linkis 提供 Java 和 Scala 的 SDK,用於向 Linkis 服務器提交任務。有關詳細信息,請參閱 JAVA SDK Manual 👇
https://linkis.apache.org/docs/latest/user-guide/sdk-manual
對於 OceanBase 任務,用戶只需要在 Demo 中修改 EngineConnType 和 CodeType 參數:
Map<String, Object> labels = new HashMap<String, Object>();
labels.put (LabelKeyConstant.ENGINE_TYPE_KEY, "jdbc-4"); // required engineType Label
labels.put(LabelKeyConstant.USER_CREATOR_TYPE_KEY, "hadoop-IDE");// required execute user and creator
labels.put(LabelKeyConstant.CODE_TYPE_KEY, "jdbc"); // required codeType
3. 多數據源支持
路徑:登錄管理平臺-->數據源管理
第一步:創建新的數據源
第二步:連接測試
單擊測試連接按鈕進行測試
第三步:發佈數據源
第四步:通過指定數據源名稱提交 OceanBase 任務
請求 URL:
http://${gateway_url}:${port}/api/rest_j/v1/entrance/submit
方法:POST
請求參數:
{
"executionContent": {
"code": "show databases",
"runType": "jdbc"
},
"params": {
"variable": {},
"configuration": {
"startup": {},
"runtime": {
"wds.linkis.engine.runtime.datasource": "ob-test"
}
}
},
"labels": {
"engineType": "jdbc-4"
}
}
迴應:
{
"method": "/api/entrance/submit",
"status": 0,
"message": "OK",
"data": {
"taskID": 93,
"execID": "exec_id018017linkis-cg-entrance000830fb1364:9104IDE_hadoop_jdbc_0"
}
}
Linkis 作爲中間計算層,使各個上層應用以緊耦合的方式直接連接和訪問各種底層引擎如 OceanBase、MySQL 等。實現了統一變量等用戶資源的互通,腳本、UDF、函數和資源文件,並通過 REST 標準接口提供數據源和元數據管理服務。
Linkis 強大的連接、重用、編排、擴展和治理能力,通過應用層和引擎層的解耦,以標準化可重用的方式解決了擴展難、應用孤島、重複造輪子等複雜的連接問題。簡化了複雜的網絡調用關係,從而降低了整體的複雜度,也節省了開發和維護成本。
未來, Linkis 計劃進一步和 OceanBase 進行集成,包括 Linkis ETL 功能支持 OceanBase,完成 OceanBase 和其他數據源的導入導出等,並支持將 Linkis 的元數據存儲到 OceanBase。
本文分享自微信公衆號 - WeDataSphere(gh_273e85fce73b)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。