Apache Linkis 與 OceanBase 集成:實現數據分析速度提升

導語: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}

連接成功,如下圖所示:



Linkis 提交執行 OceanBase 數據庫任務


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<StringObject> labels = new HashMap<StringObject>(); labels.put (LabelKeyConstant.ENGINE_TYPE_KEY, "jdbc-4"); // required engineType Labellabels.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源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章