最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

使用 Databend 加速 Hive 查詢(xún)

2023-09-21 18:23 作者:Databend  | 我要投稿

作者:尚卓燃(PsiACE)

澳門(mén)科技大學(xué)在讀碩士,Databend 研發(fā)工程師實(shí)習(xí)生

Apache OpenDAL(Incubating) Committer

https://github.com/PsiACE

隨著架構(gòu)的不斷迭代和更新,大數(shù)據(jù)系統(tǒng)的查詢(xún)目標(biāo)也從大吞吐量查詢(xún)逐步轉(zhuǎn)移轉(zhuǎn)向快速的交互式查詢(xún),對(duì)于查詢(xún)的及時(shí)響應(yīng)提出了更高要求。許多企業(yè)的數(shù)倉(cāng)/數(shù)據(jù)湖中都有 PB 級(jí)的數(shù)據(jù),其中絕大多數(shù)都屬于舊有系統(tǒng)中的歷史數(shù)據(jù),很少更新,移動(dòng)起來(lái)很麻煩,重新組織元數(shù)據(jù)也需要花費(fèi)大量的時(shí)間。需要解決的問(wèn)題是:如何在保證現(xiàn)有的數(shù)據(jù)和元數(shù)據(jù)不變的情況下加速查詢(xún)。

上圖是一個(gè)典型的使用 Databend 加速 Hive 查詢(xún)的架構(gòu)。用戶(hù)使用 trino 、Spark 等引擎將數(shù)據(jù)納入 Hive 進(jìn)行管理,數(shù)據(jù)的存放位置則位于 S3 、GCS 、HDFS 等存儲(chǔ)服務(wù)之中。引入 Databend 可以帶來(lái)更好的查詢(xún)性能。

和 trino 以及大多數(shù)支持 Hive Catalog / Connector 的查詢(xún)引擎一樣,Databend 可以復(fù)用 Hive 除了運(yùn)行時(shí)(查詢(xún)引擎)之外的其他組件,包括用于管理文件和底層存儲(chǔ)的存儲(chǔ)服務(wù)和管理 SQL 表到文件和目錄映射的 Hive MetaStore 。

Databend 中的數(shù)據(jù)按三層進(jìn)行組織:"catalog -> database -> table" ,"catalog" 作為數(shù)據(jù)最大一層,會(huì)包含所有的數(shù)據(jù)庫(kù)和表。通過(guò) "CREATE CATALOG" 語(yǔ)句,用戶(hù)可以輕松創(chuàng)建 Hive Catalog 。在執(zhí)行查詢(xún)時(shí),需要按 "<catalog>.<database>.<table>" 的格式指定到表。

通過(guò)這種形式,用戶(hù)無(wú)需向 Databend 中導(dǎo)入數(shù)據(jù),就可以直接查詢(xún)位于 Hive/Iceberg Catalog 中的數(shù)據(jù),并獲得 Databend 的性能保證。

Workshop :使用 Databend 加速 Hive 查詢(xún)

接下來(lái),讓我們通過(guò)兩個(gè)例子,了解 Databend 是如何加速不同存儲(chǔ)服務(wù)下的 Hive 查詢(xún)的。

使用 HDFS 存儲(chǔ)

Hive + HDFS 的實(shí)驗(yàn)環(huán)境可以使用 https://github.com/PsiACE/databend-workshop/tree/main/hive-hdfs 中的環(huán)境搭建

接下來(lái),讓我們一起準(zhǔn)備數(shù)據(jù):

  • 進(jìn)入 hive-server ,使用 beeline 連接:

docker-compose exec hive-server bash beeline -u jdbc:hive2://localhost:10000

  • 創(chuàng)建數(shù)據(jù)庫(kù)、表和數(shù)據(jù),注意,需要以 Parquet 格式存儲(chǔ):

由于 HDFS 支持需要使用 "libjvm.so" 和 Hadoop 的若干 Jar 包,請(qǐng)確保你安裝了正確的 JDK 環(huán)境并配置相關(guān)的環(huán)境變量:

參考 Deploying a Standalone Databend[1] ,使用帶有 HDFS 特性的 Databend 分發(fā)(databend-hdfs-*),部署一個(gè)單節(jié)點(diǎn)的 Databend 實(shí)例。

通過(guò) BendSQL 連接這個(gè) Databend 實(shí)例,然后創(chuàng)建對(duì)應(yīng)的 Hive Catalog ,記得要通過(guò) "CONNECTION" 字段為其配置對(duì)應(yīng)的存儲(chǔ)后端:

在上面的語(yǔ)句中,我們創(chuàng)建了一個(gè)底層存儲(chǔ)使用 HDFS 的 Hive Catalog:

  • 通過(guò) "TYPE" 指定創(chuàng)建 Hive 類(lèi)型的 Catalog 。

  • "CONNECTION" 用于指定 HIVE 相關(guān)的存儲(chǔ)/元數(shù)據(jù)訪問(wèn)信息,可以閱讀 Docs | Connection Parameters[2]? 了解更多相關(guān)信息。

    • "METASTORE_ADDRESS" 對(duì)應(yīng) Hive MetaStore 的地址

    • "URL" 對(duì)應(yīng) HDFS 的 Path

    • "NAME_NODE" 則對(duì)應(yīng) HDFS 的 Name Node 地址

