Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、oracle...)间进行数据的传递...
1 导入导出数据库
1)列出mysql数据库中的所有数据库命令
# sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root --password 123456
2)连接mysql并列出数据库中的表命令
# sqoop list-tables --connect jdbc:mysql://localhost:3306/test --username root --password 123456
命令中的test为mysql数据库中的test数据库名称 username password分别为mysql数据库的用户密码
3)将关系型数据的表结构复制到hive中
sqoop create-hive-table --connect jdbc:mysql://localhost:3306/test --table username --username root --password 123456 --hive-table test
其中 --table username为mysql中的数据库test中的表 --hive-table test 为hive中新建的表名称
4)从关系数据库导入文件到hive中
sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password mysql-password --table t1 --hive-import
5)将hive中的表数据导入到mysql中
./sqoop export --connect jdbc:mysql://localhost:3306/test --username root --password admin --table uv_info --export-dir /user/hive/warehouse/uv/dt=2011-08-03
6)上传数据到hadoop中
sqoop import --connect jdbc:mysql://10.2.136.24:3306/test --username root --table aa -m 1
-----------------------------------------------------------
运行环境 centos 5.6 hadoop hive
sqoop是让hadoop技术支持的clouder公司开发的一个在关系数据库和hdfs,hive之间数据导入导出的一个工具
在使用过程中可能遇到的问题:
- sqoop依赖zookeeper,所以必须配置ZOOKEEPER_HOME到环境变量中。
- sqoop-1.2.0-CDH3B4依赖hadoop-core-0.20.2-CDH3B4.jar,所以你需要下载hadoop-0.20.2-CDH3B4.tar.gz,解压缩后将hadoop-0.20.2-CDH3B4/hadoop-core-0.20.2-CDH3B4.jar复制到sqoop-1.2.0-CDH3B4/lib中。
1 首先安装sqoop,如果你使用的是clouder分发版的话就非常简单
# yum install sqoop
如果用官方版本的话
# cd /etc/yum.repos.d
# wget http://archive.cloudera.com/redhat/cdh/cloudera-cdh3.repo
# yum -y install sqoop
sqoop就会安装完成
2 使用sqoop
首先将mysql-connector-java-5.1.16-bin.jar文件复制到/usr/lib/sqoop/lib文件夹下
3 导入导出数据库
1)列出mysql数据库中的所有数据库命令
# sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root --password 123456
2)连接mysql并列出数据库中的表命令
# sqoop list-tables --connect jdbc:mysql://localhost:3306/test --username root --password 123456
命令中的test为mysql数据库中的test数据库名称 username password分别为mysql数据库的用户密码
3)将关系型数据的表结构复制到hive中
sqoop create-hive-table --connect jdbc:mysql://localhost:3306/test --table username --username root --password 123456 --hive-table test
其中 --table username为mysql中的数据库test中的表 --hive-table test 为hive中新建的表名称
4)从关系数据库导入文件到hive中
sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password mysql-password --table t1 --hive-import
5)将hive中的表数据导入到mysql中
./sqoop export --connect jdbc:mysql://localhost:3306/test --username root --password admin --table uv_info --export-dir /user/hive/warehouse/uv/dt=2011-08-03
如果报错
11/08/05 10:51:22 INFO mapred.JobClient: Running job: job_201108051007_0010
11/08/05 10:51:23 INFO mapred.JobClient: map 0% reduce 0%
11/08/05 10:51:36 INFO mapred.JobClient: Task Id : attempt_201108051007_0010_m_000000_0, Status : FAILED
java.util.NoSuchElementException
at java.util.AbstractList$Itr.next(AbstractList.java:350)
at uv_info.__loadFromFields(uv_info.java:194)
at uv_info.parse(uv_info.java:143)
at com.cloudera.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:79)
at com.cloudera.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:38)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)
at com.cloudera.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:187)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:647)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:323)
at org.apache.hadoop.mapred.Child$4.run(Child.java:270)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1127)
at org.apache.hadoop.mapred.Child.main(Child.java:264)
此错误的原因为sqoop解析文件的字段与MySql数据库的表的字段对应不上造成的。因此需要在执行的时候给sqoop增加参数,告诉sqoop文件的分隔符,使它能够正确的解析文件字段。
hive默认的字段分隔符为'\001'
./sqoop export --connect jdbc:mysql://localhost:3306/datacenter --username root --password admin --table uv_info --export-dir /user/hive/warehouse/uv/dt=2011-08-03 --input-fields-terminated-by '\t'
Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、oracle...)间进行数据的传递...相关推荐
- 源自Google、Facebook、Netflix和Cisco的10款开源安全工具很值得回味
源自Google.Facebook.Netflix和Cisco的10款开源安全工具很值得回味 选择自由的开源安全软件是一个重要话题,随着新品牌的出现,在选择上也出现很多不确定性.但这没有影响开源 ...
- java 日历工具_【Java】太强了,这款开源日历工具库堪称神器!
首页 专栏 javascript 文章详情 0 太强了,这款开源日历工具库堪称神器! Github导航站发布于 今天 02:03 大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码, ...
- 掌握了这 10 款开源安全工具,从此系统稳定可靠乐无忧!
随着互联网的不断发展,安全问题也越来越受到企业的重视.但安全问题往往需要大量资金的投入,例如聘请安全工程师,产品研发,测试等流程.这对于那些原本就资金紧缺的企业而言,是绝对无法接受的.因此,为了减少在 ...
- 这款开源终端工具逼格更高!比 Xshell 好用
点击关注公众号,回复"1024"获取2TB学习资源! 作为一个常常与 Linux 系统打交道的程序员,使用 SSH 终端工具进行远程管理(之前也分享过:还在付费使用 XShell? ...
- 2021年最受欢迎的10款开源DevOps工具
DevOps不仅仅是一种工作方式的转变–它需要强大的工具来实现. 下面,我们列出了一些当今最受欢迎的DevOps工具的清单. 考虑到把大量的钱投入到花哨的SaaS解决方案中会很快吞噬掉云的预算,因为, ...
- 太强了,这款开源日历工具库堪称神器!
大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标! 今天小编推荐一款无依赖的 ...
- 太强了!这款开源终端工具可查询 IP 信息 ...
最近在**3A平台**的平台下开通了Linux服务器,学习Linux服务器相关知识. 在 Linux 下,有dig.nslookup.traceroute等多种非常实用的网络调试工具. dig:是常用 ...
- 60款流行网络工具的开源替代选择
开源网络工具能派得上用处.无论你是在管理大型企业数据中心中成千上万的系统,还是仅仅把你家里的几台电脑连接起来,开源网络工具都能帮助你搭建和维护一个低成本的网络. 本文整理出了让这项任务变得更容易一点的 ...
- 深入浅出开源性能测试工具 Locust (使用篇 1)
在<[LocustPlus序]漫谈服务端性能测试>中,我对服务端性能测试的基础概念和性能测试工具的基本原理进行了介绍,并且重点推荐了Locust这一款开源性能测试工具.然而,当前在网络上针 ...
最新文章
- 《JavaScript应用程序设计》一一2.3 lambdas
- C#:添加web service引用
- 微服务是否使SOA变得无关紧要?
- Java 洛谷 P1014 Cantor表
- QT的QFileSelector类的使用
- python:linux中升级python版本
- python执行shell命令行_python执行命令行:python中执行shell命令行read结果
- python创建数组并运行_python-Cython中从现有数组和变量创建新数组...
- 女孩子适合学习前端开发吗?
- 机器学习基础(十五)—— blending
- C语言基础专题 - 指针(编写中)
- vue项目打包部署到Tomcat上,一刷新就报错404
- SATA硬盘有固件问题的硬盘型号以及购买建议
- 计算机科学技术应用任务书,计算机科学与技术专——专业实习任务书.doc
- CoreOS容器云企业实战(3)--Docker技术实践
- Markdown支持的emoji图标
- 数据同步工具之DataX实操
- 小白前端自制红警登陆界面(试水前端)
- 计算机控制和dcs控制的区别,从几个方面了解DCS与PLC控制柜到底有什么区别
- selenium报错Message: This version of ChromeDriver only supports Chrome version xx