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参数了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现