Hive Shell Or SQL

SHELL:
1、查询所有表: SHOW TABLES;、SHOW TABLES '.*s';

2、查询表的列(字段):DESCRIBE TABLE_NAME;

3、改表名、变更表字段:
ALTER TABLE EVENTS RENAME TO 3KOOBECAF;
ALTER TABLE EVENTS ADD COLUMNS (NEW_COL INT);
ALTER TABLE EVENTS ADD COLUMNS (NEW_COL2 INT COMMENT 'A COMMENT');
ALTER TABLE EVENTS REPLACE COLUMNS (FOO INT, BAR STRING, BAZ INT COMMENT 'BAZ REPLACES NEW_COL2');

PS:取代列代替所有现有列,只改变表的模式,而不是数据。

ALTER TABLE EVENTS REPLACE COLUMNS (FOO INT 'ONLY KEEP THE FIRST COLUMN'); 
4、删除表: DROP EVENTS;

DML(Data Manipulation Language) Operations数据操作语言   操作

 

1、从机器磁盘文件加载数据到Hive表:

PS: 省略'LOCAL'则默认从HDFS中加载数据、省略'OVERWRITE’则文件数据追加到现有表数据集上,否 则现有表中数据删除
    如果文件在HDFS中,执行LOAD操作会把文件移动到 Hive-controlled文件系统命名空间。
LOAD DATA LOCAL INPATH './exmples/files/kv1.txt' OVERWRITE INTO TABLE EVENTS;
2、分区    partitions key(ds)、value(2008-08-15、2008-08-16)
LOAD DATA INPATH '/user/myname/kv2.txt' OVERWRITE INTO TABLE EVENTS PARTITION (ds='2008-08-15');
LOAD DATA INPATH '/user/myname/kv2.txt' OVERWRITE INTO TABLE EVENTS PARTITION (ds='2008-08-16');
 
 

SQL:
1、查询表信息: SELECT A.FOO FROM EVENTS A WHERE A.ds='2008-08-15';
 
2、向表中插入信息:

INSERT OVERWRITE DIRECTORY '/tmp/hdfs_out' SELECT A.* FROM EVENTS A WHERE A.ds='2008-08-15';

 
INSERT OVERWRITE LOCAL DIRECTORY '/tmp/local_out' SELECT A.* FROM EVENTS A;

PS:支持SUM、AVG、MIN、MAX、COUNT(*)[HIVE-287不支持、支持COUNT(1)]等函数使用。

INSERT OVERWRITE DIRECTORY '/tmp/sum' SELECT SUM(A.FOO) FROM EVENTS A;
 
3、下面两条 SQL 等价 GROUP BY

INSERT OVERWRITE TABLE EVENTS SELECT A.BAR, COUNT(*) FROM EVENTS A WHERE A.FOO > 0 GROUP BY A.BAR;

FROM EVENTS A INSERT OVERWRITE TABLE EVENTS SELECT A.BAR, COUNT(*) WHERE A.FOO > 0 GROUP BY A.BAR;
4、JION
 

FROM EVENTS A1 JION 3KOOBECAF A2 ON (A1.BAR = A2.BAR) INSERT OVERWRITE EVENTS SELECT A1.BAR, A1.FOO, A2.FOO;

5、多条插入
 

FROM EVENTS 

INSERT OVERWRITE TABLE TEST1 SELECT EVENTS.* WHERE EVENTS.KEY < 100 
INSERT OVERWRITE TABLE TEST2 SELECT EVENTS.KEY, EVENTS.VALUE WHERE EVENTS.KEY >= 100 AND EVENTS.KEY <= 200 
INSERT OVERWRITE TABLE TEST3 PARTITION(ds = '2008-08-15', hr = '12') SELECT EVENTS.KEY WHERE EVENTS.KEY >= 200 
INSERT OVERWRITE LOCAL DIRECTORY '/tmp/test_out' SELECT EVENTS.VALUE WHERE EVENTS.KEY >= 300;
6、 Streaming
FROM EVENTS a INSERT OVERWRITE TABLE TEST SELECT TRANSFORM(a.FOO, a.BAR) AS (OOF, RAB) USING '/bin/cat' WHERE a.ds > '2008-08-15';
7、 建表  
CREATE TABLE EVENTS(USERID INT, MOVIEID INT, RATING STRING) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE; 

PS:'\t'表示在TEXTFILE类型的文件中,字段之间使用'\t'分割的   '\t'代表制表符(TAG)

 

猜你喜欢

转载自jiao-du.iteye.com/blog/2253099
今日推荐