【Impala】概念、原理、内外部shell、建库建表、分区、查询、自定义函数、存储压缩

 一、基本概念

1、介绍

对HDFS、Hbase数据的高性能、低延迟的交互式SQL查询功能

2、优缺点

优点:基于内存运算,无需写入磁盘,无需转化为MR,支持Data Locality调度(数据和计算在一台机器进行)

缺点:完全依赖于hive,只能读取文本文件

3、组成

 4、原理

二、Impala安装

1、地址

http://impala.apache.org/impala-docs.html

2、安装方式

手动安装与CDH安装-Cloudera Manager

添加服务、角色分配、配置、启动

3、监护管理

StateStore:http://hadoop102:25020/

Catalog:http://hadoop102:25010/

4、入门

启动:impala-shell

查看数据库与表:show databases; / show tables;

导入数据:load data inpath '/student.txt' into table student;

修改hdfs的权限

三、操作命令

1、外部shell

连接指定主机:impala-shell -i hadoop103

查询表中数据并写入文件:impala-shell -q 'select * from student' -o output.txt

建表后刷新元数据:impala-shell -r

显示执行计划:impala-shell -p

去格式化输出:impala-shell -q 'select * from student' -B --output_delimiter="\t" -o output.txt

2、内部shell

查看执行计划:explain select * from student;

查询最近一次的底层信息:profile;

刷新元数据:refresh student;

四、Impala数据类型

Hive数据类型

Impala数据类型

长度

TINYINT

TINYINT

1byte有符号整数

SMALINT

SMALINT

2byte有符号整数

INT

INT

4byte有符号整数

BIGINT

BIGINT

8byte有符号整数

BOOLEAN

BOOLEAN

布尔类型,true或者false

FLOAT

FLOAT

单精度浮点数

DOUBLE

DOUBLE

双精度浮点数

STRING

STRING

字符系列。可以指定字符集。可以使用单引号或者双引号。

TIMESTAMP

TIMESTAMP

时间类型

BINARY

不支持

字节数组

五、DDL数据定义

1、创建数据库

CREATE DATABASE [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path];

2、查询数据库

显示数据库

show databases like 'hive*';

desc database hive_db;

删除数据库

drop database hive_db cascade;

3、创建表

管理表

[hadoop103:21000] > create table if not exists student2(
                  > id int, name string
                  > )
                  > row format delimited fields terminated by '\t'
                  > stored as textfile
                  > location '/user/hive/warehouse/student2';
[hadoop103:21000] > desc formatted student2;

外部表

[hadoop103:21000] > create external table stu_external(
                  > id int, 
                  > name string) 
                  > row format delimited fields terminated by '\t' ;

4、分区表

创建分区表

[hadoop103:21000] > create table stu_par(id int, name string)
                  > partitioned by (month string)
                  > row format delimited 
                  > fields terminated by '\t';

表中导入数据

[hadoop103:21000] > alter table stu_par add partition (month='201810');
[hadoop103:21000] > load data inpath '/student.txt' into table stu_par partition(month='201810');
[hadoop103:21000] > insert into table stu_par partition (month = '201811')
                  > select * from student;

查询数据

增加分区

删除分区

查看分区:show partitions stu_par;

六、DML数据操作

1、数据导入

2、数据导出

impala-shell -q 'select * from student' -B --output_delimiter="\t" -o output.txt

七、查询

与hive语法相似

八、函数

1、自定义函数

导入依赖hive-exec

创建类并打包

package com.atguigu.hive;
import org.apache.hadoop.hive.ql.exec.UDF;

public class Lower extends UDF {

    public String evaluate (final String s) {
        
        if (s == null) {
            return null;
        }
        
        return s.toLowerCase();
    }
}

创建函数:create function mylower(string) returns string location '/hive_udf-0.0.1-SNAPSHOT.jar' symbol='com.atguigu.hive_udf.Hive_UDF';

使用函数:select ename, mylower(ename) from emp;

通过show functions查看自定义的函数

九、存储和压缩

文件格式

压缩编码

Impala是否可直接创建

是否可直接插入

Parquet

Snappy(默认), GZIP;

Yes

支持:CREATE TABLE, INSERT, 查询

Text

LZOgzipbzip2snappy

Yes. 不指定 STORED AS 子句的 CREATE TABLE 语句,默认的文件格式就是未压缩文本

支持:CREATE TABLE, INSERT, 查询。如果使用 LZO 压缩,则必须在 Hive 中创建表和加载数据

RCFile

Snappy, GZIP, deflate, BZIP2

Yes.

仅支持查询,在 Hive 中加载数据

SequenceFile

Snappy, GZIP, deflate, BZIP2

Yes.

仅支持查询,在 Hive 中加载数据

创建parquet格式的表并插入数据进行查询

[hadoop104:21000] > create table student2(id int, name string)
                  > row format delimited 
                  > fields terminated by '\t'
                  > stored as PARQUET;
[hadoop104:21000] > insert into table student2 values(1001,'zhangsan');
[hadoop104:21000] > select * from student2;

创建sequenceFile格式的表,插入数据时报错

[hadoop104:21000] > insert into table student3 values(1001,'zhangsan');
Query: insert into table student3 values(1001,'zhangsan')
Query submitted at: 2018-10-25 20:59:31 (Coordinator: http://hadoop104:25000)
Query progress can be monitored at: http://hadoop104:25000/query_plan?query_id=da4c59eb23481bdc:26f012ca00000000
WARNINGS: Writing to table format SEQUENCE_FILE is not supported. Use query option ALLOW_UNSUPPORTED_FORMATS to override.

 

posted @ 2021-12-02 21:43  哥们要飞  阅读(651)  评论(0编辑  收藏  举报