【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 ...
随机推荐
- Elasticsearch:top_hits aggregation
top_hits指标聚合器跟踪要聚合的最相关文档. 该聚合器旨在用作子聚合器,以便可以按存储分区汇总最匹配的文档. top_hits聚合器可以有效地用于通过存储桶聚合器按某些字段对结果集进行分组. 一 ...
- filebeat直接给es传输日志,自定义索引名
ElasticStack从2019年1月29日的6.6.0版本的开始,引入了索引生命周期管理的功能,新版本的Filebeat则默认的配置开启了ILM,导致索引的命名规则被ILM策略控制. 加上这个配置 ...
- 不停机为虚拟机添加主机磁盘(以VMware Workstation为例)
VMware Workstation软件上安装的centos7系统,新增磁盘后使用fdisk -l命令查看不到新增的磁盘,有没有办法在不重启的情况下添加上新磁盘? 有办法 具体如下: # 查看主机总线 ...
- Maven+SpringMVC+Dubbo 简单的入门demo配置
转载自:https://cloud.tencent.com/developer/article/1010636 之前一直听说dubbo,是一个很厉害的分布式服务框架,而且巴巴将其开源,这对于咱们广大程 ...
- 为什么我写的z-index不生效?
前言 相信大家在工作中都遇到过这样一些奇怪的问题: 1.为什么我写的z-index没有生效? 2.为什么z-index大的元素却没有盖住z-index小的元素? 3.如何让父元素盖住子元素呢? 以上这 ...
- Spring Boot 源码学习之转载
这次的学习,主要转载了 波波老师的笔记,后续会自己整理一份 1.Spring-Boot源码分析-源码编译:https://dpb-bobokaoya-sm.blog.csdn.net/article/ ...
- NOI2011阿狸的打字机
题目链接 昨天晚上yy出了一个做法后,感觉...好难打啊...,于是先回去休息.今天来打时,还是感觉细节好多,于是就打了两个小时.打完过了编译后,居然过了样例,直接交,尼玛居然过了???......还 ...
- 使用doctest代码测试和Sphinx自动生成文档
python代码测试并自动生成文档 Tips:两大工具:doctest--单元测试.Sphinx--自动生成文档 1.doctest doctest是python自带的一个模块.doctest有两种使 ...
- 漫谈Entity-Component-System
原文链接 简介 对于很多人来说,ECS只是一个可以提升性能的架构,但是我觉得ECS更强大的地方在于可以降低代码复杂度. 在游戏项目开发的过程中,一般会使用OOP的设计方式让GameObject处理自身 ...
- Codeforces Round #820 (Div. 3) A-G
比赛链接 A 题解 知识点:模拟 时间复杂度 \(O(1)\) 空间复杂度 \(O(1)\) 代码 #include <bits/stdc++.h> #define ll long lon ...