1、数据导入到hive
hive包括以下四种数据导入方式:
从本地文件系统中导入数据到Hive表;
从HDFS上导入数据到Hive表;
在创建表时从别的表中查询出相应的记录并插入到所创建的表中;
从别的表中查询出相应的数据并导入到Hive表中。
1.1 本地文件导入到Hive表
LOAD DATA LOCAL INPATH
'/home/hadoop/sourceA.txt'
INTO TABLE table1 PARTITION(create_time='2020-11-20');
1.2 Hive表导入到Hive表
INSERT INTO TABLE table1
SELECT col1, col2, col3
FROM table2;
INSERT OVERWRITE TABLE table1
SELECT col1, col2, col3
FROM table2;
INSERT INTO 与 INSERT OVERWRITE 都可以向hive表中插入数据,但是INSERT INTO直接追加到表中数据的尾部,而INSERT OVERWRITE会重写数据,即先进行删除,再写入。如果存在分区的情况,INSERT OVERWRITE会只重写当前分区数据。
1.3 HDFS文件导入到Hive表
LOAD DATA INPATH '/home/hadoop/sourceA.txt'
INTO TABLE table1 PARTITION(create_time='2015-07-08');
1.4 创建表的过程中从其他表导入
create table table1 as select name,age,sex from table2;
2、hive表数据导出
2.1 导出到本地文件系统
INSERT OVERWRITE LOCAL DIRECTORY
'/home/hadoop/output' --本地目录
ROW FORMAT DELIMITED FIELDS TERMINATED by ','
select * from table1;
2.2 导出到HDFS
INSERT OVERWRITE DIRECTORY
'/home/hadoop/output' --HDFS目录
select * from table1;
2.3 使用hive的-e和-f参数来导出数据
./hive -e
"select * from testA" >> /home/hadoop/output/table1.txt
./hive -f
/home/hadoop/output/sql.sql >> /home/hadoop/output/table2.txt