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学习笔记-表操作的更多相关文章

  1. hive学习笔记——表的基本的操作

    1.hive的数据加载方式 1.1.load data 这中方式一般用于初始化的时候 load data [local] inpath '...' [overwrite] into table t1 ...

  2. hive 学习笔记——表的入门操作和命令

    1.受控表(managed table)包括内部表.分区表.桶表: 1.1.分区表 创建分区表: create table banji(id INT,name STRING) partitioned ...

  3. mysql学习笔记--表操作

    一.显示所有表 1. 语法:show tables; 二.创建表 1. 语法:create table [if not exists] 表名( 字段名  数据类型  [null | not null] ...

  4. hive学习笔记之三:内部表和外部表

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  5. hive学习笔记之四:分区表

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  6. hive学习笔记之五:分桶

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  7. hive学习笔记之六:HiveQL基础

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  8. hive学习笔记之七:内置函数

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  9. hive学习笔记之十:用户自定义聚合函数(UDAF)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是<hive学习笔记>的第十 ...

随机推荐

  1. text-shadow的用法详解

    1.兼容性:text-shadow 和 box-shadow 这两个属性在主流现代浏览器上得到了很好的支持( > Chrome 4.0, > Firefox 3.5, > Safar ...

  2. js中原型和原型链

    1.原型: 在JavaScript 中,对象被表现为prototype . 原型其实一直存在于我们接触过的任何一个对象. 2. Tip:在函数对象中也存在__proto__属性,但是查看函数对象的原型 ...

  3. 动态代理在WEB与JDBC开发中的应用

    WEB案例 目前有一个2005年开始,基于Struts1的Web项目A,其验证部分依赖于主站的SSO(单点登录).在请求站点A的时候,用户会被强制带去做SSO验证,通过身份验证后后,主站会自动地把请求 ...

  4. vuex的各个细节理解(因人而异)

    应用级的状态集中放在store中: 改变状态的方式是提交mutations,这是个同步的事物: 异步逻辑应该封装在action中. const vuex_store = new Vuex.store( ...

  5. 【Linux】Ubuntu下C语言访问MySQL数据库入门

    使用的系统是Ubuntu 11.10.数据库是MySQL. MySQL数据库环境配置 首先需要安装MySQL客户端和服务器,命令行安装方式为: sudo apt-get install mysql-s ...

  6. python学习笔记(6)——字典(Dictionary)

    dict= {key1 : value1, key2 : value2 ...} 关键词:字典中元素成对出现- key:value 格式- 两端{ } ,键:值,每对键值间用 ,隔开. 键key-唯一 ...

  7. 在自学css开始就遇到问题,“链入外部样式表”在多浏览器显示问题

    在自学css开始就遇到问题,“链入外部样式表”的习题,代码如下:A.被链入的CSS文件代码.css<style  type="text/css"><!--h1{b ...

  8. Application crashes -程序崩溃原因

    Typical errors that result in application crashes include: attempting to read or write memory that i ...

  9. 【原】Python学习

    1.常用模块介绍 #python -m SimpleHTTPServer 执行上面的命令就会在服务器当前目录下启动一个文件下载服务器,默认打开8000端口.这个时候,你只需要将IP和端口告诉客户端,即 ...

  10. 【转载】appium自动化环境搭建

    1.java开发环境JDK 2.android SDK(platform/platform tools/tools/build tools) 3.python下载安装(pip) 4.appium下载安 ...