使用 load 方式加载数据到 Hive 表中
- 加载本地文件到hive表
load data local inpath '/opt/datas/emp.txt' into table defalult.emp;
- 分区表:
load data local inpath 'local-file-full-path' into table tableName partition (part-column = part-value);
- 加载hdfs文件到hive表
load data inpath '/opt/datas/emp.txt' into table defalult.emp;
- 加载数据覆盖表中已有的数据
load data local inpath '/opt/datas/emp.txt' overwrite into table defalult.emp;
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 ;
通过insert插入,通常结合子查询使用
create table emp_insert like emp ; insert into table emp_insert select * from db_emp.emp ;
创建表时通过location指定加载
上传数据
dfs -mkdir -p /user/beifeng/tb_emp; dfs -put /opt/datas/emp.txt /user/beifeng/tb_emp/;
创建加载
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/';
加载数据到分区表中
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中也可以看到
- 非分区表创建及加载数据
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 查询结果
- 通过insert……directory 导出,表数据导出到本地文件
insert overwrite local directory '/opt/datas/hive_exp_emp' select * from emp;
- 表数据导出到本地文件,并指定分隔符
insert overwrite local directory '/opt/datas/hive_exp_emp2' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' COLLECTION ITEMS TERMINATED BY '\n' select * from emp;
- 采用Hive命令导出
bin/hive -e "select * from db_emp.emp;" > /opt/datas/exp_res.txt
- 数据导出到HDFS上
insert overwrite directory '/user/beifeng/hive/hive_exp_emp' select * from emp;
- sqoop
- 将RDBMS表的数据与HADOOP(HDFS\HIVE\HBASE)数据之间的导入导出
- export
EXPORT TABLE db_emp.emp TO '/user/beifeng/emp_export';
- import
IMPORT TABLE db_emp.emp FROM '/user/beifeng/emp_export';