成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何使用Hadoop提升Hive查詢性能

大數據 Hadoop
Apache Hive 是一個 Hadoop 之上構建起來的數據倉庫,用于數據的分析、匯總以及查詢。Hive 提供了一種類 SQL 的接口來查詢被存儲在各種數據源和文件系統中的數據。

Apache Hive 是一個 Hadoop 之上構建起來的數據倉庫,用于數據的分析、匯總以及查詢。Hive 提供了一種類 SQL 的接口來查詢被存儲在各種數據源和文件系統中的數據。

使用 Tez Engine

Apache Tez Engine 是一種用來構建高性能批處理與交互式數據處理的可擴展框架。在 Hadoop 中它借助 YARN 實現協作。Tez 通過提高處理速度來對 MapReduce 樣例進行提升,并且保持著 MapReduce 向 PB 量級數據的擴展能了。

你可以通過在環境中將 hive.execution.engine 設置為 tez 來啟用 Tez 引擎:

set hive.execution.engine=tez;

利用矢量化( Vectorization)

矢量化(Vectorization) 通過在一次操作中提取t 1024 行數據提升性能,而不是一次只取一條。它提升了像過濾, 聯合, 聚合等等操作的性能。

Vectorization 可以通過在環境中執行如下命令而得到啟用。

set hive.vectorized.execution.enabled=true;
set hive.vectorized.execution.reduce.enabled=true;

使用 ORCFile

優化的行列格式(Optimized Row Columnar)提供了通過借助比較原來節省 75% 數據存儲的格式來存儲hive數據的高效方法。當要對數據進行讀、寫以及處理操作時,ORCFile 格式較 Hive 文件格式更優。它使用了像謂詞下推、壓縮以及更多其它的技術來提升查詢的性能。

考慮有這樣兩個表: 雇員(employee)以及雇員詳情(employee_details), 這兩個表被存儲在一個文件文件中。假如說我們要使用聯合來從兩個表取出詳情數據。

Select a.EmployeeID, a.EmployeeName, b.Address,b.Designation from Employee a
Join Employee_Details b
On a.EmployeeID=b.EmployeeID;

上面的查詢操作會花掉較長的時間, 因為數據是以文本形式存儲的。將該表轉換成 ORCFile  格式將會顯著減少查詢的執行時間。

Create Table Employee_ORC (EmployeeID int, EmployeeName varchar(100),Age int)
STORED AS ORC tblproperties("compress.mode"="SNAPPY");

Select * from Employee Insert into Employee_ORC;

Create Table Employee_Details_ORC (EmployeeID int, Address varchar(100)
                                  ,Designation Varchar(100),Salary int)
STORED AS ORC tblproperties("compress.mode"="SNAPPY");

Select * from Employee_Details Insert into Employee_Details_ORC;
Select a.EmployeeID, a.EmployeeName, b.Address,b.Designation from Employee_ORC a
Join Employee_Details_ORC b
On a.EmployeeID=b.EmployeeID;

ORC 支持壓縮 (ZLIB 和 Snappy), 還有解壓縮的存儲。

利用分區

有了分區, 數據就可以被存儲在 HDFS 上的多個文件夾下。查詢時不回去查詢整個數據集,而是查詢分區的數據集。

創建臨時表并將數據導入臨時表

Create Table Employee_Temp(EmloyeeID int, EmployeeName Varchar(100), 
                           Address Varchar(100),State Varchar(100),
                           City Varchar(100),Zipcode Varchar(100))
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

LOAD DATA INPATH '/home/hadoop/hive' INTO TABLE Employee_Temp;

創建分區表

Create Table Employee_Part(EmloyeeID int, EmployeeName Varchar(100), 
                           Address Varchar(100),State Varchar(100),
                           Zipcode Varchar(100))
PARTITIONED BY (City Varchar(100))
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

創建動態的Hive分區

SET hive.exec.dynamic.partition = true;
SET hive.exec.dynamic.partition.mode = nonstrict;

從臨時表向分區表導入數據

