您的位置:首页 > 产品设计 > UI/UE

parquet性能测试

2016-05-02 16:29 399 查看

前言

之前一直考虑更换impala的文件存储格式为parquet,但是没有立即使用,最近又做了一些测试,看看parquet是否真的有用。在测试的时候顺便测了一下compute语句的效果,一起作为参考。下面抽出一个小业务的部分测试结果来展示。

测试准备

库名和表名当然不是真的。

测试范围:

文件格式:parquet和text

compute语句的影响

测试用表:

表名行数字段数物理存储大小
ain34231137111.4 G
a_in395857172114.4 G
in6202519762.5 G
c4055068144708.3 M

测试用例1

这个记录是当时随手测的一个结果。

sql语句:

select count(*) from c;


测试结果:

文件格式第1次执行耗时第2次执行耗时
text7.72s0.74s
parquet5.90s0.53s

测试用例2

sql语句:

select count(uid) from c
where ***


测试结果:

文件格式where字句数量持续时间读取hdfs字节数累积内存使用峰值
text1826ms3G361.1M
parquet1623ms17.1 M6.9M
text21.04s3G112.3 M
parquet2623ms17.6 M7.1 M
text3930ms3G112.3 M
parquet3631ms18.4 M7.6 M
text6961ms3G120.6 M
parquet6836ms22.9 M45.1 M
text131.04s3G117 M
parquet131.04s33.2 M19.5 M

测试用例3

sql语句:

dev表是另外一个表,不是parquet格式。

SELECT SUBSTR(a1.dt,1,7) dt, COUNT(DISTINCT a1.uid)
FROM (
SELECT userid uid , createtime dt
FROM dev) a1
LEFT JOIN (
SELECT uid, dt
FROM (
SELECT userid uid, time dt FROM a_in
UNION ALL
SELECT uid uid, stime dt FROM ain
WHERE atype='1'
UNION ALL
SELECT uid, time dt
FROM c
WHERE state!=0 AND source='test') a1 ) a2
ON a1.uid = a2.uid AND SUBSTR(a1.dt,1,7)>SUBSTR(a2.dt,1,7)
LEFT JOIN (
SELECT uid, dt
FROM (SELECT userid uid, time dt FROM in
UNION ALL
SELECT uid, time dt FROM c
WHERE state!=0 AND source='pc') a1 ) a3
ON a1.uid = a3.uid AND SUBSTR(a1.dt,1,7)>SUBSTR(a3.dt,1,7)
WHERE a2.uid IS NULL AND a3.uid IS NOT NULL
GROUP BY dt
ORDER BY dt;


测试结果:

文件格式持续时间读取hdfs字节数累积内存使用峰值
text12分38秒71.4G27.5G
parquet12分27秒22.5G27.6G

测试用例4

这个稍微复杂一些,用到了上面的三张表,有一些join操作。因为前段时间发现了compute语句的神奇,因此这次顺便带上它。

sql语句:

select SUBSTR(a1.dt,1,7) dt, COUNT(DISTINCT a1.uid)
FROM (
SELECT uid, createtime dt
FROM c
WHERE state!=0 AND source='app') a1
INNER JOIN (
SELECT uid, dt
FROM (
SELECT userid uid, logtime dt FROM a_in
UNION ALL
SELECT uid uid, stime dt FROM ain
WHERE atype='1') a1 ) a2
ON a1.uid = a2.uid AND SUBSTR(a1.dt,1,7) = SUBSTR(a2.dt,1,7)
GROUP BY dt
ORDER BY dt


测试结果:

文件格式提前执行compute持续时间读取hdfs字节数累积内存使用峰值
textN5分16秒46.7G12.1G
parquetN3分48秒1.7G27.3G
textY34.9秒46.7G1.5G
parquetY14.5秒1.7G1.1G
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: