深入学习《Programing Hive》:Hive的DDL数据定义操作

         在上一节《深入学习《Programing Hive》:Hive的数据模型(表)》中,已经学习过表的定义,接下来接着学习Hive的DDL操作。
         复制表结构:
         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;    
         

猜你喜欢

转载自flyingdutchman.iteye.com/blog/1860845