本文主要是介绍数据迁移sqoop学习心得,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
sqoop是Apache基金会下的数据迁移工具。主要功能是能将数据库中的数据导入到hdfs中,同时也能使hdfs中的数据导出至数据库中。
sqoop的安装只需在hadoop集群中的任意一台机器上即可。因为sqoop自动配置了搜寻NameNode和ResourceManage的功能,运行时能访问到hadoop的core-site.xml,hdfs-site.xml,yarn-site.xml等配置文件。
1.上传sqoop
2.安装和配置
在添加sqoop到环境变量
将数据库连接驱动拷贝到$SQOOP_HOME/lib里
3.使用
第一类:数据库中的数据导入到HDFS上(以博主的ip mysql的3308端口 数据库名:feitian 表名:goodinfo 为例)
sqoop import --connect jdbc:mysql://192.168.56.1:3308/feitian --username root --password 123 --table goodinfo //基础结构
1.--target-dir '/sqoop/test' //指明hdfs的路径。 默认是/user/root目录。
2. -m 2 //指明启动两个Map。
3.--fields-terminated-by '\t' //指明导入到hdfs中的数据表中每列以'\t'的分隔。
4.--columns ’id,account,income' // 指明数据库表中某些列导入hdfs。
5.--where 'id>2 and id <=9' //添加where 条件语句。
6.sqoop import --connect jdbc:mysql://192.168.56.1:3308/feitian --username root --password 123 --query 'select * from 表一 where ... and $CONDITIONS'
//多表查询。query语句后必须包含$CONDITIONS。
//如果在query中指明-m>1 必须写明分割字段 '--split-by 表.id' Map将按照id来分割数据(每个map分得多少数据)。
第二类:HDFS中的数据导入到数据库表中
注意:数据库表中必须和HDFS中数据相同的数据类型。
sqoop export --connect jdbc:mysql://192.168.56.1:3308/feitian --username root --password 123 --export-dir '/sqoop/test/' --table 表 -m 1
4.可能错误
1.电脑防火墙未关闭。
2.数据库必须以权限root登录。
3.给root用户添加远程访问数据库权限(默认只能访问localhost。不能通过远程ip访问)
方法一:GRANT ALL PRIVILEGES ON itcast.* TO 'root'@'192.168.56.1’ IDENTIFIED BY '123' WITH GRANT OPTION;
FLUSH PRIVILEGES;
方法二:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
FLUSH PRIVILEGES
这篇关于数据迁移sqoop学习心得的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!