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=..]

时间: 2024-08-01 16:01:06

hive学习笔记-表操作的相关文章

hive学习笔记-数据操作

hive数据操作 hive命令行操作 hive -d --define <key=value> 定义一个key-value可以在命令行中使用 hive -d database <databasename>    指定使用的数据库 hive -e "hql"    不需要进入cli执行hql语句,可以在脚本中使用 hive -f fileName 将hql放到一个file文件中执行,sql语句来自file文件 hive -h hostname 访问主机,通过主机的

树莓派学习笔记——SQLite操作简述

0 前言 本文介绍如何在树莓派中利用SQLite数据库保存CPU温度数据.SQLite是一款轻量级零配置数据库,非常适合在树莓派和其他嵌入式系统中使用.SQLite文档详细资料丰富,本文不会详细解释SQLite数据库操作的方方面面,只能结合具体场景按需说明.本文介绍的SQLite技巧也可以在其他平台使用,并不局限于树莓派. 本文继续折腾树莓派温度,需要从中可以玩出新花样. [相关博文] [树莓派学习笔记--索引博文]--更多博文请关注. [树莓派学习笔记--获取树莓派CPU温度] [树莓派学习笔

hive 学习笔记精简

创建表: drop table t create table if not exists t (t string) partitioned by (log_date string) row format delimited fields terminated by '\t' lines terminated by '\n' create table t1 like t create table t2 as select * from t //如果加多余的字段或者加group by等关键字会报错

Blender学习笔记 | 02 | 操作

Shift 点击不同图层 同时显示多图层物件 z 切换 Solid / Wireframe 视图模式 点选物件后M 移动到图层选项 Ctrl + 鼠标左键拖动 自由全选物件 B 方形区域圈选物件 Tab Object / Edit Mode 切换 T 开 / 关 侧栏 Ctrl + Tab 编辑状态下切换编辑对象 E Extrude Region 推挤区域.以发现为轴线. X 删除物件菜单 Blender学习笔记 | 02 | 操作,布布扣,bubuko.com

memcached学习笔记5--socke操作memcached 缓存系统

使用条件:当我们没有权限或者不能使用服务器的时候,我们需要用socket操作memcached memcached-client操作 特点: 无需开启memcache扩展 使用fsocketopen()套接字连接memcached 同样执行CRUD require_once(CLASS_PATH.'memcached-client.php');//CLASS_PATH 是我定义的类文件文件夹路径 $mc = new memcached( array( 'servers' => array( '1

计算机操作系统学习笔记_1_操作系统概述

操作系统概述 一.操作系统的概念.特征.功能和提供的服务 1.操作系统的概念     操作系统是计算机系统中最重要.最基本的系统软件,操作系统位于硬件和用户程序之间.    对于用户来讲:它能向用户提供使用计算机的接口;    从资源管理角度来看:它能管理计算机软硬件资源,提高其利用率;    再者,利用虚拟机技术(如WMWare,VirtualBox,Java虚拟机等),扩展了计算机的功能和使用范围.     因此,操作系统的定义为:操作系统是控制和管理计算机软.硬件资源,以尽可能合理.高效的

memcached学习笔记3--telnet操作memcached

方式: 一.telnet访问memcached缓存系统(主要用于教学,不讨论) telnet 127.0.0.1 11211     => telnet IP地址 端口号 //往Memcached中存放数据 add username 0 60 5       => add:添加命令 username:key的名字(是以key/value存放) 0:标示,一般不用管 60:缓存多长时间,超过时间自动删除,单位(秒) s 5: 表示放入的数据大小 注意:如果一个key已经存在,再要添加数据到这个k

oracle菜鸟学习之 表操作

首发:http://www.arppinging.com/wordpress/?p=96 oracle菜鸟学习之 表操作 1.创建表 在oracle中,创建表使用create table来实现 SQL> create table student(sno number(6),sname varchar2(12),address varchar2(20)); Table created. SQL> desc student; Name Null? Type --------------------

Hive学习笔记(三)

分区和桶: hive把表组织成分区,这是一种根据分区列的值进行粗略划分的机制.使用分区可以加快数据分片的查询速度. 表或分区可以进一步划分为桶,它会为数据提供额外的数据结构从而获得更高效的查询处理.比如:根据用户ID来划分桶,我们可以在所有用户集合的随机样本上快速计算基于用户的查询. 分区: 分区是在创建表时用PARTITIONED BY子句进行定义.该子句需要定义列的列表. create table logs(ts String,line String ) PARTITIONED BY(dt