美文网首页
HIVE基本语法

HIVE基本语法

作者: cllblogs | 来源:发表于2019-08-13 21:40 被阅读0次
    • 建表语句
    CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name 
         [(col_name data_type [COMMENT col_comment], ...)] 
         [COMMENT table_comment] 
         [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] 
         [CLUSTERED BY (col_name, col_name, ...) 
         [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] 
         [ROW FORMAT row_format] 
         [STORED AS file_format] 
         [LOCATION hdfs_path]
    
    • EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION)
    • LIKE 允许用户复制现有的表结构,但是不复制数据
    • COMMENT可以为表与字段增加描述
    • STORED AS
      SEQUENCEFILE
      | TEXTFILE
      | RCFILE
      | INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname
      如果文件数据是纯文本,可以使用 STORED AS TEXTFILE。如果数据需要压缩,使用 STORED AS SEQUENCE 。
    • 删除表
    DROP TABLE table_name
    
    • 修改表
    查看表结构 DESC table_name;
     
    新增表字段 ALTER TABLE table_name ADD COLUMNS (columns_1 STRING,columns_2 STRING); 
     
    修改表名称 ALTER TABLE table_name RENAME TO table_name1;
    
    • 导入外部文件数据
    加载数据到表中
      LOAD DATA LOCAL INPATH '/home/hadoop/data/data.txt' INTO TABLE table_name;
     
    加载hdfs中的文件:  
      LOAD DATA INPATH '/user/hive/data.txt' INTO TABLE table_name;
     
    复制表数据:  
      INSERT OVERWRITE TABLE table_name1 select * from table_name2;
    
    • 分区操作
    分区表创建  
      CREATE TABLE table_name(
      ...
      )
      PARTITION BY (opt_mon STRING,opt_day STRING);
      
    分区表添加分区
      alter table table_name add partition (opt_mon='201907',opt_day='20190706'); 
     
    分区中添加数据
      insert overwrite table table_name1 
      partition(opt_mon='201907',opt_day='20190706') 
      select * from table_name2 where opt_mon='201907' and opt_day='20190706';
      
    多分区插入数据
      from table_name1
      insert overwrite table table_name2 partition(opt_mon='201907',opt_day='20190706') select * from table_name1 where opt_mon='201907',opt_day='20190706'
      insert overwrite table table_name2 partition(opt_mon='201907',opt_day='20190707') select * from table_name1 where opt_mon='201907',opt_day='20190707'
      insert overwrite table table_name2 partition(opt_mon='201907',opt_day='20190708') select * from table_name1 where opt_mon='201907',opt_day='20190708';  
      
    动态分区
    前提:set hive.exec.dynamic.partition=true;  
         set hive.exec.dynamic.partition.mode=nonstrict;   
    需要设置以上两个参数
    insert overwrite table table_name1 partition(opt_mon='201907',opt_day)
    select *,opt_day from table_name2 where opt_mon='201907'; 
    opt_mon 作为静态分区列 opt_day 作为动态分区列    
    

    动态分区不允许主分区采用动态列而副分区采用静态列,这样将导致所有的主分区都要创建副分区静态列所定义的分区

    • ...

    相关文章

      网友评论

          本文标题:HIVE基本语法

          本文链接:https://www.haomeiwen.com/subject/spsijctx.html