sqoop工具数据迁移

sqoop数据迁移工具

Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

我的环境

  • centos6.5
  • hadoop2.4
  • sqoop-1.4.4.bin__hadoop-2.0.4-alpha.tar.gz 下载地址
  • jdk1.7
  • mysql

下面为大家介绍mysql的数据导入到hdfs

sqoop是一个工具是可以单机运行的,只需要启动hdfs、yarn(sqoop底层是执行mapreduce程序,所以要启动yarn)和mysql,安装上sqoop就可以实现了。

执行下面命令将mysql中的数据导入到hdfs
 sqoop import --connect jdbc:mysql://192.168.1.112:3306/ecshop --username root --password root --table ecs_account_log      #--connect [mysql连接地址和database]  --username [用户名] --password [密码]  --table [表名] 

运行时控制台会打印出我们熟悉的mapreduce程序执行过程,执行后可以到hdfs的文件管理界面看到这样的目录

这里写图片描述
这里写图片描述

/user/你的登陆用户名/表明

以上是比较简单的语句,我们还可以自定义很多东西实现我们的需求

  • 指定输出路径和输出的columns等等
./sqoop import --connect jdbc:mysql://192.168.1.112:3306/ecshop --username root --password root --table ecs_account_log --target-dir /sqoop/td4 -m 2 --fields-terminated-by '\t' --columns "log_id,user_id,user_money"    --target-dir [输出路径]   -m [map任务个数] --fields-terminated-by [以什么分割]    #--columns [获取哪些列]
  • 有条件的执行where
./sqoop import --connect jdbc:mysql://192.168.1.112:3306/ecshop --username root --password root --table ecs_account_log --target-dir /sqoop/td5 -m 2 --fields-terminated-by '\t' --where 'log_id > 2'     #--where [条件]
  • 写复杂sql语句导入到hdfs
./sqoop import --connect jdbc:mysql://192.168.1.112:3306/ecshop --username root --password root --query 'select * from ecs_account_log where log_id > 5  and $CONDITIONS ' --split-by log_id  --target-dir /sqoop/td6 -m 2    #--query [自定义查询语句] --split-by [指定分隔参数,通常使用主键id] 注意当你使用--query时 -m 不为1 map任务不为1时就要指定--split-by参数了

mysql数据导入到hdfs就介绍到这里,希望能让初学者有些收获。

posted on 2016-11-16 16:02  愤怒的苹果ext  阅读(24)  评论(0编辑  收藏  举报

导航