impala 与hive 简单对比

impala

Impala的优缺点

优点

  1. 基于内存运算,不需要把中间结果写入磁盘,省掉了大量的I/O开销。
  2. 无需转换为Mapreduce,直接访问存储在HDFS,HBase中的数据进行作业调度,速度快。
  3. 使用了支持Data locality的I/O调度机制,尽可能地将数据和计算分配在同一台机器上进行,减少了网络开销。
  4. 支持各种文件格式,如TEXTFILE 、SEQUENCEFILE 、RCFile、Parquet

 缺点

  1. 对内存的依赖大,且完全依赖于hive。
  2. 实践中,分区超过1万,性能严重下降。
  3. 只能读取文本文件,而不能直接读取自定义二进制文件。
  4. 每当新的记录/文件被添加到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;

  1. 优化
  1. 尽量将StateStore和Catalog单独部署到同一个节点,保证他们正常通信。
  2. 通过对Impala Daemon内存限制(默认256M)及StateStore工作线程数,来提高Impala的执行效率。
  3. SQL优化,使用之前调用执行计划
  4. 选择合适的文件格式进行存储,提高查询效率。
  5. 避免产生很多小文件(如果有其他程序产生的小文件,可以使用中间表,将小文件数据存放到中间表。然后通过insert…select…方式中间表的数据插入到最终表中)
  6. 使用合适的分区技术,根据分区粒度测算
  7. 使用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 |

+-------+--------+------+--------------+-------------------+--------+-------------------+---------------------------------------------------+

  1. 网络io的优化:

      –a.避免把整个数据发送到客户端

      –b.尽可能的做条件过滤

      –c.使用limit字句

–d.输出文件时,避免使用美化输出

–e.尽量少用全量元数据的刷新

  1. 使用profile输出底层信息计划,在做相应环境优化

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值