数据的导入
hive是使用SQL语句 处理HDFS上的结构化数据
1. 建表的时候指定location 结构化数据的位置文件夹 外部表
2. 可以将结构化数据直接put到表目录中 mv到指定的目录
tb_user
doit19.db / tb_user
3. 使用load语法
load data local inpath "/data/user3.csv" into table tb_user ; --底层就是put
load data inpath "/user5.csv" into table tb_user ; --底层move
-- 追加数据
load data inpath "/user3.csv" overwrite into table tb_user ; --底层move
4. insert
1) 不建议使用 小文件
insert into tb_user values(1,'fjj'),(2,'bgg') ; -- 生成小文件
insert into tb_user values(1,'fjj'),(2,'bgg') ; -- 生成小文件
2) 保留结果数据到表中
格式 : insert into tb_user
select ... from ... ;栗子 : insert into tb_user
select id , name from tb_log ;
-- 注意 表的机构差查询的结果字段 个数 数据类型 属性一致
3) 新建表 全量数据
栗子 : create table tb_log_res
as
select id , name from tb_log ;6. import导入指定export的数据
create table tb_log2 like tb_log ; -- 根据已有的表结构建表
export table tb_log to
'/user/hive/warehouse/export/tb_log';
import table tb_log2 from
'/user/hive/warehouse/export/tb_log';
+-------------+---------------+--------------+-----------------+
| tb_log2.id | tb_log2.name | tb_log2.age | tb_log2.gender |
+-------------+---------------+--------------+-----------------+
| 5 | zss | 23 | M |
| 1 | zbz | 53 | M |
| 2 | ycy | 33 | F |
| 3 | gdg | 63 | M |
| 4 | lyf | 43 | F |
+-------------+---------------+--------------+-----------------+
数据的导出
1 export tb_name to HDFS_PATH --导出表内数据到hdfs路径
2 如果数据是普通的文本数据 在shell客户端使用get下载数据
hdfs dfs -get /tb_dir/file
hive> dfs -get /文件
3 1) hive -e "use default ; select * from tb_log;" -- 不开启终端 执行SQL语句
Time taken: 0.898 seconds
OK
5 zss 23 M
1 zbz 53 M
2 ycy 33 F
3 gdg 63 M
4 lyf 43 F
hive -e "sql" >> log.tbl
[root@linux01 ~]# cat log.tbl
5 zss 23 M
1 zbz 53 M
2 ycy 33 F
3 gdg 63 M
4 lyf 43 F
[root@linux01 ~]#
2) hive -f a.sql
[root@linux01 ~]# cat user.res
3 lyh
4 lyh
5 lyf
6 wb
11 xingge
12 benge
13 wenge
14 gangge
15 xiaokang
4 sqoop dataX 数据迁移工具5 insert
insert overwrite local directory '/user_data/'
select * from tb_user; -- 将查询的结构数据保存在本地的目录中insert overwrite directory '/user_data/'
select * from tb_user;-- 将查询的结构数据保存在HDFS目录中6 insert into res_table
select count(1) , avg(rate) from tb_name2