hive使用指南

简介: 创建库:create database base_name; 创建内/外部表: CREATE EXTERNAL TABLE t_lxw1234 ( id INT, ip STRING COMMENT ‘访问者IP’, avg_view_depth DECIMAL(5,1), ...

创建库:create database base_name;

创建内/外部表:

CREATE EXTERNAL TABLE t_lxw1234 (

id INT,

ip STRING COMMENT ‘访问者IP’,

avg_view_depth DECIMAL(5,1),

bounce_rate DECIMAL(6,5)

) COMMENT ‘lxw的大数据田地-lxw1234.com’

PARTITIONED BY (day STRING)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY ‘,’

STORED AS textfile

LOCATION ‘hdfs://cdh5/tmp/lxw1234/';

关键字EXTERNAL:
表示该表为外部表,如果不指定EXTERNAL关键字,则表示内部表

关键字COMMENT
为表和列添加注释

关键字PARTITIONED BY
表示该表为分区表,分区字段为day,类型为string

关键字ROW FORMAT DELIMITED
指定表的分隔符,通常后面要与以下关键字连用:

FIELDS TERMINATED BY ‘,’ //指定每行中字段分隔符为逗号

LINES TERMINATED BY ‘\n’ //指定行分隔符

COLLECTION ITEMS TERMINATED BY ‘,’ //指定集合中元素之间的分隔符

MAP KEYS TERMINATED BY ‘:’ //指定数据中Map类型的Key与Value之间的分隔符

举个例子:

create table score(name string, score map<string,int>)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY ‘\t’

COLLECTION ITEMS TERMINATED BY ‘,’

MAP KEYS TERMINATED BY ‘:';

要加载的文本数据为:

biansutao ‘数学':80,’语文':89,’英语':95

jobs ‘语文':60,’数学':80,’英语':99

关键字STORED AS
指定表在HDFS上的文件存储格式,可选的文件存储格式有:

TEXTFILE //文本,默认值

SEQUENCEFILE // 二进制序列文件

RCFILE //列式存储格式文件 Hive0.6以后开始支持

ORC //列式存储格式文件,比RCFILE有更高的压缩比和读写效率,Hive0.11以后开始支持

PARQUET //列出存储格式文件,Hive0.13以后开始支持

关键词LOCATION
指定表在HDFS上的存储位置。

分区设置:
创建表时指定分区:

CREATE EXTERNAL TABLE t_lxw1234 (

id INT,

ip STRING COMMENT ‘访问者IP’,

avg_view_depth DECIMAL(5,1),

bounce_rate DECIMAL(6,5)

) COMMENT ‘lxw的大数据田地-lxw1234.com’

PARTITIONED BY (month STRING, day STRING)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY ‘,’

STORED AS textfile;

使用INSERT添加分区:

往分区中追加数据:

INSERT INTO TABLE t_lxw1234 PARTITION (month = ‘2015-06′,day = ‘2015-06-15′)

SELECT * FROM dual;

覆盖分区数据:

INSERT overwrite TABLE t_lxw1234 PARTITION (month = ‘2015-06′,day = ‘2015-06-15′)

SELECT * FROM dual;

使用ALTER TABLE添加分区:
ALTER TABLE t_lxw1234 ADD PARTITION (month = ‘2015-06′,day = ‘2015-06-15′) location ‘hdfs://namenode/tmp/lxw1234/month=2015-06/day=2015-06-15/';

删除分区

可以使用 ALTER TABLE t_lxw1234 DROP PARTITION (month = ‘2015-01’, day = ‘2015-01-25’);

动态分区:http://lxw1234.com/archives/2015/06/286.htm

加载数据:
1.建表时候直接指定:
如果你的数据已经在HDFS上存在,已经为结构化数据,并且数据所在的HDFS路径不需要维护,那么可以直接在建表的时候使用location指定数据所在的HDFS路径即可。

CREATE [EXTERNAL] TABLE t_lxw1234 (
day STRING,
url STRING)
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ' ' 
stored as textfile 
location '/tmp/lxw1234/';

这里内部表和外部表都可以指定,但需要注意,如果是内部表,那么在DROP该表的时候,同时会将LOCATION所指定的目录一起删除。

2 从本地文件系统或者HDFS的一个目录中加载

如果数据在本地,或者HDFS的某一个目录下,需要加载到目标中或分区中,那么使用LOAD DATA命令即可加载数据:

加载本地文件
LOAD DATA LOCAL INPATH ‘/home/lxw1234/t_lxw1234/’
INTO TABLE t_lxw1234 PARTITION (day = ‘2015-06-15’);

加载HDFS文件
LOAD DATA INPATH ‘/user/lxw1234/t_lxw1234/’
INTO TABLE t_lxw1234 PARTITION (day = ‘2015-06-15’);

3 从一个子查询中加载数据

这个比较简单,就是将一个查询结果插入到目标表或分区中:

INSERT overwrite TABLE t_lxw1234 PARTITION (day = ‘2015-06-15’)
SELECT day,url from source_table;

4 导出Hive中的数据到文件系统
如果指定了LOCAL关键字,则为导出到本地文件系统,否则,导出到HDFS。使用ROW FORMAT关键字可以指定导出的文件分隔符,比如:

INSERT OVERWRITE LOCAL DIRECTORY '/tmp/lxw1234/' 
  ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 
SELECT * FROM t_lxw1234;

摘自:http://lxw1234.com/archives/category/hive/page/3

权限操作:
创建角色 CREATE ROLE ROLE_NAME
删除角色: DROP ROLE ROLE_NAME

把role_test1角色授权给jayliu用户,命令如下 grant role role_test1 to user jayliu;
查看jayliu用户被授权的角色,命令如下: SHOW ROLE GRANT user jayliu;
取消jayliu用户的role_test1角色,操作命令如下: revoke role role_test1 from user jayliu;

把某个库的所有权限给一个角色,角色给用户!
grant all on database user_lisi to role role_lisi;

把某个库的权限直接给用户!grant ALL ON DATABASE USER_LISI TO USER lisi;

收回权限 revoke ALL on database default from user lisi;

查看用户对数据看的权限 show grant user lisi on database user_lisi;

目录
相关文章
|
4月前
|
SQL NoSQL 数据库
Flutter Hive NoSql 数据库使用指南
本文将会写一个 Hive CURD 的例子,详细介绍 Hive 这个轻量级的 Flutter 离线数据库的使用方法,包括 Hive 在 Flutter 开发中的重要性、Hive 与 SQLite 的比较等,帮助开发者快速上手 Hive 数据库。
Flutter Hive NoSql 数据库使用指南
|
存储 SQL 机器学习/深度学习
[Hive]Hive使用指南七 空值与NULL
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunnyYoona/article/details/78276551 1.
3565 0
|
SQL JSON Java
[Hive]JsonSerde使用指南
注意: 重要的是每行必须是一个完整的JSON,一个JSON不能跨越多行,也就是说,serde不会对多行的Json有效。 因为这是由Hadoop处理文件的工作方式决定,文件必须是可拆分的,例如,Hadoop将在行尾分割文本文件。
2747 0
|
SQL HIVE
[Hive]Lateral View使用指南
1. 语法 lateralView: LATERAL VIEW udtf(expression) tableAlias AS columnAlias (',' columnAlias)* fromClause: FROM baseTable (lateralView)* 2. 描述 Lateral View一般与用户自定义表生成函数(如explode())结合使用。
4512 0
|
SQL HIVE iOS开发
[Hive]Union使用指南
1. union语法 select_statement UNION [ALL | DISTINCT] select_statement UNION [ALL | DISTINCT] select_statement ... UNION将多个SELECT语句的结果集合并为一个独立的结果集。
2247 0
|
SQL Unix HIVE
[Hive]Hive使用指南六 日期相关函数
下面介绍一下常用的Hive日期处理相关函数。 1. to_date 日期时间转日期函数 语法: to_date(string timestamp) 返回值: string 说明: 返回日期时间字段中的日期部分。
1506 0
|
SQL HIVE
[Hive]Hive使用指南四 客户端导入数据
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunnyYoona/article/details/52935649 根据导...
980 0
|
SQL HIVE Perl
[Hive]Hive使用指南五 客户端导出数据
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunnyYoona/article/details/52924452 根据导...
814 0
|
SQL 数据库 HIVE
[Hive]Hive使用指南二 Hive命令的3种调用方式
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunnyYoona/article/details/51549329 1. 多语句执行 执行HQL脚本 hive –f /root/shell/hive-script.sql hive-script.sql类似于script一样,直接写查询命令就行。
1320 0
|
6月前
|
SQL 数据采集 数据挖掘
大数据行业应用之Hive数据分析航班线路相关的各项指标
大数据行业应用之Hive数据分析航班线路相关的各项指标
191 1