Hive数据加载与保存

来源:互联网 发布:seo外包北京华网 编辑:程序博客网 时间:2024/06/05 04:29

使用 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 ASSELECT  empno, ename, deptno, salFROM(    SELECT    empno, ename, deptno, sal,    ROW_NUMBER() OVER (PARTITION BY deptno ORDER BY sal DESC) rank  FROM    db_emp.emp  ) tWHERE  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=20161112bin/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/empbin/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';
0 0
原创粉丝点击