讓我們嘗試運(yùn)行一個(gè)簡(jiǎn)單的 "SELECT" 查詢(xún),驗(yàn)證其是否能夠正常工作:

使用 S3-like 對(duì)象存儲(chǔ)

Trino + Hive + MinIO 的實(shí)驗(yàn)環(huán)境可以使用 https://github.com/sensei23/trino-hive-docker/ 進(jìn)行搭建。

在執(zhí)行完 "docker-compose up -d" 等前置步驟后,先進(jìn)入 MinIO 控制面板,創(chuàng)建一個(gè)名為 "tpch" 的 Bucket 。

運(yùn)行下述命令可以打開(kāi) trino 命令行工具:

接著創(chuàng)建一個(gè)小型的 TPCH 客戶(hù)表。注意,為了滿(mǎn)足 Databend 使用要求,這里需要使用 Parquet 格式:

查詢(xún)對(duì)應(yīng)的 Hive 元數(shù)據(jù),可以看到像下面這樣的信息:

參考 Deploying a Standalone Databend[3] 部署一個(gè)單節(jié)點(diǎn)的 Databend 實(shí)例。

通過(guò) BendSQL 連接這個(gè) Databend 實(shí)例,然后創(chuàng)建對(duì)應(yīng)的 Hive Catalog ,記得要通過(guò) CONNECTION 字段為其配置對(duì)應(yīng)的存儲(chǔ)后端:

在上面的語(yǔ)句中,我們創(chuàng)建了一個(gè)底層存儲(chǔ)使用 MinIO 的 Hive Catalog:

  • 通過(guò) "TYPE" 指定創(chuàng)建 Hive 類(lèi)型的 Catalog 。

  • "CONNECTION" 用于指定 HIVE 相關(guān)的存儲(chǔ)/元數(shù)據(jù)訪問(wèn)信息,可以閱讀 Docs | Connection Parameters 了解更多相關(guān)信息。

    • "METASTORE_ADDRESS" 對(duì)應(yīng) Hive MetaStore 的地址

    • "URL" 則對(duì)應(yīng) MinIO 的 Bucket 或者 Path

    • "AWS_KEY_ID" 和 "AWS_SECRET_KEY" 則對(duì)應(yīng)訪問(wèn)時(shí)的校驗(yàn),這里使用了 MinIO 服務(wù)的用戶(hù)名和密碼

    • "ENDPOINT_URL" 是 MinIO 對(duì)象存儲(chǔ)服務(wù)的 API 端點(diǎn)

讓我們嘗試運(yùn)行一個(gè)簡(jiǎn)單的 "SELECT" 查詢(xún),驗(yàn)證其是否能夠正常工作:

提示

  • 要使用 SQL 語(yǔ)句創(chuàng)建帶有多種存儲(chǔ)支持的 Hive Catalog,推薦使用 v1.2.100-nightly[4] 及以后版本。

  • 不再需要從 toml 文件進(jìn)行配置就可以獲得多源數(shù)據(jù)目錄能力。

  • 如果需要獲取 HDFS 存儲(chǔ)服務(wù)支持,則需要部署或者編譯帶有 HDFS 特性的 Databend ,比如 databend-hdfs-v1.2.100-nightly-x86_64-unknown-linux-gnu.tar.gz[5]

  • 對(duì)于 Hive Catalog ,Databend 目前只支持查詢(xún) Parquet 格式的數(shù)據(jù),且只支持 SELECT[6],不支持其他 DDL 、DML 和 UDFs 。

  • Databend 的語(yǔ)法與 Hive 并不完全兼容,關(guān)于 SQL 兼容性相關(guān)的內(nèi)容,可以查看 Docs | SQL Conformance[7] 。

引用鏈接

[1]?Deploying a Standalone Databend:?https://databend.rs/doc/deploy/deploying-databend
[2]?Docs | Connection Parameters:?https://databend.rs/doc/sql-reference/connect-parameters
[3]?Deploying a Standalone Databend:?https://databend.rs/doc/deploy/deploying-databend
[4]?v1.2.100-nightly:?https://github.com/datafuselabs/databend/releases/tag/v1.2.100-nightly
[5]?databend-hdfs-v1.2.100-nightly-x86_64-unknown-linux-gnu.tar.gz:?https://github.com/datafuselabs/databend/releases/download/v1.2.100-nightly/databend-hdfs-v1.2.83-nightly-x86_64-unknown-linux-gnu.tar.gz
[6]?SELECT:?https://databend.rs/doc/sql-commands/query-syntax/query-select
[7]?Docs | SQL Conformance:?https://databend.rs/doc/sql-reference/ansi-sql


使用 Databend 加速 Hive 查詢(xún)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
德阳市| 沈丘县| 凭祥市| 盐城市| 普兰店市| 瓮安县| 上林县| 鄂尔多斯市| 新沂市| 叶城县| 东至县| 万州区| 宜春市| 洛川县| 万盛区| 太康县| 搜索| 安吉县| 金川县| 叶城县| 新宾| 花莲市| 灵石县| 韩城市| 江达县| 屯昌县| 西乌珠穆沁旗| 睢宁县| 云林县| 黄陵县| 洛阳市| 楚雄市| 东台市| 宣城市| 莲花县| 定兴县| 嘉峪关市| 平潭县| 延边| 崇仁县| 南涧|