Apache中怎么使用Hive3實(shí)現(xiàn)跨數(shù)據(jù)庫(kù)聯(lián)邦查詢

這篇文章將為大家詳細(xì)講解有關(guān)Apache中怎么使用Hive3實(shí)現(xiàn)跨數(shù)據(jù)庫(kù)聯(lián)邦查詢,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),成都做網(wǎng)站公司-創(chuàng)新互聯(lián)已向上千多家企業(yè)提供了,網(wǎng)站設(shè)計(jì),網(wǎng)站制作,網(wǎng)絡(luò)營(yíng)銷等服務(wù)!設(shè)計(jì)與技術(shù)結(jié)合,多年網(wǎng)站推廣經(jīng)驗(yàn),合理的價(jià)格為您打造企業(yè)品質(zhì)網(wǎng)站。

1

使用Apache Hive3.0&SQL來(lái)進(jìn)行統(tǒng)一訪問(wèn)

Apache Hive在上述環(huán)境中扮演著重要角色。更具體一點(diǎn)的說(shuō),它可以訪問(wèn)上述所有系統(tǒng),并提供統(tǒng)一高效的SQL訪問(wèn),而且是開(kāi)箱即用的。這樣做的好處是巨大的:

1.單個(gè)SQL方言和API

2.集中安全控制和審計(jì)跟蹤

3.統(tǒng)一治理

4.能夠合并來(lái)自多個(gè)數(shù)據(jù)源的數(shù)據(jù)

5.數(shù)據(jù)獨(dú)立性

設(shè)置和使用Apache Hive作為聯(lián)邦層可簡(jiǎn)化應(yīng)用程序開(kāi)發(fā)和數(shù)據(jù)訪問(wèn)。特別是所有數(shù)據(jù)都可以使用SQL進(jìn)行處理,并且可以通過(guò)熟悉的JDBC/ODBC接口進(jìn)行訪問(wèn)。

最重要的事,因?yàn)樗械臄?shù)據(jù)訪問(wèn)都會(huì)通過(guò)Hive,當(dāng)Hive與不同的系統(tǒng)進(jìn)行交互時(shí),它可以提供統(tǒng)一的安全控制(表,行和列訪問(wèn)控制),數(shù)據(jù)溯源和審計(jì)。

最后,你還可以保證數(shù)據(jù)的獨(dú)立性:如果所有的訪問(wèn)都被抽象為通過(guò)SQL表或視圖,更改存儲(chǔ)或處理引擎則會(huì)比較容易。

2

基于成本優(yōu)化的智能下推

假設(shè)你要執(zhí)行一個(gè)Hive查詢,該查詢通過(guò)JDBC連接到后端的RDBMS訪問(wèn)數(shù)據(jù)。一種天真的想法是將JDBC源視為“啞”(dumb)的存儲(chǔ)系統(tǒng),通過(guò)JDBC讀取所有原始數(shù)據(jù)并在Hive中處理它。在這種情況下,實(shí)際我們就忽略了RDBMS本身的查詢功能,然后通過(guò)JDBC鏈接抽取了過(guò)多的數(shù)據(jù),從而很容易導(dǎo)致性能不佳和系統(tǒng)過(guò)載。

出于這個(gè)原因,Hive依靠其storage handler接口和Apache Calcite支持的基于成本的優(yōu)化器(CBO)實(shí)現(xiàn)了對(duì)其他系統(tǒng)的智能下推。特別是,Calcite提供與查詢的邏輯表示中的運(yùn)算符子集匹配的規(guī)則,然后生成在外部系統(tǒng)中等效的表示以執(zhí)行更多操作。Hive在其查詢計(jì)劃器中將計(jì)算推送到外部系統(tǒng),并且依靠Calcite生成外部系統(tǒng)支持的查詢語(yǔ)言。storage handler的實(shí)現(xiàn)負(fù)責(zé)將生成的查詢發(fā)送到外部系統(tǒng),檢索其結(jié)果,并將傳入的數(shù)據(jù)轉(zhuǎn)換為Hive內(nèi)部表示,以便在需要時(shí)進(jìn)一步處理。

這不僅限于SQL系統(tǒng):例如,Apache Hive也可以聯(lián)邦A(yù)pache Druid或Apache Kafka進(jìn)行查詢,正如我們?cè)谧罱牟┪闹兴枋龅?,Druid可以非常高效的處理時(shí)序數(shù)據(jù)的匯總和過(guò)濾。因此,當(dāng)對(duì)存儲(chǔ)在Druid中的數(shù)據(jù)源執(zhí)行查詢時(shí),Hive可以將過(guò)濾和聚合推送給Druid,生成并發(fā)送JSON查詢到引擎暴露的REST API。另一方面,如果是查詢Kafka上的數(shù)據(jù),Hive可以在分區(qū)或offset上推送過(guò)濾器,從而根據(jù)條件讀取topic中的數(shù)據(jù)。

https://hortonworks.com/blog/benchmark-update-apache-hive-druid-integration-hdp-3-0/

3

聯(lián)邦到JDBC源端

storage handler和Calcite適配器的組合非常靈活,功能也非常強(qiáng)大,尤其是將Hive作為不同SQL系統(tǒng)的聯(lián)邦層時(shí)。

