Sqoop 数据导入导出实践
Sqoop是一个用来将hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如:mysql,oracle,等)中的数据导入到hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库中。
1.简介
首先切换到到hadoop用户:su - hadoop
温馨提示:oracle的所有表名列名都要大写!!!
下面的代码,在命令行输入的时候,可能要写成一行
比如第一条需要写成:
sqoop export --table Oracle_table_name --connect jdbc:oracle:thin:@ip:1521:数据库名 --username 用户名 --password 密码 --export-dir hdfs:/user/hive/warehouse/XXX --columns COLUMN1,2,3 --input-fields-terminated-by '\001' --input-lines-terminated-by '\n'
1.导hive表到Oracle
sqoop export
--table Oracle_table_name
--connect jdbc:oracle:thin:@ip:1521:数据库名
--username 用户名
--password 密码
--export-dir hdfs:/user/hive/warehouse/XXX
--columns COLUMN1,2,3,
--input-fields-terminated-by '\001' #或者其他分隔符,比如逗号等
--input-lines-terminated-by '\n'
注意:导hive表是“\001”
–解释:
sqoop export
–table Oracle_table_name(// 数据库Oracle的表名)
–connect jdbc:oracle:thin:@ip:1521:数据库名
(//数据库的地址,其中1521为端口号,默认都为1521,ibd为数据库实例名)
–username用户名(//数据库用户名)
–password用户名(//数据库密码)
–export-dir hdfs:/user/hive/warehouse/XXX
(//hdfs上Hive表的绝对路径)
–columns column1, column2…
(//数据库表的所有列名)
–input-fields-terminated-by ‘\001’(列分隔符)
–input-lines-terminated-by ‘\n’ (行分隔符)
2. 查询数据导入到Oracle的数据是否成功
sqoop eval
--connect jdbc:oracle:thin:@YOUR-IP-ADDRESS:1521:database-name
--username XXX
--password XXX
--query "select * from table_name"
3.导Oracle表到hive表
sqoop import
--connect jdbc:oracle:thin:@YOUR-IP-ADDRESS:1521:database-name
--username xxx
--password xxx
--table TABLE_NAME
--columns COLUMN1,2,3...
--hive-import
--hive-table hive_table_name
-m 1
—解释:
TABLE_NAME为oracle表名(切忌:Oracle个表名在命令中必须是大写,不然会报错)
hive_test为hive表名(hive中的这个表可以不用提前建,只用给表名即可,导成功后列名和Oracle表的列名相同)
4. 连接oracle数据库,列出数据库中的表
sqoop list-tables
--connect jdbc:oracle:thin:@YOUR-IP-ADDRESS:1521:database-name
--username xxx
--password xxx
5.从数据库导出表的数据到HDFS文件(这个比较实用)
sqoop import
--connect jdbc:oracle:thin:@YOUR-IP-ADDRESS:1521:database-name
--username xxx
--password xxx
--table DD
--m 1
--target-dir /home/dpt
解释:
DD为oracle表名(切忌:Oracle表名在命令中必须是大写,不然会报错);
/home/dpt为目的目录,如果没有这个目录则会在hdfs上自动创建这个目录.
导成功后可以用命令查看:
hadoop fs -text /home/dpt/part-m-00000
6.分区表的导入
通过sqoop将hive中的表导入到oracle中
sqoop export
--table t_amap_all
--connect jdbc:oracle:thin:@YOUR-IP-ADDRESS:1521:database-name
--username xxx
--password xxx
--export-dir hdfs://user/hive/warehouse/
--columns 1,2,3...
--input-fields-terminated-by '\t'
--input-lines-terminated-by '\n';
导入分区表需要指定到具体分区目录,不然会找不到数据,在oracle表中能指定分区这个字段!
分隔符要遵循hive表的具体分隔符
导致任务失败有可能是表名不一致,字段不一致,oracle中的字段大小不够
2.可能遇到的问题
- 连接oracle数据库,列出数据库中的表时
sqoop list-tables
--connect jdbc:oracle:thin:@YOUR-IP-ADDRESS:1521:database-name
--username xxx
--password xxx
报错:
16/01/28 09:27:15 ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.RuntimeException: Could not load db driver class: oracle.jdbc.OracleDriver
则
1)发现sqoop的安装目录 /usr/lib/sqoop/lib中缺ojdbc驱动包,然后将驱动包(ojdbc6-11.2.0.1.0.jar)复制到your-ip的sqoop安装目录就可以了:
scp ./ojdbc6-11.2.0.1.0.jar root@your-ip:/usr/lib/sqoop/lib
参考链接
1.下载链接:
https://github.com/apache/sqoop
2.官方文档:
http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_introduction
3.官网:
http://sqoop.apache.org/
Sqoop 数据导入导出实践的更多相关文章
- Sqoop -- 用于Hadoop与关系数据库间数据导入导出工作的工具
Sqoop是一款开源的工具,主要用于在Hadoop相关存储(HDFS.Hive.HBase)与传统关系数据库(MySql.Oracle等)间进行数据传递工作.Sqoop最早是作为Hadoop的一个第三 ...
- 如何利用sqoop将hive数据导入导出数据到mysql
运行环境 centos 5.6 hadoop hive sqoop是让hadoop技术支持的clouder公司开发的一个在关系数据库和hdfs,hive之间数据导入导出的一个工具. 上海尚学堂 ...
- 利用sqoop将hive数据导入导出数据到mysql
一.导入导出数据库常用命令语句 1)列出mysql数据库中的所有数据库命令 # sqoop list-databases --connect jdbc:mysql://localhost:3306 ...
- 从零自学Hadoop(16):Hive数据导入导出,集群数据迁移上
阅读目录 序 导入文件到Hive 将其他表的查询结果导入表 动态分区插入 将SQL语句的值插入到表中 模拟数据文件下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并 ...
- Winform开发框架之通用数据导入导出操作的事务性操作完善
1.通用数据导入导出操作模块回顾 在我的Winfrom开发框架里面,有一个通用的导入模块,它在默默处理这把规范的Excel数据导入到不同的对象表里面,一直用它来快速完成数据导入的工作.很早在随笔< ...
- SQL Server数据导入导出的几种方法
在涉及到SQL Server编程或是管理时一定会用到数据的导入与导出, 导入导出的方法有多种,结合我在做项目时的经历做一下汇总: 1. SQL Server导入导出向导,这种方式是最方便的. 导入向导 ...
- 通过 Sqoop1.4.7 将 Mysql5.7、Hive2.3.4、Hbase1.4.9 之间的数据导入导出
目录 目录 1.什么是 Sqoop? 2.下载应用程序及配置环境变量 2.1.下载 Sqoop 1.4.7 2.2.设置环境变量 2.3.设置安装所需环境 3.安装 Sqoop 1.4.7 3.1.修 ...
- HData——ETL 数据导入/导出工具
HData是一个异构的ETL数据导入/导出工具,致力于使用一个工具解决不同数据源(JDBC.Hive.HDFS.HBase.MongoDB.FTP.Http.CSV.Excel.Kafka等)之间数据 ...
- hive之数据导入导出
hive数据导入导出 一.导入数据4种方式 建表语句 create table test( name string, friends array, children map<string, in ...
随机推荐
- 紫书 习题8-11 UVa 1615 (区间选点问题)
这个点就是贪心策略中的区间选点问题. 把右端点从大到小排序, 左端点从小到大排序. 每次取区间右端点就可以了, 到不能覆盖的时候就ans++, 重新取点 ps:这道题不考虑精度也可以过 要着重复习一下 ...
- 2015 Multi-University Training Contest 1 Tricks Device
Tricks Device Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
- 洛谷—— P2904 [USACO08MAR]跨河River Crossing
https://www.luogu.org/problem/show?pid=2904 题目描述 Farmer John is herding his N cows (1 <= N <= ...
- how to deal with "no such file error or diretory" error for a new programmer in QT creator
when i try to develop a hello demo in QT creator with the code following : #include<QApplication& ...
- 在Linux的终端中显示BMPString的内容
在上一篇博文中,介绍了怎样在 Windows 的控制台界面下输出 BMPString 的内容,可是那里的方法在 Linux 下不适用.假设将那里的演示样例代码放到 Linux 下运行.输出的结果为乱码 ...
- MySql基础总结(1)
对于MySql已经是第二次看了,这次基本的目的是将MySql系统的归纳一边,之前学MySql是将笔记写在本子上,以后不想总带着本子,所以再花点时间把笔记归纳在博客中. 下午已将安装步骤具体的写了.如今 ...
- MDNS DDoS 反射放大攻击——攻击者假冒被攻击者IP向网络发送DNS请求,域名为“_services._dns-sd._udp.local”,这将引起本地网络中所有提供服务的主机都向被攻击者IP发送DNS响应,列举网络中所有服务
MDNS Reflection DDoS 2015年3月,有报告叙述了mDNS 成为反射式和放大式 DDoS 攻击中所用媒介的可能性,并详述了 mDNS 反射式攻击的原理和相应防御方式.Q3,Akam ...
- django 笔记16 文件上传笔记
views.py文件 def upload_file(request): username = request.POST.get('username') fafafa = request.FILES. ...
- C# App.config 自定义 配置节 出现的问题:配置系统未能初始化
C# 读取app.config配置文件 节点键值,提示 "配置系统未能初始化" 错误的解决方案 新建C#项目,在app.config中添加了appSettings项,运行时出现&q ...
- OpenGL编程逐步深入(十一)组合变换
准备知识 在前面的几节教程中,我们已经提到过几种变换,为物体在3D世界中的移动提供的极大的灵活性.但是我们还有很多东西需要学习(如摄像机控制和透视投影),你可以已经猜到,我们需要將这些变换组合起来.在 ...