sqoop配置使用

sqoop数据迁移工具
sqoop是apache一款Hadoop和关系数据库服务器之间数据传输工具
导入数据:MySQL,Oracle导入数据库到Hadoop的HDFS、HIVE、HBASE等数据存储系统
导出数据:从Hadoop的文件系统中导出数据到关系数据库
sqoop的原理其实就是将导出导入命令转换成mapreduce程序来执行,sqoop在接收到命令后,都要生成mapreduce程序


sqoop安装
安装sqoop的前提必须具备java和hadoop的环境
1、修改配置文件 cd /usr/local/sqoop-1.4.6/conf
--mv sqoop-env-template.sh sqoop-env.sh
配置hadoop-common-home=hadoop的home变量
配置hadoop-mapred-home=hadoop的home变量
配置hive-home=hive的home变量
2、加入mysql的jdbc驱动包 进入sqoop的lib包下面上传
mysql-connector-java-5.1.32.jar
3、启动sqoop 进入sqoop的bin目录下面
./sqoop-version
4、如果使用oracle或其他连接数据库包,就需要使用其他驱动包放到lib下面

sqoop的导入数据(执行完成后会在该目录下面生成java文件)
1、安装sqoop的环境变量
2、使用命令(默认不能生成重复的文件)
sqoop import --connect jdbc:mysql://localhost:3306/库名 --username root --password root --table 表名 --m 1


#通过id切割,并启动2个maptask,必须指点切分数据(可以使用\的格式连接命令)
sqoop import \
--connect jdbc:mysql://localhost:3306/kai \
--username root \
--password root \
--split-by id \
--table user --m 2


#将数据导入到指定的目录下面
sqoop import \
--connect jdbc:mysql://localhost:3306/kai \
--username root \
--password root \
--split-by id \
--target-dir /queryresult \
--table user --m 1


--sqoop import --connect jdbc:mysql://localhost:3306/kai --username root --password root --target-dir /queryresult --table user --m 1


#通过命令导入到hive表里面
sqoop import \
--connect jdbc:mysql://localhost:3306/kai \
--username root \
--password root \
--target-dir /queryresult \
--table user \
--hive-import --m 1


--sqoop import --connect jdbc:mysql://localhost:3306/kai --username root --password root --target-dir /queryresult --table user --hive-import --m 1


#通过命令导入到hive表里面,但是没指定hdf目录
sqoop import \
--connect jdbc:mysql://localhost:3306/kai \
--username root \
--password root \
--target-dir /queryresult \
--table user \
--hive-import --m 1


--sqoop import --connect jdbc:mysql://localhost:3306/kai --username root --password root --table user --hive-import --m 1


#通过命令导入到hive指定目录下的表里面(导入到hive里面的时候都需要使用前缀建表 例如 t_user),使用这个命令把数据导入到hive中去但是会现在hdf生成一个零时目录文件,导入完成后会删除hdf文件
sqoop import \
--connect jdbc:mysql://localhost:3306/kai \
--username root \
--password root \
--target-dir /queryresult \
--table user \
--hive-table user_t \
--hive-import --m 1


--sqoop import --connect jdbc:mysql://localhost:3306/kai --username root --password root --table user --hive-table t_user --hive-import --m 1


#根据 where 数据条件进行导入
sqoop import \
--connect jdbc:mysql://localhost:3306/kai \
--username root \
--password root \
--where "字段条件='数据条件'" \
--table user \
--target-dir /queryresults \
--hive-table t_user_t \
--hive-import --m 1


#根据 query 根据需求导入,fields-terminated-by指明上传到hdfs的目录上每一列根据什么条件分隔
sqoop import \
--connect jdbc:mysql://localhost:3306/kai \
--username root \
--password root \
--target-dir /queryresults \
--query 'sql语句' \
--split-by id \
--fields-terminated-by '\t' \
--m 1


#incremental增量导入,check-column指明要检查那一列,last-value表名上一列的值是1203(这个值是模糊查询的)
sqoop import \
--connect jdbc:mysql://localhost:3306/kai \
--username root \
--password root \
--table user --m 1 \
--target-dir /queryresults \
--incremental append \
--check-column id \
--last-value 1203


sqoop数据导出
将数据从hdfs导出到rebms数据库中,导出钱,目标表必须存在于目标数据库中
默认操作是将文件中的数据使用insert语句插入到表中
更新模式下,是生成update语句更新数据


sqoop export \
--connect jdbc:mysql://localhost:3306/kai \
--username root \
--password root \
--table t_user \
--export-dir /user/root/user
--m 1 




sqoop提交作业(import前面必须要有空格)
sqoop job --create myjob \
-- import --connect jdbc:mysql://localhost:3306/kai \
--username root \
--password root \
--table t_user --m 1




--验证作业作业
sqoop job --list


--查看作业(可以在里面设置密码)
sqoop job --show myjob


--执行作业
sqoop job --exec myjob


--删除job
sqoop job --delect myjob


--生成java定制代码
sqoop codegen \
--import --connect jdbc:mysql://localhost:3306/kai \
--username root \
--table t_user
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值