Hive数据加载与保存

使用 load 方式加载数据到 Hive 表中

  1. 加载本地文件到hive表
    1. load data local inpath '/opt/datas/emp.txt' into table defalult.emp;
    2. 分区表:load data local inpath 'local-file-full-path' into table tableName partition (part-column = part-value);
  2. 加载hdfs文件到hive表
    1. load data inpath '/opt/datas/emp.txt' into table defalult.emp;
  3. 加载数据覆盖表中已有的数据
    1. load data local inpath '/opt/datas/emp.txt' overwrite into table defalult.emp;
  4. CTAS 通过子查询创建表,此时表中已经加载数据

    CREATE TABLE emp_result 
    AS
    SELECT
      empno, ename, deptno, sal
    FROM(  
      SELECT
        empno, ename, deptno, sal,
        ROW_NUMBER() OVER (PARTITION BY deptno ORDER BY sal DESC) rank
      FROM
        db_emp.emp  
    ) t
    WHERE
      t.rank <= 3 ;
  5. 通过insert插入,通常结合子查询使用

    create table emp_insert like emp ;
    insert into table emp_insert select * from db_emp.emp ;
  6. 创建表时通过location指定加载

    1. 上传数据

      dfs -mkdir -p /user/beifeng/tb_emp;
      dfs -put /opt/datas/emp.txt /user/beifeng/tb_emp/;
    2. 创建加载

      create external table tb_emp(
      empno int,
      ename string,
      job string,
      mgr int,
      hiredate string,
      sal double,
      comm double,
      deptno int
      )
      row format delimited fields terminated by '\t'
      LOCATION  '/user/beifeng/tb_emp/';
  7. 加载数据到分区表中

    1. HDFS上创建目录和上传数据

      bin/hdfs dfs -mkdir /user/hive/warehouse/db_emp.db/emp_part/date=20161112
      
      bin/hdfs dfs -put /opt/datas/emp.txt /user/hive/warehouse/db_emp.db/emp_part/date=20161112

      但没有添加的date=20161112分区
      这里写图片描述
      因为在mysql中不存在
      这里写图片描述
      需要手动添加一步:alter table emp_part add partition(date = ‘20161112’) ;
      这时可以看到分区了
      这里写图片描述
      在mysql中也可以看到
      这里写图片描述

    2. 非分区表创建及加载数据
      bin/hdfs dfs -mkdir /user/hive/warehouse/db_emp.db/emp
      bin/hdfs dfs -put /opt/datas/emp.txt /user/hive/warehouse/db_emp.db/emp

保存 HiveQL 查询结果

  1. 通过insert……directory 导出,表数据导出到本地文件
    1. insert overwrite local directory '/opt/datas/hive_exp_emp' select * from emp;
      这里写图片描述
  2. 表数据导出到本地文件,并指定分隔符
    1. insert overwrite local directory '/opt/datas/hive_exp_emp2' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' COLLECTION ITEMS TERMINATED BY '\n' select * from emp;
      这里写图片描述
  3. 采用Hive命令导出
    1. bin/hive -e "select * from db_emp.emp;" > /opt/datas/exp_res.txt
  4. 数据导出到HDFS上
    1. insert overwrite directory '/user/beifeng/hive/hive_exp_emp' select * from emp;
  5. sqoop
    1. 将RDBMS表的数据与HADOOP(HDFS\HIVE\HBASE)数据之间的导入导出
  6. export
    1. EXPORT TABLE db_emp.emp TO '/user/beifeng/emp_export';
  7. import
    1. IMPORT TABLE db_emp.emp FROM '/user/beifeng/emp_export';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值