1. 程式人生 > >Hive查詢效能測試記錄

Hive查詢效能測試記錄

一、測試環境
HDFS 七個節點,五個dn,兩個nn。Hive配置在其中一個nn,使用MySQL遠端元資料庫,同一個節點同時開啟hiveserver2和metastore。所有節點記憶體一致,30GB,CPU為Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz (x86_64)。所有節點通通過兩臺真實物理機虛擬(使用XenServer虛擬)。
二、樣本資料
資料儲存在HDFS,格式為parquet,存在分割槽。每條記錄如下:
     id |  <tm, k1..k350, t351..t500>
根據id分割槽,分割槽數為1000。欄位型別:id int, tm String, kn 為int, tn 為double。
按業務場景,每秒每個分割槽(裝置)產生一條資料,共501個欄位(500個測點+timestamp),每天每分割槽產生172800條資料。共有兩天的資料,樣本總容量為172800*1000*2=345600000。
三、Hive表建立

(1)建立內部表
     create table wt_csv_newtb (tm string,          k1 int, k2 int .. k350 int, t351 double,           t352 double .. t500 double)
     partitioned by (id int) stored as parquet;
(2)建立1000分割槽
分別執行1000個分割槽:
     alter table wt_csv_newtb add partition (id = x);
x 取值{1,2,3 .. 1000}
(3)資料建立
使用程式生成資料,並匯入此表中,此處略。
四、測試查詢

1、資料完整性校驗
SQL語句      select count(*) from wt_csv_newtb where id = <dev_id>
序號
id
查詢時間(秒)
1
1
38.55
2
560
48.479
3
2
54.278
4
100
50.955
5
999
54.499
SQL語句      select count(*) from wt_csv_newtb;  -- 全分割槽查詢
查詢兩次:
2880.15秒
2941.935秒
2、全量資料多維度查詢
SQL語句     SELECT t390 FROM wt_csv_newtb WHERE t450>999.9994 and id>20 and id<(20+100) order by t390;
結果數為9.
由於速度太慢,沒有完成測試便中斷了。