Hive的基本操作

一、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];

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容