zoukankan      html  css  js  c++  java
  • Hive之insert into与insert overwrite区别

    一、实践先行,直接上手

    1. hive 表及数据准备

    建表,并插入初始数据。向表中插入

    hive> use test;
    hive> create table kwang_test (id int, name string);
    hive> insert into kwang_test values(1,'kwang');
    hive> insert into kwang_test values(2,'fwang');
    hive> select * from kwang_test;
    OK
    1       kwang
    2       fwang

    2. insert into 操作

    insert into 语法:

    INSERT INTO TABLE tablename [PARTITION (partcol1[=val1], partcol2[=val2] ...)] VALUES values_row [, values_row ...]

    通过 insert into 语句向 kwang_test 表中插入一条数据,并查询结果。

    hive> insert into table kwang_test values(3,'kk');
    hive> select * from kwang_test;
    OK
    1       kwang
    2       fwang
    3       kk

    3. insert overwrite 操作

    insert overwrite 语法:

    INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...) [IF NOT EXISTS]] select_statement1 FROM from_statement;

    insert overwrite 标准语法的数据来源是通过 select 语法来插入,但为了方便,直接插入 values。通过 insert overwrite 语句向 kwang_test 表中插入一条数据,并查询结果。

    hive> insert overwrite table kwang_test values(4,'zz');
    hive> select * from kwang_test;
    OK
    4       zz

    4. 两者异同

    看到上面的现象与结果,基本能够明白 insert into 与insert overwrite 之间的异同,两者都可以向 hive 表中插入数据,但 insert into 操作是以追加的方式向 hive 表尾部追加数据,而 insert overwrite 操作则是直接重写数据,即先删除 hive 表的数据,再执行写入操作。注意,如果 hive 表是分区表的话,insert overwrite 操作只会重写当前分区的数据,不会重写其他分区数据。

    【参考资料】

    [1]. https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML

    [2]. https://my.oschina.net/sshuj/blog/852596

     
  • 相关阅读:
    Angularjs html文本显示
    .net与.net core学习目录
    数据库学习目录
    WCF学习目录
    sql学习目录
    EF学习目录
    git for Windows
    图谱论(Spectral Graph Theory)基础
    2017机器学习相关会议时间
    数值分析教材统计
  • 原文地址:https://www.cnblogs.com/lemonu/p/11279979.html
Copyright © 2011-2022 走看看