中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Apache中怎么使用Hive3實現跨數據庫聯邦查詢

發布時間:2021-07-30 16:44:27 來源:億速云 閱讀:451 作者:Leah 欄目:大數據

這篇文章將為大家詳細講解有關Apache中怎么使用Hive3實現跨數據庫聯邦查詢,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

1

使用Apache Hive3.0&SQL來進行統一訪問

Apache Hive在上述環境中扮演著重要角色。更具體一點的說,它可以訪問上述所有系統,并提供統一高效的SQL訪問,而且是開箱即用的。這樣做的好處是巨大的:

1.單個SQL方言和API

2.集中安全控制和審計跟蹤

3.統一治理

4.能夠合并來自多個數據源的數據

5.數據獨立性

設置和使用Apache Hive作為聯邦層可簡化應用程序開發和數據訪問。特別是所有數據都可以使用SQL進行處理,并且可以通過熟悉的JDBC/ODBC接口進行訪問。

最重要的事,因為所有的數據訪問都會通過Hive,當Hive與不同的系統進行交互時,它可以提供統一的安全控制(表,行和列訪問控制),數據溯源和審計。

最后,你還可以保證數據的獨立性:如果所有的訪問都被抽象為通過SQL表或視圖,更改存儲或處理引擎則會比較容易。

2

基于成本優化的智能下推

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

出于這個原因,Hive依靠其storage handler接口和Apache Calcite支持的基于成本的優化器(CBO)實現了對其他系統的智能下推。特別是,Calcite提供與查詢的邏輯表示中的運算符子集匹配的規則,然后生成在外部系統中等效的表示以執行更多操作。Hive在其查詢計劃器中將計算推送到外部系統,并且依靠Calcite生成外部系統支持的查詢語言。storage handler的實現負責將生成的查詢發送到外部系統,檢索其結果,并將傳入的數據轉換為Hive內部表示,以便在需要時進一步處理。

這不僅限于SQL系統:例如,Apache Hive也可以聯邦Apache Druid或Apache Kafka進行查詢,正如我們在最近的博文中所描述的,Druid可以非常高效的處理時序數據的匯總和過濾。因此,當對存儲在Druid中的數據源執行查詢時,Hive可以將過濾和聚合推送給Druid,生成并發送JSON查詢到引擎暴露的REST API。另一方面,如果是查詢Kafka上的數據,Hive可以在分區或offset上推送過濾器,從而根據條件讀取topic中的數據。

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

3

聯邦到JDBC源端

storage handler和Calcite適配器的組合非常靈活,功能也非常強大,尤其是將Hive作為不同SQL系統的聯邦層時。

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

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

另一個重要特性是JDBC storage handler可以將查詢拆分為多個子查詢,這些子查詢將并行發送到執行引擎,以加速從數據源中讀取大量數據。

下圖是一個示例說明了Hive的新JDBC下推功能。可以發現當生成MySQL和PostgreSQL的查詢SQL語句時會有延遲。

Apache中怎么使用Hive3實現跨數據庫聯邦查詢

4

接下來的工作:自動元數據映射

要查詢其他系統中的數據,用戶只需使用相應的storage handler來創建一張Hive外部表,當然還包含該外部系統的一些其他信息。例如:如果用戶想在Hive中創建一張來自PostgreSQL數據庫'organization'中的表'item',可以使用以下語句來創建:

Apache中怎么使用Hive3實現跨數據庫聯邦查詢

雖然你看這個建表語句已經夠簡單的了,但是我們對Hive該功能的期望遠不止于此。

如上例所示,建表語句還需要指定PostgreSQL中該表的schema。在HIVE-21060中,如果是通過JDBC配置的外部表,希望Hive可以自動發現schema,而不用在建表語句中聲明。

HIVE-21060:

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

而HIVE-21059中,則是開發實現外部的catalog支持。外部catalog允許在metastore中創建一個新的catalog,這個catalog會指向一個外部的mysql數據庫,這樣在這個catalog之下,所有表都可以自動被Hive識別然后查詢。

HIVE-21059:

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

5

總結

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

1.Combining best tools for the job:應用程序開發人員可以通過單一界面訪問多個數據處理系統。無需學習不同的查詢方言或接口, 無需擔心數據安全和數據治理,統統都由Hive負責。這極大地簡化了集成工作。

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

3.Simplifying data-loads:你現在可以直接從Hive查詢其他系統,清洗數據,強化數據,最后將數據合并到Hive表中,而無需部署任何其他工具。這使得ETL變得非常簡單。

4.Query across multiple systems: 對于某些ad-hoc查詢或小的報表,定義ETL處理過程并將數據都移動到同一個存儲位置是不現實的。使用該功能,你只需要編寫一個查詢SQL跨多個數據源即可。

關于Apache中怎么使用Hive3實現跨數據庫聯邦查詢就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

府谷县| 关岭| 阳新县| 吴忠市| 南江县| 炉霍县| 济宁市| 湖南省| 固镇县| 绥阳县| 岳西县| 罗江县| 满城县| 渑池县| 都安| 梨树县| 德州市| 志丹县| 翁牛特旗| 罗源县| 天峨县| 富蕴县| 新宾| 达尔| 阿图什市| 宁河县| 游戏| 武山县| 普安县| 洛阳市| 平邑县| 东宁县| 手游| 普定县| 平原县| 黑河市| 西城区| 吴堡县| 峡江县| 阿克苏市| 丰都县|