您的位置:首页 > 数据库 > Oracle

sqoop导入oracle数据至hive

2015-11-05 20:17 465 查看
一、目的

将oracle数据文件dmp中的数据导入到hive中。

目标分解:

由于已有的数据都在dmp文件中,因此要先将dmp文件中的数据导入到oracle中,再将oracle中的表导入到hive中。

二、dmp文件导入到oracle数据库

dmp文件:只有一个不知来源的dmp文件,不知道从哪个数据库中导出的,也不知道导出用户是谁。(不要紧,后面可以根据错误提示一步步改)

oracle数据库:安装oracle 11g 64bit版本。

1.首先尝试使用imp命令导入,发现报错;后改用impdp命令。

2.使用impdp命令的过程中,根据错误提示,找到了正确的使用流程。

3.首先,是创建表空间:

创建一个与dmp文件中名字相同的表空间,数据文件要设置的大一些,因为dmp文件不仅有数据还有索引,导入后会占据oracle很大的空间。

4.然后,创建新的oracle用户:

create user abc identified by abc default tablespace TBS;

并赋予一定的权限:

grant connect,resource to wrs;

grant create session to wrs;

5.下一步,使用管理员创建本地dmp文件的目录:

首先使用system账户登录,

然后

SQL> conn /as sysdba;

SQL> create directory db_bak as 'e:\db_bak';
(e:\db_bak目录下存放要导入的dmp文件)

SQL> grant read,write on directory db_bak to abc;
(赋予新建的用户abc以读写目录的权限)

6.接下来,就可以正确执行impdp命令了:

打开cmd命令行,执行

impdp abc/abc directory=db_bak dumpfile=001.dmp remap_schema=source:abc full=y;

等待完成即可。

三、oracle数据表导入到hive中

1.首先要保证oracle可以远程访问,因此要关闭防火墙。

2.通过Net Manager配置Oracle 11g本地监听服务。可以参考http://blog.csdn.net/mozart_cai/article/details/8596504

3.打开Net Configuration Assistant,选择 “本地网络服务名配置”,重新配置,进行测试,用新建的用户abc测试。可以参考http://www.cnblogs.com/icerainsoft/archive/2011/11/16/2251568.html

4.使用sqoop将oracle数据导入到hive:

安装sqoop,

将oracle的jdbc驱动包放入到sqoop的lib目录下,

在hive中新建数据库myDB,

执行sqoop导入命令:

sqoop import --connect jdbc:oracle:thin:@<ip>:1521:orcl --username ABC --password abc --table TEST -m 1 --hive-import --create-hive-table --hive-database myDB --hive-table TEST

执行完毕,检查一下数据就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: