开发者社区> season雅宁> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Sqoop 数据导入导出实践

简介: Sqoop是一个用来将hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如:mysql,oracle,等)中的数据导入到hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库中。
+关注继续查看

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.可能遇到的问题

  1. 连接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/

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Hadoop生态之Hive(完结篇)
Hadoop生态之Hive(完结篇)
0 0
Sqoop进行Hadoop生态离线数据迁移工具
学习一个东西,个人认为最好的方式是:官网+源码+实践。 Sqoop官网:http://sqoop.apache.org
0 0
数据仓库工具之Hive的架构原理
数据仓库工具之Hive的架构原理
0 0
hive_学习_01_hive环境搭建(单机)
一、前言 本文承接上一篇:hbase_学习_01_HBase环境搭建(单机),主要是搭建 hive 的单机环境   二、环境准备 1.说明 hive 的下载来源有: 官方版本:http://archive.apache.org/dist/hive/ CDH版本:http://archive.cloudera.com/cdh5 企业应用一般选择CDH版本,因为比较稳定。
1479 0
HBase数据导入工具总结
本文对HBase常用的数据导入工具进行介绍,并结合云HBase常见的导入场景,给出建议的迁移工具和参考资料。 HBase之间数据导入常用工具 HBase提供了几种数据迁移工具,其中基于API调用的有CopyTable,Export&Import。
3794 0
Sqoop基础学习(1)
1. Sqoop的导入过程 在开始导入之前,Sqoop会通过JDBC来获得所需要的数据库元数据 1.导入表的列名、数据类型等; 2.接着这些数据库的数据类型(varchar、number等)会把映射成Java的数据类型(String、int等),根据这些信息,Sqoop会生成一个与表名同名的类用来完成反序列的工作,保持表中的每一行记录; 3.Sqoop启动MapRedu
825 0
Sqoop操作实践
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq1010885678/article/details/50504925 Sqoo...
1108 0
大数据工具篇之Hive与HBase整合完整教程
一、引言   最近的一次培训,用户特意提到Hadoop环境下HDFS中存储的文件如何才能导入到HBase,关于这部分基于HBase Java API的写入方式,之前曾经有过技术文章共享,本文就不再说明。
1086 0
+关注
season雅宁
大数据生态圈,计算机视觉,机器学习,高端技术的爱好者,话不多说,上代码!!!
文章
问答
文章排行榜
最热
最新
相关电子书
更多
基于SparkSQL的海量数据仓库设计与实践
立即下载
ApsaraDB-HBase介绍及案例分析
立即下载
Phoenix在客服系统的实践
立即下载