Hive是什么

学Hive指路《Hive编程指南》

hive:

Apache蜂巢™数据仓库软件便于阅读,写作,和管理大型数据集居住在分布式存储使用SQL。

结构可以投影到已经存储的数据上。提供了一个命令行工具和JDBC驱动程序来将用户连接到Hive。

 

存储元数据需要一个关系型数据库(一般是mysql)     一般存储表的模式和分区信息等

真正的数据存放到hdfs

hive只需要安装到一台机器上,所说的单机、伪分布和分布指的hadoop

 

11.15

数据类型

基本数据类型  P40

集合数据类型  P42

 

写时模式:

数据在写入数据库时对模式进行检查

读时模式:

不在加载时验证,数据而是在查询时验证

 

分区表

提高性能

 

创建库

create database 数据库名;

 

查看库

show databases;

模糊查询

show tablses like '正则';

查看数据库信息

describe database extended '库名';

显示所在数据库

set hive.cli.print.current.db=true

删除库如果存在(前提删除里面的表)

drop database if exists 库名;

删除库(不管里面有没有表)

drop database if exists 库名 cascade;

修改库

alert database 库名 set dbproperties('key'='value')

创建表

create table 库名.表名(

列名1 类型,

列名2 类型,

) location '库存放位置'

查看某个库里面的表

show tables in 库

分区表

create table 库名.表名(

列名1 类型,

列名2 类型,

) partitioned by(列名1 类型,列名2 类型)

禁止没有加分区过滤的任务提交

set hive.mapred.mode=strict

 

删除表(如果表存在删除,不存在也不会报错)

drop table if exists 表名

重命名表

alert table 表名 rename to 新的表名

增加分区

alert table 表名 add if not exists

partition(分区信息) location(存储位置)

删除分区

alert table 表名 drop if exists partition(分区信息)

 

修改列

alert table 表名 change column 旧列名 新列名 新类型 comment 新备注 after 列名

增加列

alert table 表名 add column (列名1 类型,列名2 类型)

 

删除或替换列

alert table 表名 replace column(

现有的列

)

修改表属性

alert table 表名 set tblpropies('key'='value')

向管理表中加载数据

load data location inputpath '原文件位置' overwrite to table 表名

 

通过查询语句向表中插入数据

insert overwrite table 表名 查询子句(select结果集)

 

form 表名

insert overwrite table 表名 查询子句(select结果集)

insert overwrite table 表名 查询子句(select结果集)

insert overwrite table 表名 查询子句(select结果集)

动态分区

insert overwrite table 表名 partition(列名【根据哪些列分区     ,间隔】) 查询子句

动态分区属性 P75

 

单个查询语句中创建表并加载数据

create table 表名 as 查询子句

导出数据

1.如果文件格式和用户需要的一致,可以用hadoop指令直接复制出来

2.insert overwrite local dirctory '本地目录' 查询子句

 

 

视图

使用视图可以降低查询复杂度

索引

使用索引加速查询效率

hive优化

参照hive编程指南第10章

 

你可能感兴趣的:(Hive是一个数据仓库)