• hive加载数据


    1)加载到普通表

                --加载本地文本文件内容(要与hive表字段分隔符顺序都要一致)
                load data local inpath '/home/hadoop/orders.csv' overwrite into table orders;
                1> 如果数据源在HDFS上,则 load data inpath 'hdfs://master:9000/user/orders' overwrite into table orders;
     
    2) 加载到分区表
                load data local inpath '/home/hadoop/test.txt' overwrite into table test partition (dt='2017-09-09');
                1> partition 是指定这批数据放入分区2017-09-09中;
     
    3)加载分桶表
                --先创建普通临时表
                create table orders_tmp
                (
                    user_id int,
                    user_name string,
                    create_time string
                )
                row format delimited fields terminated by ',' stored as textfile;
     
                --数据载入临时表
                load data local inpath '/home/hadoop/lead.txt' overwrite into table orders_tmp;
     
                --导入分桶表
                set hive.enforce.bucketing = true;
                insert overwrite table orders select * from orders_tmp;
     
    4) 导出数据
                --导出数据,是将hive表中的数据导出到本地文件中;
                insert overwrite local directory '/home/hadoop/orders.bak2017-12-28' select * from orders;
                【去掉local关键字,也可以导出到HDFS上】
     
    5)插入数据
                --insert select ; {}中的内容可选
                insert overwrite table order_tmp {partition (dt='2017-09-09')} select * from orders;
                --一次遍历多次插入
                from orders
                insert overwrite table log1 select company_id,original where company_id = '10086'
                insert overwrite table log1 select company_id,original where company_id = '10000'
                [每次hive查询,都会将数据集整个遍历一遍,当查询结果会插入过个表中时,可以采用以上语法,将一次遍历写入过个表,以达到提高效率的目的。]
     
    6)复制表
                --复制表是将源表的结构和数据复制并创建为一个新表,复制过程中,可以对数据进行筛选,列可以进行删减
                create table order
                row format delimited fields terminated by ' ' stored as textfile
                as
                select leader_id,order_id,'2017-09-09' as bakdate from orders
                where create_time < '2017-09-09';
                [备份orders表中日期小于2017-09-09的内容到order中,选中了leader_id,order_id,添加了一个bakdate列]
     
    7)克隆表
                --只克隆源表的所有元数据,但是不复制源表的数据
                create table orders like order;
     
            8)备份表
                --将orders_log数据备份到HDFS上命名为 /user/hive/action_log.export;备份是备份表的元数据和数据内容
                export table orders_log partition (dt='2017-09-09') to '/user/hive/action_log.export';
     
            9) 还原表
                import table orders_log from '/user/hive/action_log.export';
  • 相关阅读:
    PHP面向对象之接口 (interface)
    防止继承和覆盖(PHP类)
    对PHP中类、继承、抽象的理解(个人总结)
    AngularJS directive 分页,待续...
    facade(外观)模式
    command (命令)模式
    javascript设计模式 富有表现力的javascript
    AngulatJS $directive compile
    directive talks to controller
    testing
  • 原文地址:https://www.cnblogs.com/dongtime/p/9963881.html
Copyright © 2020-2023  润新知