ORACLE连接HADOOP(3) - OLH加载HDFS数据

 

3、加载Hadoop数据到ORACLE

 

Oracle提供了专用的数据加载器,可以直接从HADOOP中加载数据到指定对象,该软件包下载地址:Oracle Loader for Hadoop Release 2.1.0

 

直接解压缩:

 
  • [root@ora11g ~]# unzip oraloader-2.1.0.zip
 

这个压缩包也是包中还有包的老路数,注意解压缩后会有两个压缩包,分别对应不同的版本,具体情况可以参考README中的说明,这里我们使用第一个压缩包,继续解压:

 
  •  

[root@ora11g ~]# unzip oraloader-2.1.0-1.x86_64.zip -d /usr/local/

 

[root@ora11g ~]# chown -R oracle:oinstall /usr/local/oraloader-2.1.0-1

 

[root@ora11g ~]# chmod -R 777 /usr/local/oraloader-2.1.0-1

  [root@ora11g ~]$ cp /usr/local/oraloader-2.1.0-1/jlib/*.jar /usr/local/hadoop-0.20.2/lib/
 

编辑grid用户的环境变量:

 
  • [root@ora11g ~]$ vi /home/grid/.bash_profile
 

增加下列两项:

 
  •  

export OLH_HOME=/usr/local/oraloader-2.1.0-1

  export OLH_JAR=${OLH_HOME}/jlib/oraloader.jar
 

提示,大家要理解,HADOOP相关的那三个环境变量也是要有的,我这里因为延续前面的环境,因此就没必要写了。

 

切换到sqlplus命令行,创建一个表对象:

 
  •  

SQL> conn scott/tiger

 

Connected.

 

SQL> create table t1(RN NUMBER,OBJECT_NAME VARCHAR2(20));

 

  Table created.
 

创建一个数据文件:

 
  •  

[grid@ora11g ~]$ more t1.dat

 

1,a

 

2,b

 

3,c

  4,d
 

上传至hdfs:

   
  • [grid@ora11g ~]$ hadoop dfs -put t1.dat olh/
 

创建两个配置文件:

 
  •  

[grid@localhost ~]$ more OLH/MyConf.xml

 

<?xml  version="1.0" encoding="UTF-8" ?>

 

 

<!--                          Input settings                             --&gt

 

 

   mapreduce.inputformat.class

 

   oracle.hadoop.loader.lib.input.DelimitedTextInputFormat

 

 

 

   mapred.input.dir

 

   olh

 

 

<!--                          Output settings                             --&gt

 

 

    mapreduce.outputformat.class

 

    oracle.hadoop.loader.lib.output.JDBCOutputFormat

 

 

 

    mapred.output.dir

 

    olh_out

 

   

 

<!--                          Table information                           --&gt

 

 

   oracle.hadoop.loader.loaderMapFile

 

   file:///home/grid/OLH/olh_t1.xml

 

   

 

<!--                          Connection information                      --&gt

 

 

    oracle.hadoop.loader.connection.url

 

    jdbc:oracle:thin:@//192.168.30.244:1521/jssdb

 

 

 

    oracle.hadoop.loader.connection.user

 

    scott

 

    AvroSchemaAwareDBInputFormat wants this case sensitive!

 

             (cause mapred.jdbc.username points here)

 

 

 

    oracle.hadoop.loader.connection.password

 

    tiger       

 

 
 

MyConf.xml的主要参数

                                                                                                                         

mapreduce.inputformat.class

指定输入文件的格式。除了文本文件,还支持hive格式文件。也可以是自定义的文件格式。

mapred.input.dir

Hadoop里输入的数据文件(含路径)

mapreduce.outputformat.class

指定装载的输出方式

         

在线装载:

       

OCIOutputFormat(*),JDBCOutputFormat

       

离线装载:

       

DataPumptOutputFormat , DelimitedTextOutputFormat

mapred.output.dir

输出目录(同时也是LOG所在目录)

oracle.hadoop.loader.loaderMapFile

文件与表的对应关系,包括表名,栏位对应等

oracle.hadoop.loader.connection.url/user/pass

目标数据库的连接信息,包括url,用户名,密码

 

HDFS中的文件与表之间的映射关系:

 
  •  

[grid@localhost ~]$ more OLH/olh_t1.xml 

 

<?xml  version="1.0" encoding="UTF-8" ?>

 

 

SCOTT

 

 

RN

 

OBJECT_NAME

 
 

配置好之后,执行hadoop命令如下:

 
  •  

[grid@localhost ~]$ hadoop jar ${OLH_JAR} oracle.hadoop.loader.OraLoader -conf OLH/MyConf.xml 

 

Oracle Loader for Hadoop Release 2.1.0 - Production

 

 

Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.

 

 

13/05/16 16:19:49 INFO loader.OraLoader: Oracle Loader for Hadoop Release 2.1.0 - Production

 

 

Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.

 

 

 

13/05/16 16:19:49 INFO loader.OraLoader: Built-Against: hadoop-1.1.1 hive-0.10.0 avro-1.6.3 jackson-1.8.8

 

13/05/16 16:19:51 INFO loader.OraLoader: oracle.hadoop.loader.loadByPartition is disabled because table: J1 is not partitioned

 

13/05/16 16:19:51 INFO loader.OraLoader: oracle.hadoop.loader.enableSorting disabled, no sorting key provided

 

13/05/16 16:19:51 INFO output.DBOutputFormat: Setting reduce tasks speculative execution to false for : oracle.hadoop.loader.lib.output.JDBCOutputFormat

 

13/05/16 16:19:51 WARN loader.OraLoader: Sampler error: the number of reduce tasks must be greater than one; the configured value is 1 . Job will continue without sampled information.

 

13/05/16 16:19:51 INFO loader.OraLoader: Sampling time=0D:0h:0m:0s:20ms (20 ms)

 

13/05/16 16:19:51 INFO loader.OraLoader: Submitting OraLoader job OraLoader

 

13/05/16 16:19:53 INFO input.FileInputFormat: Total input paths to process : 1

 

13/05/16 16:19:56 INFO loader.OraLoader: map 0% reduce 0%

 

13/05/16 16:20:31 INFO loader.OraLoader: map 100% reduce 0%

 

13/05/16 16:20:40 INFO loader.OraLoader: map 100% reduce 33%

 

13/05/16 16:20:46 INFO loader.OraLoader: map 100% reduce 100%

 

13/05/16 16:20:48 INFO loader.OraLoader: Job complete: OraLoader (null)

 

13/05/16 16:20:48 INFO loader.OraLoader: Counters: 17

 

        FileSystemCounters

 

                FILE_BYTES_READ=98

 

                FILE_BYTES_WRITTEN=228

 

                HDFS_BYTES_READ=16

 

                HDFS_BYTES_WRITTEN=1850

 

        Job Counters 

 

                Data-local map tasks=1

 

                Launched map tasks=1

 

                Launched reduce tasks=1

 

        Map-Reduce Framework

 

                Combine input records=0

 

                Combine output records=0

 

                Map input records=4

 

                Map output bytes=84

 

                Map output records=4

 

                Reduce input groups=1

 

                Reduce input records=4

 

                Reduce output records=4

 

                Reduce shuffle bytes=98

                  Spilled Records=8
 

提示插入了4条记录,下面就切换到sqlplus中验证一下吧:

 
  •  

SQL> select * from t1;

 

 

        RN OBJECT_NAME

 

---------- --------------------

 

         1 a

 

         2 b

 

         3 c

           4 d
 

成功喽。

 

另外,如果不想配置MyConf.xml,也可以将参数放到hadoop命令中执行,例如:

 
  •  

$ hadoop jar \

 

    ${ORAHDFS_JAR} oracle.hadoop.loader.OraLoader  \

 

    -D mapreduce.inputformat.class=oracle.hadoop.loader.lib.input.DelimitedTextInputFormat \

 

    -D mapred.input.dir=olh \

 

    -D mapreduce.outputformat.class=oracle.hadoop.loader.lib.output.JDBCOutputFormat \

 

    -D mapred.output.dir=olh_out \

 

    -D oracle.hadoop.loader.loaderMapFile=file:///home/grid/OLH/loaderMap.xml \

 

    -D oracle.hadoop.loader.connection.url="jdbc:oracle:thin:@//192.168.30.244:1521/jssdb" \

 

    -D oracle.hadoop.loader.connection.user=SCOTT \

 

    -D oracle.hadoop.loader.connection.password=tiger \

      -publish
 

功能是相同的,有兴趣的朋友可以自己试一下。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7607759/viewspace-761366/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7607759/viewspace-761366/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值