sqoop数据导入的常见问题及小结
来源:互联网 发布:工作计划制定软件 编辑:程序博客网 时间:2024/05/16 11:47
本文首先是讲述sqoop的如何进行数据的导入和导出及其注意点,然后列举了sqoop和mysql在数据导入导出过程中的一些常见错误。
sqoop安装:安装在一台CentOS节点上就可以了。
1.上传sqoop
2.安装和配置
在添加sqoop到环境变量
将数据库连接驱动拷贝到$SQOOP_HOME/lib里
3.使用
第一类:数据库中的数据导入到HDFS上
sqoop import --connect jdbc:mysql://192.168.1.10:3306/itcast --username root --password 123 --table trade_detail --columns 'id, account, income, expenses'
指定输出路径、指定数据分隔符
sqoop import --connect jdbc:mysql://192.168.1.10:3306/itcast --username root --password 123 --table trade_detail --target-dir '/sqoop/td' --fields-terminated-by '\t'
注:--target-dir 指定导入的hdfs目录。
sqoop import --connect jdbc:mysql://192.168.1.10:3306/itcast --username root --password 123 --table trade_detail --target-dir '/sqoop/td1' --fields-terminated-by '\t' -m 2
注:指定Map数量 -m
增加where条件, 注意:条件必须用引号引起来
sqoop import --connect jdbc:mysql://192.168.1.10:3306/itcast --username root --password 123 --table trade_detail --where 'id>3' --target-dir '/sqoop/td2'
增加query语句(使用 \ 将语句换行)
sqoop import --connect jdbc:mysql://192.168.1.10:3306/itcast --username root --password 123 \
--query 'SELECT * FROM trade_detail where id > 2 AND $CONDITIONS' --split-by trade_detail.id --target-dir '/sqoop/td3'
注意:如果使用--query这个命令的时候,需要注意的是where后面的参数,AND $CONDITIONS这个参数必须加上
而且存在单引号与双引号的区别,如果--query后面使用的是双引号,那么需要在$CONDITIONS前加上\即\$CONDITIONS
如果设置map数量为1个时即-m 1,不用加上--split-by ${tablename.column},否则需要加上。
如果没有id>2的条件,去掉“and”就可以。例:./sqoop import --connect jdbc:mysql://192.168.2.1:3306/test --username root --password 123456 --query 'select * from user where $CONDITIONS' -m 2 --target-dir /sqoop/td5 --split-by 'user.userId'
第二类:将HDFS上的数据导出到数据库中(不要忘记指定分隔符)
sqoop export --connect jdbc:mysql://192.168.8.120:3306/itcast --username root --password 123 --export-dir '/td3' --table td_bak -m 1 --fields-terminated-by ','
4.配置mysql远程连接( 授权法)
在MySQL Server端:
执行mysql 命令进入mysql 命令模式(mysql -u root -p ):
mysql> use mysql;
#这句话的意思 ,允许IP192.168.2.113(如果是%表示任何IP)的电脑 用root帐户 和密码(123456)来访问这个MySQL Server
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;mysql>FLUSH PRIVILEGES
格式:
grant 权限 on 数据库名.表名 to 用户@登录主机 identified by "用户密码" with grant option;
@ 后面是访问mysql的客户端ip地址(或是 主机名) % 代表任意的客户端,如果填写 localhost 为
本地访问(那此用户就不能远程访问该mysql数据库了)。
问题:1.如果mysql数据库是安装在windows上,可能会出现这样的报错:
org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago.
这一般是因为你的windows防火墙开着的原因。关闭它就行。
2。如果你的mysql安装在Centos上,可能会报这样的错(如果你配置了mysql远程连接,就不会报这种错):
ERROR manager.SqlManager: Error executing statement: java.sql.SQLException: null, message from server: "Host '192.168.2.113' is not allowed to connect to this MySQL server"java.sql.SQLException: null, message from server: "Host '192.168.2.113' is not allowed to connect to this MySQL server
解决办法(改表法):
mysql -u root -p mysql>use mysql; mysql>select 'host' from user where user='root'; mysql>update user set host = '%' where user ='root'; (注:如果在执行update user set host = '%' where user ='root';出现错误提示ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY' 则只需执行 flush privileges 即可)
mysql>flush privileges; mysql>select 'host' from user where user='root'; 第一句是以权限用户root登录 第二句:选择mysql库 第三句:查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称) 第四句:修改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址 第五句:刷新MySQL的系统权限相关表 第六句:再重新查看user表时,有修改。。 重起mysql服务即可完成。3.如果出现这种报错:ERROR tool.ImportTool: Error during import: No primary key could be found for table creater_user.popt_cas_redirect_his. Please specify one with --split-by or perform a sequential import with '-m 1'.
这是因为表中没有申明主键。可参考博客:http://blog.csdn.net/keda8997110/article/details/85180100 0
- sqoop数据导入的常见问题及小结
- sqoop的数据导入导出
- Sqoop安装及MySql数据导入HBase
- Sqoop安装配置及数据导入导出
- 使用Sqoop进行数据的导入
- sqoop并行导入数据
- Sqoop 数据导入问题
- sqoop数据导入导出
- Sqoop数据增量导入
- SQOOP数据导入
- SQOOP 数据导入
- Sqoop导入数据
- Sqoop数据导入导出
- sqoop数据导入
- (大数据之sqoop)sqoop的安装及常用操作
- Sqoop数据迁移,工作机制,sqoop安装(配置),Sqoop的数据导入,导入表数据到HDFS,导入关系表到HIVE,导入到HDFS指定目录,导入表数据子集,按需导入,增量导入,sqoop数据导出
- CityEngine数据导入及规则使用常见问题
- Hive数据导入、sqoop数据导入导出
- const用法之常对象,常成员函数,常引用
- lintcode 68 二叉树的后序遍历
- [2017.4.22]IMWEB前端小白训练营日记(八)
- 软件质量管理
- 《手把手教你学C语言》学习笔记(5)---计算机的存储和访问
- sqoop数据导入的常见问题及小结
- Gartner:2017年十大科技趋势盘点
- 在uboot的控制台中利用tftp将镜像从虚拟机中下载到开发板
- 3DMAX
- 谢谢初学编程时受过的嘲讽,让我成长的那么迅速。
- HTML文档结构
- RPM方式安装MySQL5.6
- 投影矩阵的推导(Deriving Projection Matrices)
- 克隆二叉树