美文网首页
Hive常用操作

Hive常用操作

作者: _张旭 | 来源:发表于2018-07-14 17:13 被阅读0次

    创建表

    简单的建表

    create table
    spec_table_from_textfile(
      id bigint,
      table_code string,
      table_name string,
      table_common string,
      column_code string,
      column_name string,
      column_common string)
    

    从查询结果创建表

    create table table2
    as select phone_num,real_name,id_card,create_time 
    from table1 
    where info_from like '%18%'
    

    克隆表

    create table like tablename1
    
    • 此处是指克隆表结构,并不会克隆表数据。

    创建从格式化文本文件导入的表

    create table
    spec_table_from_textfile(
      id bigint,
      table_code string,
      table_name string,
      table_common string,
      column_code string,
      column_name string,
      column_common string)
    row format delimited
    fields terminated by ','
    stored as textfile
    

    创建 orc 表

    create table
    spec_table_orc(
      id bigint,
      table_code string,
      table_name string,
      table_common string,
      column_code string,
      column_name string,
      column_common string)
    clustered by (id) into 3 buckets
    stored as orc TBLPROPERTIES ('transactional'='true')
    
    • ORC表支持行级delete、updata和insert等操作,但需要配置HIVE相关配置文件,具体操作点击链接

    导入数据至表

    Hive表接受批量插入,一般不支持逐条记录插入的insertSQL语句。

    从查询数据导入

    若目标表和数据源表的表结构一至:

    insert into table xx select * from xx where xxx
    
    • 字段数据结构不一致Hive会尝试转换,转换不了的置NULL

    导入时指定特殊值

    insert into
    spec_test(
      id,
      table_code,
      table_name,
      filed_code,
      filed_name,
      category
    )
    select *,'zx'
    from spec_table2
    
    • 一种适用的场景是在表合并时,对目标表新增的字段指定来源。

    选择字段导入

    insert into table
    table1(
      wp_id,
      wp_phone,
      wp_email,
      wp_sex,
      wp_birthday)
    select * from table2
    

    从文本文件导入

    如上一小节创建从格式化文本文件导入的表,对应的建表后可在hive-shell中指定文本文件路径导入,需要注意的是文本文件中字段和字段之间的分隔符必须和建表语句中指定的一至:

    load data local inpath '/home/hive/zx/spec_table_from_textfile.txt' into table spec_table_from_textfile
    

    查询表

    与常见的SQL查询语句类似:

    select * from spec_table where table_name like 'xx%' and table_name like '00%' limit 1000
    

    修改表

    修改名

    alter table name old_name to new_name
    

    增加字段

    alter table spec_table2 add columns (category string);
    
    • 在尾部增加

    修改表结构

    alter table spec_table2
    replace columns (
      id bigint,
      table_code string,
      table_name string,
      filed_code string,
      filed_name string
      );
    

    注:这个语句只是修改表结构并不会对数据进行操作,如果表中已经存在数据,你删除一个字段后再恢复会发现数据还在,同样如果你改变字段顺序,会发现数据错位了。

    删除表

    drop table xx
    

    相关文章

      网友评论

          本文标题:Hive常用操作

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