【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 ...
随机推荐
- logstash安装插件修改使用的gem源
gem source -l # 查看当前使用的gem源 gem source --remove https://rubygems.org/ # 移除gem源 gem source -a https:/ ...
- PPR的断管
1. 小管径PPR管的断管 2. 大管径PPR管的断管
- 聊聊Linux中CPU上下文切换
目录 什么是CPU上下文 CPU上下文切换 上一任务的CPU上下文保存在哪? 进程上下文切换 内核空间和用户空间 top命令查看CPU资源 系统调用 进程上下文切换 和 系统调用的区别? 进程切换的常 ...
- 220722 T2 序列(ST表+分治)
题目描述 小 B 喜欢玩游戏. 有一天,小 B 在玩一个序列上的游戏,他得到了正整数序列{ai}以及一个常数c . 游戏规则是,玩家可以对于每一个ai 分别加上一个非负整数x ,代价为 x2,完成所有 ...
- 手把手教你使用LabVIEW OpenCV dnn实现物体识别(Object Detection)含源码
前言 今天和大家一起分享如何使用LabVIEW调用pb模型实现物体识别,本博客中使用的智能工具包可到主页置顶博客LabVIEW AI视觉工具包(非NI Vision)下载与安装教程中下载 一.物体识别 ...
- Kafka之配置信息
Kafka之配置信息 一.Broker配置信息 属性 默认值 描述 broker.id 必填参数,broker的唯一标识 log.dirs /tmp/kafka-logs Kafka数据存放的目录 ...
- ByPass
WebShell-ByPass php一句话木马 <?php eval($_REQUEST['a']]);?> 拦截进行替换 替换eval() assert() 替换$_REQUEST[' ...
- Dest0g3迎新赛misc部分解析
目录 1. Pngenius 2. EasyEncode 3. 你知道js吗 4. StrangeTraffic 5. EasyWord 6.4096 7.python_jail 8. codeg ...
- IDEA中如何导入jar包、IDEA中找不到对应类改怎样解决?(详细图解过程)
今天突然心血来潮.用IDEA运行之前用eclipse编写的项目.发现遇到了一些bug,现在习惯了使用maven管理项目的依赖.一时间忘记了怎样将jar包导入项目中.特此记录一下 文章目录 1.未加入j ...
- Elasticsearch Analyzer 内置分词器
Elasticsearch Analyzer 内置分词器 篇主要介绍一下 Elasticsearch中 Analyzer 分词器的构成 和一些Es中内置的分词器 以及如何使用它们 前置知识 es 提供 ...