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');
SQL:
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)