Sqoop的导入和导出操作

博客主要介绍了Sqoop的导入操作和导出操作,Sqoop是信息技术领域用于数据传输的工具,其导入和导出功能在数据处理中较为重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sqoop导出操作

HDFS上的数据/user/root/empdata
001,15012454745,zhangsan@163.com
002,13512454746,lisi@wolfcode.cn
003,15812454747,wangwu@qq.com
1.修改远程登录mysql的配置
use mysql;
select host from user where user='root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
flush privileges;
2.在数据库创建如下表:
create table `emp_from_hdfs` (
`id` int (11),
`phno` varchar (60),
`email` varchar (90)
);
3.在导入导出的时候尽量使用IP(不要用域名)来代表mysql的节点位置。
sqoop export \
--connect jdbc:mysql://hdp01:3306/userdb \
--username root \
--password root \
--table emp_from_hdfs \
--export-dir /user/root/empdata \
--m 1

sqoop导入操作

##默认导出的数据到/user/root/emp
## --m 1 表示切片数量为1,也就是只是用了一个maptask
##默认导入的数据是导入到 /user/root/xx表/part-m-00000
sqoop import \
--connect jdbc:mysql://hdp01:3306/userdb \
--username root \
--password root \
--table emp \
--m 1
## target-dir指定导入的数据存放到hdfs的某个位置
sqoop import \
--connect jdbc:mysql://hdp01:3306/userdb \
--username root \
--password root \
--table emp \
--target-dir /myemp \
--m 1
##当maptask为2时,需要指定切片计算的key,这里用split-by代替。
sqoop import \
--connect jdbc:mysql://hdp01:3306/userdb \
--username root \
--password root \
--table emp \
--target-dir /myemp2 \
--split-by id \
--m 2

## mysql中的数据先存放到hdfs的/user/root/myemp_conn目录下,然后导入到hive数据库中;接着删除hdfs
目录下临时文件
sqoop import \
--connect jdbc:mysql://hdp01:3306/userdb \
--username root \
--password root \
--table emp_conn \
--target-dir /myemp_conn \
--hive-import \
--m 1
##hive-table指定导入到哪张表中
sqoop import \
--connect jdbc:mysql://hdp01:3306/userdb \
--username root \
--password root \
--table emp_conn \
--target-dir /user/root/myemp_conn \
--hive-import \
--hive-table new_emp_conn \
--m 1

查询条件子集:
##where指定查询的条件
sqoop import \
--connect jdbc:mysql://hdp01:3306/userdb \
--username root \
--password root \
--where "city='sec-bad'" \
--table emp_add \
--m 1
##语法踩坑
##1. 必须有target-dir属性
##2. query的属性值必须用''括起来
##3. WHERE 必须大写,并且必须携带 and $CONDITIONS
sqoop import \
--connect jdbc:mysql://hdp01:3306/userdb \
--username root \
--password root \
--query 'select id,hno from emp_add WHERE id>1203 and $CONDITIONS ' \
--target-dir "/emp_subcol" \
--m 1

增量导入是仅导入新添加的表中的行的技术。它需要添加‘incremental’, ‘check-column’, 和 ‘last-value’选项来执行
增量导入。如下示例:
sqoop import \
--connect jdbc:mysql://hdp01:3306/userdb \
--username root \
--password root \
--table emp \
--m 1 \
--target-dir /root123 \
--incremental append \
--check-column id \
--last-value 1203
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值