您的位置:首页 > 其它

hive 数据加载的几种方式 和数据导出方式

2018-02-08 00:44 483 查看
=====  hive 数据加载方式

LOAD DATA [LOCAL] INPATH 'filepath' 
[OVERWRITE] INTO TABLE tablename 
[PARTITION (partcol1=val1, partcol2=val2 ...)]

load data [local] inpath 'filepath' [overwrite] into table tablename [partition (partcol1=val1,...)];

* 原始文件存储的位置
* 本地 local
* hdfs
* 对表的数据是否覆盖
* 覆盖 overwrite
* 追加
* 分区表加载,特殊性
partition (partcol1=val1,...)

1)加载本地文件到hive表
load data local inpath '/home/hadoop/data/emp.txt' into table emp ;
2)加载hdfs文件到hive中
load data inpath '/data/emp.txt' overwrite into table emp1 ;
3)加载数据覆盖表中已有的数据
load data inpath '/data/emp.txt'   into table emp ;
4)创建表是通过insert加载
create table emp_tmp like emp ;
insert into table emp_tmp select * from emp ;
5)创建表的时候通过location指定加载(参考外部表)

===  hive 数据导出方式=== 

1、insert方式
格式:insert overwrite directory 'path' select sql;
本地:
示例:insert overwrite local directory '/home/hadoop/data/emp_insert' select * from emp;

4096 Mar 19 15:08 emp_in01
4096 Mar 19 15:09 emp_in01

指定分隔符:

insert overwrite local directory '/home/hadoop/data/emp_insert' row format delimited fields terminated by '\t' select * from emp;

hive -e "select * from emp ;" > /home/hadoop/data/exp_res.txt

HDFS:
insert overwrite directory '/data/emp_insert' select * from emp;

2、bin/hdfs dfs -get从HDFS获取数据到本地

3 sqoop以及spark SQL 
HDFS <- sqoop  -> RDBMS

export
export table tb_name to 'HDFS_path'
hive (default)> export table emp to '/data/emp_exp';

hive (default)> export table dept to '/data/emp_dept ;

hive (default)> dfs -ls  /data/emp_exp;
Found 2 items
-rwxr-xr-x   1 hadoop supergroup       1540 2018-02-08 00:38 /data/emp_exp/_metadata
drwxr-xr-x   - hadoop supergroup          0 2018-02-08 00:38 /data/emp_exp/data
hive (default)> dfs -ls  /data/dept_exp;
Found 2 items
-rwxr-xr-x   1 hadoop supergroup       1274 2018-02-08 00:39 /data/dept_exp/_metadata
drwxr-xr-x   - hadoop supergroup          0 2018-02-08 00:39 /data/dept_exp/data

import
export table tb_name from 'HDFS_path'
 create table emp_tmp2 like emp;

hive (default)> import table emp_tmp2 from '/data/emp_exp';
Copying data from hdfs://node1.oracle.com:8020/data/emp_exp/data
Copying file: hdfs://node1.oracle.com:8020/data/emp_exp/data/emp.txt
Loading data to table default.emp_tmp2
OK
Time taken: 14.546 seconds
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: