概述
impala
Impala的优缺点
优点
- 基于内存运算,不需要把中间结果写入磁盘,省掉了大量的I/O开销。
- 无需转换为Mapreduce,直接访问存储在HDFS,HBase中的数据进行作业调度,速度快。
- 使用了支持Data locality的I/O调度机制,尽可能地将数据和计算分配在同一台机器上进行,减少了网络开销。
- 支持各种文件格式,如TEXTFILE 、SEQUENCEFILE 、RCFile、Parquet。
缺点
- 对内存的依赖大,且完全依赖于hive。
- 实践中,分区超过1万,性能严重下降。
- 只能读取文本文件,而不能直接读取自定义二进制文件。
- 每当新的记录/文件被添加到HDFS中的数据目录时,该表需要被刷新。
可以访问hive的metastore,对hive数据直接做数据分析。
Impala虽然支持array,map,struct复杂数据类型,但是支持并不完全,一般处理方法,将复杂类型转化为基本类型,通过hive创建表。
关闭(修改hdfs的配置dfs.permissions为false)或修改hdfs的权限,否则impala没有写的权限
[hdfs@hadoop103 ~]$ hadoop fs -chmod -R 777 /
Impala不支持将本地文件导入到表中
Impala不支持WITH DBPROPERTIE…语法
Impala不支持alter database语法
当数据库被 USE 语句选中时,无法删除
如果分区没有,load data导入数据时,不能自动创建分区。
impala不支持load data local inpath…
Impala 不支持export和import命令
Impala不支持CLUSTER BY, DISTRIBUTE BY, SORT BY
Impala中不支持分桶表
Impala不支持COLLECT_SET(col)和explode(col)函数
Impala支持开窗函数
select name,orderdate,cost,sum(cost) over(partition by month(orderdate)) from business;
- 优化
- 尽量将StateStore和Catalog单独部署到同一个节点,保证他们正常通信。
- 通过对Impala Daemon内存限制(默认256M)及StateStore工作线程数,来提高Impala的执行效率。
- SQL优化,使用之前调用执行计划
- 选择合适的文件格式进行存储,提高查询效率。
- 避免产生很多小文件(如果有其他程序产生的小文件,可以使用中间表,将小文件数据存放到中间表。然后通过insert…select…方式中间表的数据插入到最终表中)
- 使用合适的分区技术,根据分区粒度测算
- 使用compute stats进行表信息搜集,当一个内容表或分区明显变化,重新计算统计相关数据表或分区。因为行和不同值的数量差异可能导致impala选择不同的连接顺序时进行查询。
[hadoop104:21000] > show table stats student;
Query: show table stats student
+-------+--------+------+--------------+-------------------+--------+-------------------+---------------------------------------------------+
| #Rows | #Files | Size | Bytes Cached | Cache Replication | Format | Incremental stats | Location |
+-------+--------+------+--------------+-------------------+--------+-------------------+---------------------------------------------------+
| -1 | 1 | 67B | NOT CACHED | NOT CACHED | TEXT | false | hdfs://hadoop102:8020/user/hive/warehouse/student |
+-------+--------+------+--------------+-------------------+--------+-------------------+---------------------------------------------------+
[hadoop104:21000] > compute stats student;
Query: compute stats student
+-----------------------------------------+
| summary |
+-----------------------------------------+
| Updated 1 partition(s) and 2 column(s). |
+-----------------------------------------+
[hadoop104:21000] > show table stats student;
Query: show table stats student
+-------+--------+------+--------------+-------------------+--------+-------------------+---------------------------------------------------+
| #Rows | #Files | Size | Bytes Cached | Cache Replication | Format | Incremental stats | Location |
+-------+--------+------+--------------+-------------------+--------+-------------------+---------------------------------------------------+
| 6 | 1 | 67B | NOT CACHED | NOT CACHED | TEXT | false | hdfs://hadoop102:8020/user/hive/warehouse/student |
+-------+--------+------+--------------+-------------------+--------+-------------------+---------------------------------------------------+
- 网络io的优化:
–a.避免把整个数据发送到客户端
–b.尽可能的做条件过滤
–c.使用limit字句
–d.输出文件时,避免使用美化输出
–e.尽量少用全量元数据的刷新
- 使用profile输出底层信息计划,在做相应环境优化
最后
以上就是真实万宝路为你收集整理的impala 与hive 简单对比Impala支持开窗函数select name,orderdate,cost,sum(cost) over(partition by month(orderdate)) from business;的全部内容,希望文章能够帮你解决impala 与hive 简单对比Impala支持开窗函数select name,orderdate,cost,sum(cost) over(partition by month(orderdate)) from business;所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复