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 | 
根据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 =
序号
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.
由于速度太慢,没有完成测试便中断了。

你可能感兴趣的:(大数据)