【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 |
LZO,gzip,bzip2,snappy |
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.
【Impala】概念、原理、内外部shell、建库建表、分区、查询、自定义函数、存储压缩的更多相关文章
- MySQL建库建表
一直使用SQL SERVER 数据库:最近项目使用MY SQL感觉还是有一点不适应.不过熟悉之后就会好很多. MY SQL 安装之后会有一个管理工具MySQL Workbench 感觉不太好用,数据库 ...
- 【ITOO 2】.NET 动态建库建表:使用SQL字符串拼接方式
导读:在最近接手的项目(高效云平台)中,有一个需求是要当企业用户注册时,给其动态的新建一个库和表.刚开始接手的时候,是一点头绪都没有,然后查了一些资料,也问了问上一版本的师哥师姐,终于有了点头绪.目前 ...
- 【ITOO 3】.NET 动态建库建表:实用EF框架提供的codeFirst实现动态建库
导读:在上篇博客中,介绍了使用SQL字符拼接的方式,实现动态建库建表的方法.这样做虽然也能够实现效果,但是,太麻烦,而且,如果改动表结构,字段的话,会对代码修改很多.但是EF给我们提供了一种代码先行的 ...
- SQL Server建库-建表-建约束
----------------------------------------SQL Server建库-建表-建约束创建School数据库------------------------------ ...
- 使用T-sql建库建表建约束
为什么要使用sql语句建库建表? 现在假设这样一个场景,公司的项目经过测试没问题后需要在客户的实际环境中进行演示,那就需要对数据进行移植,现在问题来了:客户的数据库版本和公司开发阶段使用的数据库不兼容 ...
- mysql那些事(4)建库建表编码的选择
mysql建数据库或者建表的时候会遇到选择编码的问题,以前我们都是习惯性的选择utf8,但是在mysql在5.5.3版本后加了utf8mb4的编码,utf8mb4可以存4个字节Unicode,mb4就 ...
- C# 利用*.SQL文件自动建库建表等的类
/// <summary> /// 自动建库建表 /// </summary> public class OperationSqlFile { SqlConnection sq ...
- Mysql建库建用户建表等常用命令
格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输 ...
- oracle 11g 建库 建表 增 删 改 查 约束
一.建库 1.(点击左上角带绿色+号的按钮) 2.(进入这个界面,passowrd为密码.填写完后点击下面一排的Test按钮进行测试,无异常就点击Connect) 二.建表 1-1. create t ...
- SQL_DDL_建库建表
--IF DB_ID('testdb') IS NULL --CREATE DATABASE testdb USE master GO IF EXISTS ( SELECT * FROM sys.da ...
随机推荐
- 第六章:Django 综合篇 - 12:聚合内容 RSS/Atom
Django提供了一个高层次的聚合内容框架,让我们创建RSS/Atom变得简单,你需要做的只是编写一个简单的Python类. 一.范例 要创建一个feed,只需要编写一个Feed类,然后设置一条指向F ...
- Kubernetes 监控:Prometheus Operator + Thanos ---实践篇
具体参考网址:https://www.cnblogs.com/sanduzxcvbnm/p/16291296.html 本章用到的yaml文件地址:https://files.cnblogs.com/ ...
- kvm命令管理虚拟机
virsh 既有命令行模式,也有交互模式,在命令行直接输入 virsh 就进入交互模式, virsh 后面跟命令参数,则是命令行模式: KVM 工具集合 libvirt:操作和管理KVM虚机的虚拟化 ...
- 通过使用nginx来实现logstash的负载均衡
文章转载自:https://blog.csdn.net/UbuntuTouch/article/details/106813223 总结: nginx配置,192.168.0.5 user nginx ...
- CentOS yum如何安装php7.4
centos系统下使用yum安装php7.4正式版,当前基于WLNMP提供的一键安装包来安装 1.添加epel源 yum install epel-release 2.添加WLNMP一键安装包源 rp ...
- 关闭You have new mail in /var/spool/mail/root提醒
echo "unset MAILCHECK">> /etc/profile #以root权限执行 或者用sudo source /etc/profile cat /de ...
- 图片 css剪切,等比例缩放
object-fit: cover; .img1 {//自定义图片宽高,并且等比例缩放 width: 200px; height: 400px; object-fit: cover; }
- PHP全栈开发(八):CSS Ⅶ 表格 style
表格默认是没有边框的,因此,我们在设置表格格式的时候,首先要设置的是表格边框的样式,也就是 table{ border-style:solid; } 设置完表格表格的样式之后,可以设置表格边框的粗细程 ...
- 谣言检测(ClaHi-GAT)《Rumor Detection on Twitter with Claim-Guided Hierarchical Graph Attention Networks》
论文信息 论文标题:Rumor Detection on Twitter with Claim-Guided Hierarchical Graph Attention Networks论文作者:Erx ...
- golang开发:go并发的建议(完)
上次说了一下Go语言布道师 Dave Cheney对Go并发的建议,个人觉得最重要的一条,这次主要想说一下这个. 8.3. Never start a goroutine without knowni ...