impala
1.impala是什么:
impala是基于hive的大数据实时分析查询引擎,直接使用Hive的元数据库Metadata,意味着impala元数据都存储在Hive的metastore中。
2.impala与hive的关系:
Impala与Hive都是构建在Hadoop之上的数据查询工具各有不同的侧重适应面 1.hive适合长时间的批处理查询分析 2.impala适合实时交互式查询
# 在hive上进行数据转换处理,之后使用impala在hive处理后的结果集上进行快速的数据分析
3.impala简介
1.Cloudera公司推出,提供对HDFS、Hbase数据的高性能、低延迟的交互式SQL查询功能。 2.基于Hive使用内存计算,兼顾数据仓库、具有实时、批处理、多并发等优点 3.是CDH平台首选的PB级大数据实时查询分析引擎
4.impala优劣
优点:
1.基于内存计算,能够对PB集数据进行交互式查询分析 2.无需转换为MR,直接读取HDFS文件 3.兼容数据仓库特性,可对hive数据直接做数据分析 4.兼容hivesql 5.支持列存储
缺点:
1.内存依赖大 2.依赖hive 3.分区较多时,性能瓶颈 4.稳定性不如hive
5.impala组件
Statestore Daemon 实例*1 - statestored 负责收集分布在集群中各个impalad进程的资源信息、各节点健康状况,同步节点信息. 负责query的调度 Catalog Daemon 实例*1 - catalogd 分发表的元数据信息到各个impalad中 接收来自statestore的所有请求 Impala Daemon 实例*N – impalad 接收client、hue、jdbc或者odbc请求、Query执行并返回给中心协调节点 子节点上的守护进程,负责向statestore保持通信,汇报工作
6.impala shell
外部shell
impala-shell -h 帮助 -v 版本 -V 详细输出 -queit 关闭详细输出 -p 显示执行计划 -i hostname 连接主机 (数据量较大时,可连接内存(128G)较大的主机执行) -r 刷新所有元数据 -q query 从命令行执行,不进入impala-shell -d default_db 指定数据库 -B 去格式化输出 --output_delimiter=character 指定分隔符 --print_header 打印列名 -f query_file 执行文件,逗号分隔 -o filename 输出到指定文件 -c 查询执行失败时继续执行
内部shell
help connect <hostname:port> refresh <tablename> 增量刷新元数据库 invalidate metadata 全量刷新元数据库 explain <sql> 显示查询执行计划、步骤信息 set explain_level 设置显示级别(0,1,2,3) shell <shell> 不退出impala-shell执行Linux命令 profile (查询完成后执行) 查询最近一次查询的底层信息
7.impala 分区&存储
parquet create table ,insert ,load data ,query text load data avro 仅仅支持查询,在hive中通过load data加载数据 rcfile 仅仅支持查询,在hive中通过load data加载数据 sequencefile 仅仅支持查询,在hive中通过load data加载数据
添加分区方式 1、partitioned by 创建表时,添加该字段指定分区列表 createt table test (id int,name string) partitioned by (pt_d string); 2、使用alter table 进行分区的添加和删除操作 alter table test add partition (pt_d='20190424'); alter table test drop partition (pt_d='20190424'); alter table test drop partition (pt_d='20190424',pt_h='01'); 分区内添加数据 insert into test partition (pt_d='20190424') values (1,'zhangsan'),(2,'lisi') 查询指定分区数据 select id,name from test where pt_d='20190424';
8.impala sql
支持数据类型: INT TINYINT SMALLINT BIGINT BOOLEAN CHAR VARCHAR STRING FLOAT DOUBLE REAL DECIMAL TIMESTAMP cdh5.5版本后支持: 支持数据类型: ARRAY MAP STRUCT Complex
此外,Impala不支持HiveQL以下特性: 1.可扩展机制,例如:TRANSFORM、自定义文件格式、自定义SerDes 2.XML、JSON函数 3.某些聚合函数: covar_pop, covar_samp, corr, percentile, percentile_approx, histogram_numeric, collect_set Impala仅支持:AVG,COUNT,MAX,MIN,SUM 4.多Distinct查询 5.UDF、UDAF 6.以下语句: ANALYZE TABLE (Impala:COMPUTE STATS)、DESCRIBE COLUMN、DESCRIBE DATABASE、EXPORT TABLE、IMPORT TABLE、SHOW TABLE EXTENDED、SHOW INDEXES、SHOW COLUMNS、
创建数据库 create database db1; use db1; 删除数据库 use default; drop database db1; 创建表(内部表) 默认方式创建表: create table t_person1( id int, name string ) 指定存储方式: create table t_person2( id int, name string ) row format delimited fields terminated by '