Apache Hive3包含了JDBC storage handler的新實(shí)現(xiàn),它可以讓Calcite的JDBC適配器規(guī)則有選擇地將計(jì)算推送到JDBC源端,如MySQL,PostgreSQL,Oracle或Redshift。Hive可以推送各種各樣的操作,包括projections, filters, joins, aggregations, unions, sorting和limit。

更重要的是,Calcite可以根據(jù)JDBC源端的系統(tǒng)調(diào)整行為。 例如,它可以識(shí)別JDBC源端系統(tǒng)不支持查詢中的過(guò)濾條件中使用的某個(gè)函數(shù)。在這種情況下,它將在Hive中執(zhí)行它,同時(shí)仍將其余支持的過(guò)濾條件推送到JDBC系統(tǒng)。此外,Hive可以使用不同的方言生成SQL,具體取決于JDBC連接后面的數(shù)據(jù)庫(kù)。

另一個(gè)重要特性是JDBC storage handler可以將查詢拆分為多個(gè)子查詢,這些子查詢將并行發(fā)送到執(zhí)行引擎,以加速?gòu)臄?shù)據(jù)源中讀取大量數(shù)據(jù)。

下圖是一個(gè)示例說(shuō)明了Hive的新JDBC下推功能??梢园l(fā)現(xiàn)當(dāng)生成MySQL和PostgreSQL的查詢SQL語(yǔ)句時(shí)會(huì)有延遲。

Apache中怎么使用Hive3實(shí)現(xiàn)跨數(shù)據(jù)庫(kù)聯(lián)邦查詢

4

接下來(lái)的工作:自動(dòng)元數(shù)據(jù)映射

要查詢其他系統(tǒng)中的數(shù)據(jù),用戶只需使用相應(yīng)的storage handler來(lái)創(chuàng)建一張Hive外部表,當(dāng)然還包含該外部系統(tǒng)的一些其他信息。例如:如果用戶想在Hive中創(chuàng)建一張來(lái)自PostgreSQL數(shù)據(jù)庫(kù)'organization'中的表'item',可以使用以下語(yǔ)句來(lái)創(chuàng)建:

Apache中怎么使用Hive3實(shí)現(xiàn)跨數(shù)據(jù)庫(kù)聯(lián)邦查詢

雖然你看這個(gè)建表語(yǔ)句已經(jīng)夠簡(jiǎn)單的了,但是我們對(duì)Hive該功能的期望遠(yuǎn)不止于此。

如上例所示,建表語(yǔ)句還需要指定PostgreSQL中該表的schema。在HIVE-21060中,如果是通過(guò)JDBC配置的外部表,希望Hive可以自動(dòng)發(fā)現(xiàn)schema,而不用在建表語(yǔ)句中聲明。

HIVE-21060:

https://jira.apache.org/jira/browse/HIVE-21060

而HIVE-21059中,則是開(kāi)發(fā)實(shí)現(xiàn)外部的catalog支持。外部catalog允許在metastore中創(chuàng)建一個(gè)新的catalog,這個(gè)catalog會(huì)指向一個(gè)外部的mysql數(shù)據(jù)庫(kù),這樣在這個(gè)catalog之下,所有表都可以自動(dòng)被Hive識(shí)別然后查詢。

HIVE-21059:

https://jira.apache.org/jira/browse/HIVE-21059

5

總結(jié)

聯(lián)邦功能為Hive帶來(lái)了很大的靈活性,以下我們具體看看你可以使用它來(lái)干什么:

1.Combining best tools for the job:應(yīng)用程序開(kāi)發(fā)人員可以通過(guò)單一界面訪問(wèn)多個(gè)數(shù)據(jù)處理系統(tǒng)。無(wú)需學(xué)習(xí)不同的查詢方言或接口, 無(wú)需擔(dān)心數(shù)據(jù)安全和數(shù)據(jù)治理,統(tǒng)統(tǒng)都由Hive負(fù)責(zé)。這極大地簡(jiǎn)化了集成工作。

2.Transform & write-back: 使用該功能,你可以使用Hive SQL轉(zhuǎn)換保存在Hive之外的數(shù)據(jù)。例如,你可以使用Hive查詢Kafka,轉(zhuǎn)換數(shù)據(jù),然后將其回寫到Kafka。

3.Simplifying data-loads:你現(xiàn)在可以直接從Hive查詢其他系統(tǒng),清洗數(shù)據(jù),強(qiáng)化數(shù)據(jù),最后將數(shù)據(jù)合并到Hive表中,而無(wú)需部署任何其他工具。這使得ETL變得非常簡(jiǎn)單。

4.Query across multiple systems: 對(duì)于某些ad-hoc查詢或小的報(bào)表,定義ETL處理過(guò)程并將數(shù)據(jù)都移動(dòng)到同一個(gè)存儲(chǔ)位置是不現(xiàn)實(shí)的。使用該功能,你只需要編寫一個(gè)查詢SQL跨多個(gè)數(shù)據(jù)源即可。

關(guān)于Apache中怎么使用Hive3實(shí)現(xiàn)跨數(shù)據(jù)庫(kù)聯(lián)邦查詢就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

網(wǎng)頁(yè)名稱:Apache中怎么使用Hive3實(shí)現(xiàn)跨數(shù)據(jù)庫(kù)聯(lián)邦查詢
當(dāng)前鏈接:http://muchs.cn/article48/jpihhp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈網(wǎng)站維護(hù)靜態(tài)網(wǎng)站、網(wǎng)站營(yíng)銷企業(yè)建站、微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)