首页 > 编程知识 正文

sqoop导出orc数据到mysql,sqoop导入数据到hive分区表

时间:2023-05-05 05:00:45 阅读:286391 作者:1830

一、目的

将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:@:1521:orcl --username ABC --password abc --table TEST -m 1 --hive-import --create-hive-table --hive-database myDB --hive-table TEST

执行完毕,检查一下数据就可以了。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。