Insert Overwrite table Employee_Part Partition(City) Select EmployeeID,
EmployeeName,Address,State,City,Zipcode from Emloyee_Temp;

利用桶裝數據

Hive 表被分割成許多分區而被叫做 Hive 分區。Hive 分區可以被進一步細分成卷或者桶,而被稱作是數據卷或者桶裝數據。

Create Table Employee_Part(EmloyeeID int, EmployeeName Varchar(100), 
                           Address Varchar(100),State Varchar(100),
                           Zipcode Varchar(100))
PARTITIONED BY (City Varchar(100))
Clustered By (EmployeeID) into 20 Buckets
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

基于成本的查詢優化

Hive 在向最終的執行提交之前會對每一個查詢邏輯和物理執行計劃進行優化。不過,這樣的優化并非基于初始版本 Hive 中的查詢操作的成本來進行的。

在 Hive 的后續版本中,查詢已經根據查詢操作的成本(顯示會執行哪種類型的聯合,如何對聯合操作進行排序,并行的程度等等)進行了優化。

為了利用到基于成本的優化,在查詢的開始部分要設置好如下一些參數。

set hive.cbo.enable=true;
set hive.compute.query.using.stats=true;
set hive.stats.fetch.column.stats=true;
set hive.stats.fetch.partition.stats=true;

總結

Apache Hive 是一種非常強大的數據分析工具,而它也支持批量和可交互式的數據處理操作。它是數據分析師和數據科學家最常被用到的工具。當你在處理 PB 量級的數據時,知道如何提升查詢操作的性能是非常重要的。

現在你就知道了如何去提升 Hive 查詢操作的性能!

責任編輯:張燕妮 來源: 開源中國社區
相關推薦

2012-04-13 10:00:04

LINQ

2020-12-03 08:00:00

SQL數據庫MySQL

2011-08-24 11:22:38

SQL ServerUNION代替OR

2009-02-18 20:27:24

組策略提升Windows性能

2024-09-19 08:09:37

MySQL索引數據庫

2021-09-27 08:16:38

Webpack 前端Cache

2011-11-30 21:59:41

ibmdwDojo

2014-07-29 09:19:07

Hadoop

2023-08-15 08:32:09

yaraQA語法規則

2024-10-29 08:21:05

2014-04-01 09:52:46

MySQL

2023-05-22 14:19:48

索引Iceberg

2021-12-02 07:02:16

API性能設計

2023-05-12 13:21:12

JMHJava程序

2020-10-09 17:43:25

計算機CPU技術

2025-03-28 08:35:00

2023-03-01 15:14:48

數據集機器學習

2016-11-01 11:38:50

DNS網站性能

2023-12-14 12:56:00

MongoDB數據庫優化

2024-04-12 08:28:38

優化查詢語句PostgreSQL索引
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品无码久久久久久国产 | 激情av网站 | 日韩精品免费播放 | 91麻豆精品国产91久久久久久 | 亚洲一区二区在线 | 亚洲第一中文字幕 | 亚洲免费观看视频网站 | 欧洲尺码日本国产精品 | 国产成人精品免费视频大全最热 | 久久久精品一区二区 | 欧美色视频免费 | 婷婷午夜天 | 国产国拍亚洲精品av | 国产精品一区二区在线 | av国产精品 | 欧美日韩中文字幕在线 | 97色综合| 91麻豆产精品久久久久久 | 国产精品成人一区二区 | 久久精品国产一区二区电影 | 古典武侠第一页久久777 | 91色视频在线观看 | 久久精品成人 | av一区二区三区四区 | 婷婷综合色 | 久久久久久国产精品免费 | 精品无码久久久久国产 | 亚洲欧美激情四射 | jlzzjlzz欧美大全 | 亚洲一区二区久久 | 91精品久久久久久久久久入口 | 中文在线一区二区 | 欧美日韩国产在线观看 | 亚洲精品久久久久久久久久久久久 | 九九av| www.色综合| 精品久久久久久久久久 | 亚洲欧美综合精品久久成人 | 久久首页 | 99精品欧美一区二区蜜桃免费 | 九九av|