您现在的位置是:首页 > 文章详情

hive使用指南

日期:2018-07-24点击:615

创建库: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;

原文链接:https://yq.aliyun.com/articles/618612
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章