hive学习笔记-表操作
Hive数据类型
基本数据类型
tinyint,smallint,int,biging,float,double,decimal,char,varchar,string,binary,boolean,timestamp,date,
引用数据类型
Array:同样数据类型组合的数组,使用array[1]訪问
MAP:Key-value键值对,通过键进行訪问,使用map['key']訪问
STRUCT:结构体类型,用来存储不同数据类型的数据,是用struct.key訪问
类型不区分大写和小写
Hive使用的文件
textfile:文本格式
SequenceFile:序列化文件(存储的是二进制)
RcFile:列是文件存储格式
Hive基本使用表
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name [(col_name data_type [COMMENT col_comment],...)] [PARTITIONED BY(col_name data_type [COMMENT col_comment],...)] [CLUSTERED BY (col_name,col_name2,...) SORTED BY(col_name [ASC|DESC],...)] INTO num_buckets
BUCKETS]
[
[ROW FORMAT row_format][STORED AS file_format] | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES(...)]
]
[LOCATION hdfs_path]
[AS select_statement]
EXTERNAL:是内部还是外部表
PARTITIONER BY :依据指定列进行分区
CLUSTERED BY:依照某一个字段将同样数据聚到同一个reduce中
BUCKETS:分桶,依据哈希值进行分桶
LOCATION:创建表,其文件在在集群的位置
AS:查询值同一时候加入到表中
样例:
CREATE TABLE IF NOT EXISTS employees(
name string,
salary float,
subordinates array<string>,
deductions map<string,float>,
address struct<street:string,city:string,state:string,zip:int>
)row format delimited fields terminated by '\t' collection items terminated by ',' map keys terminated by ':' lines terminated by '\n' stored as textfile location '/data/';
查看表结构:
desc table_name;
具体信息
desc extended table_name;
格式化后的具体信息
desc formatted table_name;
删除表
drop table table_name;
外部表与内部表的差别:
假设内部表,在删除表之后会将表数据从HDFS中删除,而外部表仅仅删除表的元数据信息,并不会删除表中的数据。
查询字段,假设是array类型能够通过下标
select subordinates[1] from employees;
查询假设是map,使用col_name['key']
查询假设是struct。使用col_name.steet
show tables 显示当前数据库中的表
desc [extended | formatted] table_name 显示表的结构
show create table tablename 显示创建表的语句
drop table tablename 删除表
create table test1 like test2 复制表结构,可是表中数据并没有载入过来
create table test4 as select name,addr from test5 依据test5的name和addr创建test4表。而且将test5中name和addr数据内容载入到test4中(select中不能查*)
hive不同文件读取:
stored as testfile
直接查看HDFS
通过hdfs dfs -test查看
stored as sequencefile
通过hdfs dfs -test查看
stored as rcfile
hive -service rcfilecat path
stored as inputformat 'class' outputformat 'class'
四种基本的差别是inputformat 和 outputformat不同
hive中载入jar包(当次会话实用,假设多次须要加到lib文件夹下)
add jar path/..jar
Hive使用SerDe
SerDe是Serializer和Deserializer的缩写即序列化与反序列化
Hive读写数据的顺序
HDFS->inputfileformat-> <key,vlaue> -> deserializer -> row对象
row对象 -> serializer -> <key,value> ->outputFileFormat -> HDFS文件
Hive分区
为了避免查询过程中消耗非常长时间进行查找整个表,能够使用分区。查找特定分区中的内容,从而节省时间。
分区语句
create table tablename(
name string
....
)
partitioned by(col_name type,...) 这个分区字段和上面定义的字段不同。定义分区字段能够有多个用于分区后在对内容进行分区,相当于一级分区二级分区,注意和顺序有关的
事实上分区就是在HDFS下相应表中创建文件夹,这样以后查询的时候直接去相应文件夹下进行查找
加入分区语法:
alter table table_name add [if not exists] partition(col_name=par_con)
注意这样的加入分区方法前提是在创建表的时候已经创建了col_name分区
删除分区
alter table table_name drop [if exists] partition(col_name=par_com)
查看分区
show partitions table_name
数据载入到分区:
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE table_name [partition(dt=..,hour=..)]
Hive分桶
对于某个表或者某个分区。hive进一步的组织成桶,也就是说桶是更细粒度范围的划分
hive针对某一列进行分桶
hive採用对列进行hash取值。然后使用该值对桶的个数取余的方式决定该条记录放在哪个桶中
与分区一样都是为了提高查询的效率
查找
select [ALL|DISTINCT] col_name frwom table_name [where col_name=..]
hive学习笔记-表操作的更多相关文章
- hive学习笔记——表的基本的操作
1.hive的数据加载方式 1.1.load data 这中方式一般用于初始化的时候 load data [local] inpath '...' [overwrite] into table t1 ...
- hive 学习笔记——表的入门操作和命令
1.受控表(managed table)包括内部表.分区表.桶表: 1.1.分区表 创建分区表: create table banji(id INT,name STRING) partitioned ...
- mysql学习笔记--表操作
一.显示所有表 1. 语法:show tables; 二.创建表 1. 语法:create table [if not exists] 表名( 字段名 数据类型 [null | not null] ...
- hive学习笔记之三:内部表和外部表
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- hive学习笔记之四:分区表
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- hive学习笔记之五:分桶
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- hive学习笔记之六:HiveQL基础
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- hive学习笔记之七:内置函数
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- hive学习笔记之十:用户自定义聚合函数(UDAF)
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是<hive学习笔记>的第十 ...
随机推荐
- Tornado引入静态css、js文件
一.静态路径 template_path=os.path.join(os.path.dirname(__file__), "templates") 这里是设置了模板的路径,放置模板 ...
- acm练习-day1_1
“麻雀”lengdan用随机数生成了后台数据,但是笨笨的他被妹纸的问题给难住了... 已知lengdan生成了N(1=<N<=10005)个随机整数,妹子对这些数可能有以下几种操作或询问: ...
- npm——nrm
nrm 是镜像地址,方便国内下载 npm i nrm -g nrm ls nrm use taobao // 切换地址
- 个人觉得比较好用的chrome插件
印象笔记·悦读 "悦读"可使博文.文章和网页变得简明而又易于阅读.将其保存至印象笔记以便随时随地阅读. Anything to QRcode 通过右键菜单或地址栏按钮将当前页面地址 ...
- 运用反射时报错java.lang.NoSuchMethodException,以解决,记录一下
问题:想调用service类中的私有方法时, Method target=clz.getMethod("say", String.class);用Class的getMethod报错 ...
- CAD制作简单动画
主要用到函数说明: IMxDrawEntity::Rotate 旋转一个对象.详细说明如下: 参数 说明 [in] IMxDrawPoint* basePoint 旋转基点 [in] DOUBLE d ...
- 梦想CAD控件安卓图层
新建图层 CAD中我们设置好图层后除了我们平常的绘图时选择线段的颜色,线型,线宽等作用,而且我们还可以在出图时选择性显示图形,冻结图形,已达到我们想要的效果. 实现代码说明: //增加一个图层 参数为 ...
- Vue-prop
HTML 中的特性名是大小写不敏感的,所以浏览器会把所有大写字符解释为小写字符.这意味着当你使用 DOM 中的模板时,camelCase (驼峰命名法) 的 prop 名需要使用其等价的 kebab- ...
- adb 命令收藏学习地址
adb 命令相关的网页https://www.cnblogs.com/medsonk/p/8334847.htmlhttps://www.cnblogs.com/medsonk/p/6959658.h ...
- Appium 的xpath定位
Appium 的xpath定位 1.如果元素text是唯一的,可以通过text文本定位 //*[@text=’text文本属性’] # 定位text driver.find_element_by_xp ...