复制表结构:
CREATE TABLE IF NOT EXISTS students2 LIKE students;
查看表结构:
DESCRIBE TABLE students;
删除表:
DROP TABLE students;
创建视图:
Hive中的视图(view)的概念和传统数据库中的表是相同的,是只读的,目前还不支持不支持物化视图。
如果在创建试图后,再将基本表中被视图引用的列修改,那么修改后的数据列将不会体现在视图中;如果基本表被删除或以不兼容的方式被修改,则查询该视图时会失败。
CREATE VIEW IF NOT EXISTS view_students (user_no,name,score) AS SELECT user_no,name,score FROM students;
删除视图:
DROP VIEW view_students;
定制表存储方式:
CREATE TABLE IF NOT EXISTS employees( no STRING, name STRING, salary FLOAT, subordinates ARRAY<STRING>, deductions MAP<STRING,FLOAT>, address STRUCT<street:STRING,district:STRING,city:STRING,province:STRING,ZIP:STRING> ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' COLLECTIN ITEMS TERMINATED BY '\002' MAP KEYS TERMINATED '\003' LINES TERMINATED BY '\n' STORED AS INPUTFORMAT 'org.linkedin.haivvreo.AvroContainerInputFormat' OUTPUTFORMAT 'org.linkedin.haivvreo.AvroContainerOutputFormat';
修改表结构:
1)、重命名表
ALTER TABLE table_name RENAME TO new_table_name;
只修改了表名,不会改变表结构和数据存放的位置。
2)、修改列名、类型、位置及注释
CREATE TABLE IF NOT EXISTS test(a INT,b STRING,c FLOAT);//创建测试表 //修改列名 ALTER TABLE test CHANGE a a2 INT; /*将a列的名字改为a2,并将其数据类型改为STRING,然后将之放在b列之后;修改 * 后的表结构为:b INT,a2 STRING,c FLOAT */ ALTER TABLE test CHANGE a a2 STRING AFTER b; /* * 将b列的名字改为b2,并将其数据类型由FLOAT改为DOUBLE,然后将之 * 放在第一列;修改后的表结构为: * b2 DOUBLE,a STRING,c FLOAT */ ALTER TABLE test CHANGE b b2 DOUBLE FIRST;
列的改变只会修改Hive的元数据,而不改变实际的数据。
用户应该确保元数据的定义和实际的数据结构保持一致。
3)、增加新列
ALTER TABLE test ADD COLOMNS(d INT,e STRING);
4)、改变表的数据存储格式
ALTER TABLE test SET FILEFORMAT SEQUENCEFILE;
5)、添加分区Partition
ALTER TABLE students ADD PARTITION(ds = '2013-05-07',country = 'china') LOCATION '/usr/test/data/test.txt';
6)、删除分区Partition
ALTER TABLE students DROP PARTITION(ds = '2013-05-07',country = 'china');
7)、创建函数
CREATE TEMPORARY FIUNCTION aFunc as class_name;
8)、删除函数
DROP TEMPORARY FIUNCTION aFunc;
9)、显示表
SHOW TABLES students;
9)、显示分区
SHOW PARTITIONS students;