美文网首页我爱编程
Hive的基本操作

Hive的基本操作

作者: 有一束阳光叫温暖 | 来源:发表于2018-03-28 21:36 被阅读0次

一、hive指令基本操作

清屏:Ctrl+L 或者 !clear

查看数据仓库中的表:show tables;

查看数据仓库中内置的函数:show functions;

查看表结构:desc 表名

查看HDFS上文件:dfs -ls

执行linux指令:!+指令

执行HQL语句:select 

执行SQL的脚本:source SQL文件

二、hive的DDL操作、

a.分割符

create table jiametest(uid string,name string)row format delimited fields terminated by ',';

b.单分区

create table jiametest1(uid string,name string)partitioned by (country String)row format delimited fields terminated by ',';

LOAD DATA local INPATH  'path' INTO TABLE tablename partition(country='USA');

c.双分区

create table jiametest1(uid string,name string)partitioned by (sex String,hour String);

LOAD DATA local INPATH 'path' INTO TABLE tablename partition(sex='男',hour='01');

d.分桶

#指定开启分桶

set hive.enforce.bucketing = true;

set  mapreduce.job.reduces = 4 ;

 先创建 一个学生表

create table students(Sno int,Sname String,Sex String,Sage int, Sdept String)row format delimited fields terminated by ',';

导入数据

LOAD DATA local INPATH ' /home/linwentao/desktop/hivedata/students.txt' INTO TABLE students;

e.外部表

EXTERNAL 关键子可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION)

Hive 创建内部表时,会将数据移动到数据仓库指向的路径,若创建外表表,仅仅记录数据所在的路径,不对数据的位置做任何改变,在删除表时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据

LIKE 允许用户复制现有的表结构,但是不复制数据

f.修改表

//一次添加一个分区

增加分区:ALTER TABLE tablename ADD PARTITION(dt='20170101')location 'path';

//一次添加多个个分区

ALTER TABLE tablename ADD PARTTITION(dt='2008-08-08',country='us')location

'path' PARTITION(dt='2008-08-09',country='us')location 'path';

删除分区

ALTER TABLE tablename DROP IF EXISTS PARTITION(dt='2008-08-08');

ALTER TABLE tablename DROP IF EXISTS PARTITION(dt='2008-08-08',country='us');

修改分区

ALTER TABLE tablename PARTITION(dt='2008-08-08')RENAME TO PARTITION(dt='20080808');

添加列

ALTER TABLE tablename ADD | REPLACE COLUMNS(col_name STRING);

修改列

test(a int,b int,c int);

//修改a 字段名

ALTER TABLE test CHANGE a a1 INT;

//修改a 的字段并且在b的后面

ALTER TBALE test CHANGE a a1 STRING AFTER b;

//修改b位置

ALTER TABLE test CHANGE b b1 INT  FIRST;

// 表重命名

ALTER TABLE test RENAME TO new_test;

三 、hive的DML操作

3.1.Load

在将数据加载到表中时,hive不会进行任何转换。加载操作是将数据文件移动到与hive表对应的位置的纯复制、移动操作

语法结构

      LOAD DATA [LOCAL] INPATH 'filename' [OVERWRITE] INTO TABLE table [PARTITION (partcol=val1,partcol2=val2...)]

说明:

a.filepath

相对路径,例如:project/datal

绝对路径, 例如:/user/hive/project/datal

完整UIR,  例如:hdfs://namenode:9000/user/hive/project/datal

    filepath 可以引用一个文件(在这种情况下,hive将文件移动到表中)或者它可以一个目录(在这种情况下,hive将吧目录中的所有文件移动到表中)

b.LOCAL

如果指定了local,load命令将在本地文件系统中查找文件路径

load 命令会将filepath中的文件复制到目标文件系统中目标文件系统由表的位置性决定,被复制的数据文件移动到表的数据对应的位置。

如果没有指定LOCAL关键字,如果filepath指向的是一个完整的URI,hive会直接使用这个URI。否则:如果没有指定schama或者authority,hive会使用在hadoop配置文件定义的schama和authority,fs.default.name指定了namenode的url

c.OVERWRITE

如果使用overwrite关键字,则目标表(或者分区)中的内容会被删除,然后再将filepath指向文化/目录中的内容添加到表/分区

如果目标表已经有一个文件,并且文件名和filepath中的文件名冲突,那么现有的文件会被新文件所代替。

3.2.insert

hive中insert主要结合select查询语句使用,将查询结果插入到表中,例如:

insert overwrite table stu_buck select * from student cluster by(Sno);

需要保证查询结果列的数目和需要插入数据表格的列数目一致,如果查询出来的数据类型和插入表格对应的列数据类型不一致,将会进行转换,但不能保证转换一定成功,转换失败的数据将会为null.

可以将一个表查询出来的数据插入原表中,结果相对于自我复制一份数据。

a.multo inserts 多重插入:

from source_table

insert overwrite table tablename1 [partition (partcol1=val1,partcol2=val2)]

select_statement1

insert overwirte table tablename2 [partition (partcol1=val1,partcol2=val2)]

select_statement2...

b.Dynamic partition inserts 动态分区插入:

INSERT OVERWRITE TABLE tablename PARTITION (partcol1=[val1],partcol=[val2]...)

select_statement FROM from_statement

动态分区是通过位置来对应区值的。原始表select出发的值和输出partition的值的关系仅仅是通过位置来确定的和名字并没有关系。

c.导出表数据

INSERT OVERWRITE [LOCAL]DIRECTORY directory1 SELECT .. FROM ...

multiple inserts"

FROM from_statement

INSERT OVERWEITE [LOCAL]DIRECTORY directory1 select_statement1

[INSERT OVERWRITE[LOCAL]DIRECTORY directory2 select_statement2]..

3.3 select

SELECT [ALL | DISTINCT] select_expr, select_expr, ...

FROM table_reference

[WHERE where_condition]

[GROUP BY col_list]

[HAVING having_condition]

[CLUSTER BY col_list | [DISTRIBUTE BY col_list] [SORT BY col_list]]

[LIMIT number];

相关文章

  • Hive之同比环比的计算

    Hive系列文章 Hive表的基本操作[http://www.ikeguang.com/?p=1657] Hive...

  • Hive sql常见操作

    基本sql操作 hive表操作 分区操作 Hive内置函数 (1)数学函数 常用的数学函数都有:round、flo...

  • HIVE

    基本操作 hive进入hive模式 exit; 退出hive模式 展示正则匹配表名hive> use ad_s...

  • Hive 基本操作

    准备工作 1.检查各项服务是否已正常启动 [x] hdfs启动【start-dfs.sh】 [x] yarn启动【...

  • Hive 基本操作

    数据库基本操作 ( 和MySQL脚本相似 ): 创建删除库操作 创建删除表操作 hive 特点 Hive不支持修改...

  • Hive基本操作

    在所有操作前先启动hdfs、yarn、historyserver。 hive操作 启动hivebin/hive 创...

  • Hive基本操作

    参考:hive 表的常用操作Hive基本操作 1 Thrift Server Thrift 支持多种语言之间的RP...

  • Hive基本操作

    1.使用SQL文件创建一张表: hive -f create_table 2.将外部数据加载到一张表里面: LOA...

  • hive 基本操作

    hive添加表 hive的命令就是mysql的命令. 创建数据库 创建表 把数据文件put到表在hdfs中的目录下...

  • Hive基本操作

    一、DDL 1.1 创建内部表 mytable 1.2 创建外部表 pageview 1.3 创建分区表 invi...

网友评论

    本文标题:Hive的基本操作

    本文链接:https://www.haomeiwen.com/subject/wxzucftx.html