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
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