成人免费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

2023-08-15 08:32:09

yaraQA語法規則

2021-12-02 07:02:16

API性能設計

2014-07-29 09:19:07

Hadoop

2011-11-30 21:59:41

ibmdwDojo

2014-04-01 09:52:46

MySQL

2023-05-22 14:19:48

索引Iceberg

2024-10-29 08:21:05

2025-03-28 08:35:00

2023-03-01 15:14:48

數據集機器學習

2023-05-12 13:21:12

JMHJava程序

2019-06-11 15:25:03

JSON性能前端

2020-10-09 17:43:25

計算機CPU技術

2016-11-01 11:38:50

DNS網站性能

2024-04-12 08:28:38

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

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品美女久久久久aⅴ国产馆 | 日韩在线视频播放 | 欧美亚洲一区二区三区 | 美国一级黄色片 | 羞羞视频在线观看网站 | 欧美aⅴ| 欧美bondage紧缚视频 | 久久久久成人精品免费播放动漫 | 欧美日产国产成人免费图片 | 天天摸天天干 | 午夜小视频免费观看 | 日日摸日日添日日躁av | 国产精品成人一区二区三区 | 亚洲国产一区二区三区在线观看 | 91久色 | 精品三区 | 一区二区三区欧美在线 | 国产精品成人一区二区三区夜夜夜 | 午夜一区二区三区视频 | 日本高清视频在线播放 | 国产99久久精品一区二区永久免费 | 国产美女精品视频 | 91精品国产91久久久久久 | 国产毛片久久久 | 欧美人妇做爰xxxⅹ性高电影 | 日韩欧美精品在线 | 人人干人人看 | 欧美精品一区二区三区四区 在线 | 国产精品久久av | 成人av在线播放 | 精品一二区 | 亚洲欧美一区二区三区情侣bbw | 欧美精品成人一区二区三区四区 | 欧美日韩精品免费观看 | 午夜爱爱毛片xxxx视频免费看 | 久久久久国色av免费观看性色 | 国产中文字幕av | 亚洲成人精品久久 | 免费在线观看一区二区 | 国产91精品网站 | 亚洲视频免费一区 |