您的位置:首页 > 运维架构

sqoop命令的使用

2017-03-22 13:33 260 查看
Sqoop(发音:skup)是一款开源的数据迁移工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,

可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

底层就是MapReduce,用来做数据迁移。数据迁移很快,通过网络进行集群的操作。

将数据库hive中的TBLS表导入HDFS中

./bin/sqoop import --connect jdbc:mysql://192.168.1.120:3306/hive --username hive --password hive --table TBLS

将数据库hive中的TBLS表导入HDFS中的/sqoop/td1中 启动两个map任务

./bin/sqoop import --connect jdbc:mysql://192.168.1.120:3306/hive --username hive --password hive --table TBLS --target-dir /sqoop/td1

-m 2

指定列与列的分隔符为'\t',默认问逗号(,);指定要导出的列

./bin/sqoop import --connect jdbc:mysql://192.168.1.120:3306/hive --username hive --password hive --table TBLS --target-dir /sqoop/td1

-m 2 --fields-terminated-by '\t' --columns "CREATE_TIME,OWNER,TBL_NAME"

加where条件

./bin/sqoop import --connect jdbc:mysql://192.168.1.120:3306/hive --username hive --password hive --table TBLS --target-dir /sqoop/td1

-m 1 --fields-terminated-by '\t' --columns "CREATE_TIME,OWNER,TBL_NAME" --where 'SD_ID=2'

直接写sql语句

./bin/sqoop import --connect jdbc:mysql://192.168.1.120:3306/hive --username hive --password hive --query 'select * from TBLS'

--target-dir /sqoop/td4 -m 1 --fields-terminated-by '\t'

如果用两个map会出错,因为map不知道自己读多少数据。所以加个--split-by

./bin/sqoop import --connect jdbc:mysql://192.168.1.120:3306/hive --username hive --password hive --query 'select * from TBLS'

--target-dir /sqoop/td4 -m 2 --fields-terminated-by '\t' --split-by TBLS.OWNER

//将HDFS中的数据导入到mysql数据库中。命令太长,可以用\换行

./bin/sqoop export --connect jdbc:mysql://192.168.1.120:3306/hive --username hive --password hive --export-dir '/sqoop/td3' --table td_o1o6 -m 1\

--fields-terminated-by '\t'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sqoop