Sqoop知识点(二) --Sqoop导入导出

1.Sqoop应用场合

在这里插入图片描述
其中所说的导入导出,其实不仅仅是HDFS,指的是Hadoop生态圈,可以从MySQL导入到Hive、HBase等框架中,自己之前理解的太过狭窄

2.Sqoop应用

cd app/sqoop
sqoop help 
sqoop command [args]                     #sqoop的使用

使用sqoop help    #就可以看见command中都有哪些
使用sqoop help command     #就可以看见command里面的参数
如:sqoop help 
      sqoop help export        #查看export这个命令的参数的使用

2.1 查看数据库(list-databases)

sqoop list-databases \
--connect jdbc:mysql://data001:3306 \     #hostname(data001)
--password 000000 \     #登录数据库mysql的密码
--username root \       ##登录数据库mysql   # msyql -uroot -p000000
如:
sqoop list-databases \
--connect jdbc:mysql://data001:3306 \
--password 000000 \
--username root

2.2 查看表信息(list-tables)

sqoop list-tables \   #list-tables 
--connect jdbc:mysql://data001:3306/sqoop \    #相对于查看数据库信息, 后面增加了表所在的数据库(sqoop数据库)
--password 000000 \
--username root \

3.Sqoop导入(import)

备注:这里所说的导入导出都是针对于Hadoop来讲。
导入:指将MySQL导入到HDFS中
导出:指将HDFS数据导出到MySQL中

1.全部导入

sqoop import \
--connect jdbc:mysql://data001:3306/sqoop \
--password 000000 \
--username root \
--table sqoop1 \    #表名
--mapreduce-job-name FromMySQL \    #修改上传到8088web界面上的iar名称为FromSQL,默认的名称为表名.jar
-m 1             #指定MapReduce数量
如:
sqoop import \
--connect jdbc:mysql://data001:3306/sqoop \
--password 000000 \
--username root \
--table sqoop1 \
--target-dir /user/hadoop/sqoop/ss \
-m 1

=======
备注:
1.将MySQL中sqoop数据库中的sqoop1表导入到HDFS中
2.默认导入在/user/hostname目录下: hdfs dfs -ls==hdfs dfs -ls /user/hadoop
3.MR:reducer个数决定了最终输出文件的个数,默认是4.-m x进行设置
          没有reducer则有Map决定
4.--mapreduce-job-name FromMySQL  设置在HDFS中的名称为FromMySQL
5.delect-target-dir   #这个是如果第一次导入到HDFS没有问题,如果第二次导入就会保存,这个设置是目标目录删除掉

2.部分导入

sqoop import \
--connect jdbc:mysql://data001:3306/sqoop \
--password 000000 \
--username root \
--table sqoop1 \
--targer-dir /user/hadoop/A \   #指定输出路径
--columns "SQL语句中的字段" \   #指定导入字段
--fileds-terminated-by '\t' \    #指定分隔符
--null-string '' --null-non-string '0' \  #将如果null是字符串类型的,不输出 ,如果null不是字符串类型的就用0代替
--where 'SAL>2000' \
-m 1
如:
sqoop import \
--connect jdbc:mysql://data001:3306/sqoop \
--password 000000 \
--username root \
--table sqoop1 \
--target-dir /user/hadoop/A \
--columns empno,job \
-m 1

3.SQL语句导入

sqoop import \
--connect jdbc:mysql://data001:3306/sqoop \
--password 000000 \
--username root \
--table sqoop1 \
--targer-dir /user/hadoop/A \   #指定输出路径
--fileds-terminated-by '\t' \    #指定分隔符
--null-string '' --null-non-string '0' \  #将如果null是字符串类型的,不输出 ,如果null不是字符串类型的就用0代替
--query 'select * from 表名 where 'SAL>2000''\
-m 1

#这个会报错,1.然后在sql语句中进行修改select * from EMP where SAL>2000 and $CONDITIONS
	     2.'select * from EMP where SAL>2000 and $CONDITIONS' == "select * from EMP where SAL>2000 and \$CONDITIONS"
		双引号里面需要在$CONDITIONS前面加一个转义符 \
修改后:
sqoop import \
--connect jdbc:mysql://data001:3306/sqoop \
--password 000000 \
--username root \
--target-dir /user/hadoop/AA \
--query 'select * from sqoop1 where sal>2000 and $CONDITIONS' \
-m 1

4.Sqoop导出(export)

1.在mysql中创建表
create table sqoop1 (
empno int,
ename char,
job char,
mgr int,
hiredate char,
sal double,
comm double,
deptno int
) ;
2.导入数据
sqoop export \
----connect jdbc:mysql://data001:3306/sqoop \
--password 000000 \
--username root \
--table sqoop1 \         #导出到sqoop1表中
--export-dir filepath    #需要导出的HDFS的路径
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值