动手实验2-OLH(12)

动手实验: Oracle Hadoop装载程序sql

_Toc322167460数据库

实验环境... 2bash

实验1: 装载Hadoop文件到数据库... 3oracle

步骤1: 建立目标表... 3app

步骤2: 在Hadoop中放入示例文件... 3oop

步骤3: 运行Oracle Hadoop装载程序... 3测试

步骤4: 验证结果... 3url

实验2: 装载Hadoo文件到DataPump格式文件... 3spa

步骤1: 建立目标表... 3操作系统

步骤2: 在Hadoop中放入示例文件... 3

步骤3: 运行Oracle Hadoop装载程序... 3

步骤4: 把生成的文件取回到本地... 3

步骤5: 将文件之外部表附加到数据库... 3

步骤6: 检查结果... 3

步骤7: 导入数据... 3

步骤8: 再次检查结果... 3

实验3: 装载Hadoo文件到预分区的DataPump格式文件... 3

步骤1: 建立目标表... 3

步骤2: 在Hadoop中放入示例文件... 3

步骤3: 运行Oracle Hadoop装载程序... 3

步骤4: 把生成的文件取回到本地... 3

步骤5: 将部分文件之外部表附加到数据库... 3

步骤6: 检查结果... 3

步骤7: 把其余分区附加到数据库... 3

步骤8: 再次检查结果... 3

实验4: 装载多个Hadoop文件... 3

步骤1: 建立目标表... 3

步骤2: 在Hadoop中放入示例文件... 3

步骤3: 运行Oracle Hadoop装载程序,使用文件名通配符... 3

步骤4: 检查结果... 3

步骤5: 运行Oracle Hadoop装载程序,使用文件名列表... 3

步骤6: 再次检查结果... 3

实验环境

软件环境:

本实验主要由如下软件搭建而成: Oracle Enterprise Linux, Oracle 11g, Java SE6update30, Apache Hadoop, Oracle Connector for Hadoop等.

实验用到的文件:

实验用到的文件保存在 /home/hadoop/training/OLH 目录下,包括脚本文件以及一些示例数据文件。

环境变量:

在文件olhodchenv.sh中保存了实验中须要用到的环境变量. 为了简化操做,已经在实验中的$HOME/.bash_profile引用该文件,这些环境变量会自动生效。

变量名

变量值

ORACLE_HOME

/home/oracle/app/oracle/product/11.2.0/dbhome_2

HADOOP_HOME

/opt/hadoop

OLH_HOME

/opt/OLH

OLH_JAR

OLH_HOME/jlib/oraloader.jar

HADOOP_CONF_DIR

${HADOOP_HOME}/conf

ORACLE_SID

orcl

一些有用的信息

下表中也列出了实验中可能须要的一些信息.

项目

虚拟机 IP

172.16.22.131

虚拟机主机名

bigdata01

Hadoop default FS

hdfs://bigdata01:9000

Hadoop Job Tracker URL

hdfs://bigdata01:9001

实验用操做系统用户密码

hadoop/oracle

实验用数据库用户密码

Scott/tiger

操做系统oracle用户密码

oracle/oracle

数据库超级用户

sys/oracle

操做系统超级用户

root/oracle

文档中‘PROMPT>’指的是操做系统SHELL的输入界面

SQL ->’指的是Oracle SQL*Plus的输入界面

用hadoop/oracle登陆172.16.22.131.

检查环境变量是否正确设置.

PROMPT> env

应该能看到上面提到的环境变量.

检查hadoop是否正常.

PROMPT> hadoop dfsadmin -report

检查数据库是否正常

PROMPT> sqlplus scott/tiger

SQL> select * from tab;

实验1: 装载Hadoop文件到数据库

在实验1里, 咱们将会把一个Hadoop文件系统上的文件装载到数据库中(使用JDBC 链接)。 这是OLH的最基本功能。

步骤1: 建立目标表

首先, 咱们在数据库中新建一个表,咱们的数据将会装载到这个表里.

检查脚本文件并运行之:

PROMPT> cd /home/hadoop/training/OLH

PROMPT> sqlplus scott/tiger

SQL> !cat lab1.1_target_tab.sql

-- Drop table if table exists

drop table olh_table purge;

-- create table olh_table (col1 NUMBER, col2 VARCHAR2(30), col3 VARCHAR2(128), col4 date);

create table olh_table(

col1 NUMBER, col2 VARCHAR2(30), col3 VARCHAR2(128), col4 date );

SQL> @lab1.1_target_tab.sql;

步骤2: 在Hadoop中放入示例文件

由于OLH须要从Hadoop文件系统中读取数据,因此咱们先要在Hadoop中放入一个的数据文件。 下面的脚本先在Hadoop中创建一个目录,而后把data.dat放入该目录中.

检查脚本文件并运行之:

PROMPT> cat ./lab1.2_init_hadoop_files.sh

#Set up input directory

hadoop fs -rmr olh_lab_in

hadoop fs -mkdir olh_lab_in

hadoop fs -put olh_lab.dat olh_lab_in/data.dat

PROMPT> ./lab1.2_init_hadoop_files.sh

步骤3: 运行Oracle Hadoop装载程序

咱们如今就能够开始装载程序了.

检查脚本文件:

PROMPT> cat ./lab1.3_run_loader.sh

hadoop fs -rmr olh_lab_out

hadoop jar $OLH_JAR oracle.hadoop.loader.OraLoader -conf MyConf.xml

在装载程序中,须要创建一个在Hadoop中新建一个目录,用来存放” _SUCCESS”和”_logs” 文件;在使用离线装载选项时,还有可能须要存放一些离线装载的文件。因此,咱们先要确保没有该目录,以避免建立失败。

装载程序须要读取一些配置信息,在这个例子中,咱们使用配置文件: MyConf.xml. 仔细检查 MyConf.xml. 文件里包含里一些运行OLH所需的主要参数,以下表所示:

表: OLH的主要参数

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,用户名,密码

(注: OCIOutputFormat 只支持64位的Linux)

对于实验1, 最关键参数是mapreduce.outputformat.class,确保它的值是 JDBCOutputFormat.

运行脚本文件.

PROMPT>./lab1.3_run_loader.sh

除了使用-conf=配置文件,咱们也能够用 “-D参数=值” 的方式来传递参数,并且,-D方式会覆盖-conf设定的值.

好比:

hadoop jar ${OLH_JAR} oracle.hadoop.loader.OraLoader -D mapred.input.dir olh_lab_in -D mapreduce.inputformat.class oracle.hadoop.loader.lib.input.DelimitedTextInputFormat

….

步骤4: 验证结果

登陆到数据库,检查数据是否已经成功进入到数据库

PROMPT> sqlplus scott/tiger

SQL> select count(*) from olh_table;

10000

返回10000,表示咱们已经成功装载了10000行记录到数据库里面了.

实验2: 装载Hadoop文件到DataPump格式文件

咱们也能够不直接把数据装载到数据库,而是装载成为datapump格式文件. 再根据须要使用该文件。

步骤1: 建立目标表

首先, 咱们在数据库中新建一个表,咱们的datapump的格式定义根据这个表产生.

检查脚本文件并运行之:

PROMPT> cd /home/hadoop/training/OLH

PROMPT> sqlplus scott/tiger

SQL> !cat lab2.1_target_tab.sql

-- Drop table if table exists

drop table olh_table purge;

-- create table olh_table (col1 NUMBER, col2 VARCHAR2(30), col3 VARCHAR2(128), col4 date);

create table olh_table(

col1 NUMBER, col2 VARCHAR2(30), col3 VARCHAR2(128), col4 date );

SQL> @lab2.1_target_tab.sql;

步骤2: 在Hadoop中放入示例文件

和实验1同样,在HDFS中建立新的数据文件.

检查脚本文件并运行之:

PROMPT> cat ./lab2.2_init_hadoop_files.sh

#Set up input directory

hadoop fs -rmr olh_lab_in

hadoop fs -mkdir olh_lab_in

hadoop fs -put olh_lab.dat olh_lab_in/data.dat

PROMPT> ./lab2.2_init_hadoop_files.sh

步骤3: 运行Oracle Hadoop装载程序

开始运行装载程序以前,须要编辑文件MyConf.xml。 把参数mapreduce.outputformat.class 的值修改为oracle.hadoop.loader.lib.output.DataPumpOutputFormat。 固然,也能够直接在命令行中指定该参数.

(vi简单操做提示:按i或者a进入编辑模式,按esc退出编辑模式,输入:wq保存并退出,输入 :q! 退出但不保存)

PROMPT> vi MyConf.xml

<property>

<name>mapreduce.outputformat.class</name>

<value>oracle.hadoop.loader.lib.output.DataPumpOutputFormat </value>

</property>

检查脚本文件并运行之:

PROMPT> cat ./lab2.3_run_loader.sh

hadoop fs -rmr olh_lab_out

hadoop jar $OLH_JAR oracle.hadoop.loader.OraLoader -conf MyConf.xml \

-Dmapreduce.outputformat.class=oracle.hadoop.loader.lib.output.DataPumpOutputFormat

PROMPT>./lab2.3_run_loader.sh

步骤4: 把生成的文件取回到本地

经过离线装载选项,OLH已经生成了一个Oracle能够直接访问的文件. 咱们须要把这个文件先拷贝到本地文件系统. 因为在后面的操做中,Oracle须要使用文件所在目录,因此咱们直接拷贝整个out目录,并授予oracle用户读写权限。

检查脚本文件并运行之:

PROMPT> cat lab2.4_get_datapump_files.sh

rm -rf datapumpfiles

hadoop fs -get olh_lab_out datapumpfiles

chmod 777 datapumpfiles

PROMPT> ./lab2.4_get_datapump_files.sh

步骤5: 将文件之外部表附加到数据库

OLH在生成离线文件同时,也生成了一个用来建立外部表的脚本<输出目录>/oraloader-dp.sql. 咱们能够经过编辑文件,来建立外部表. 首先,把脚本中的目录改成实际目录(/home/hadoop/training/OLH/datapumpfiles),而后,去掉 “CREATE OR REPLACE DIRECTORY”前面的注释标记,便可运行.

CREATE OR REPLACE DIRECTORY OLH_EXTTAB_DIR AS '/home/hadoop/training/OLH/datapumpfiles ';

step5_load_dpfile_as_ext_tab.sql是已经修改好的文件。

检查脚本文件并运行之:

PROMPT> sqlplus scott/tiger

SQL> !cat step5_load_dpfile_as_ext_tab.sql

--Oracle Loader for Hadoop Release 1.1.0.0.1 - Production

--

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

--

--Generated by DataPumpOutputFormat

--

CREATE OR REPLACE DIRECTORY OLH_EXTTAB_DIR AS

'/home/hadoop/training/OLH/datapumpfiles';

--GRANT READ, WRITE ON DIRECTORY OLH_EXTTAB_DIR TO SCOTT;

--

--ALTER SESSION ENABLE PARALLEL DML;

--INSERT INTO "SCOTT"."OLH_TABLE" SELECT * FROM "SCOTT"."EXT_OLH_TABLE";

--

drop table "SCOTT"."EXT_OLH_TABLE";

CREATE TABLE "SCOTT"."EXT_OLH_TABLE "

(

"COL1" NUMBER,

"COL2" VARCHAR2(30),

"COL3" VARCHAR2(128),

"COL4" DATE

)

ORGANIZATION EXTERNAL

(TYPE ORACLE_DATAPUMP

DEFAULT DIRECTORY OLH_EXTTAB_DIR

LOCATION ('oraloader-00000-dp-0.dat')

);

SQL> @lab2.5_load_dpfile_as_ext_tab.sql

步骤6: 检查结果

SQL> select count(*) from EXT_OLH_TABLE;

10000

结果显示,咱们已经成功的之外部表形式访问到数据。

步骤7: 导入数据

咱们也能够经过insert/select语句把数据真正导入到数据库中。

检查脚本文件并运行之:

SQL> !cat lab2.7_load_to_heap_table.sql

-- Drop table if table exists

drop table olh_table purge;

-- create table olh_table (col1 NUMBER, col2 VARCHAR2(30), col3 VARCHAR2(128), col4 date);

create table olh_table(

col1 NUMBER, col2 VARCHAR2(30), col3 VARCHAR2(128), col4 date

);

INSERT INTO "SCOTT"."OLH_TABLE" SELECT * FROM "SCOTT"."EXT_OLH_TABLE";

SQL>@lab2.7_load_to_heap_table.sql

步骤8: 再次检查结果

SQL> select count(*) from olh_table;

10000

结果显示,数据成功导入到数据库。

实验3: 装载Hadoop文件到预分区的DataPump格式文件

OLH支持把Hadoop文件根据数据库内定义的分区条件,在Hadoop中把数据文件装载成预分区的DataPump文件,每一个文件对应一个分区。

步骤1: 建立目标表

首先, 咱们在数据库中新建一个分区表,以第一个栏位为分区条件(value=0/1/2),咱们的datapump输出文件将这个表的分区条件自动生成多个文件.

检查脚本文件并运行之:

PROMPT> cd /home/hadoop/training/OLH

PROMPT> sqlplus scott/tiger

SQL> !cat lab3.1_target_tab.sql

-- Drop table if table exists

drop table olh_parted_table purge;

-- create table olh_parted_table (part_key number,col1 NUMBER, col2 VARCHAR2(30), col3 VARCHAR2(128), col4 date) partition ..;

create table olh_parted_table(

part_key number,col1 NUMBER, col2 VARCHAR2(30), col3 VARCHAR2(128), col4 date

)

partition by list(part_key)

(

partition p0 values(0),

partition p1 values(1),

partition p2 values(2),

partition pn values(default)

)

;

SQL> @lab3.1_target_tab.sql;

步骤2: 在Hadoop中放入示例文件

和实验1同样,在HDFS中建立新的数据文件。为了更为直观,文件中第一栏等于0的数据会比1/2的数据稍多. 咱们能够经过脚本简单计算一下:

PROMPT>awk -F, '{a[$1]++}END{for (i in a)print "KEY="i":",a[i],"rows"}' olh_lab_with_part_key.dat

PART_KEY=0: 4010 rows

PART_KEY=1: 2990 rows

PART_KEY=2: 3000 rows

检查脚本文件并运行之:

PROMPT> cat ./lab3.2_init_hadoop_files.sh

#Set up input directory

hadoop fs -rmr olh_lab_in

hadoop fs -mkdir olh_lab_in

hadoop fs -put olh_lab_with_part_key.dat olh_lab_in/data.dat

PROMPT> ./lab3.2_init_hadoop_files.sh

步骤3: 运行Oracle Hadoop装载程序

开始运行装载程序以前,因为表结构和文件结构有所变化,须要把oracle.hadoop.loader.loaderMapFile参数指向一个新的Mapping文件。编辑MyConf.xml,设置oracle.hadoop.loader.loaderMapFile=file:///home/hadoop/training/OLH/loaderMap_lab_part_tab.xml

固然,这个参数也能够直接在命令行中指定。

PROMPT> vi MyConf.xml

<property>

<name>mapreduce.outputformat.class</name>

<value>oracle.hadoop.loader.lib.output.DataPumpOutputFormat </value>

</property>

<property>

<name>oracle.hadoop.loader.loaderMapFile</name>

<value>file:///home/hadoop/training/OLH/loaderMap_lab_part_tab.xml</value>

</property>

同时看一下loaderMap_lab_part_tab.xml文件,了解一下新的mapping关系:

PROMPT> cat loaderMap_lab_part_tab.xml

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

<LOADER_MAP>

<SCHEMA>SCOTT</SCHEMA>

<TABLE>OLH_PARTED_TABLE</TABLE>

<COLUMN field="F0">PART_KEY</COLUMN>

<COLUMN field="F1">COL1</COLUMN>

<COLUMN field="F2">COL2</COLUMN>

<COLUMN field="F3">COL3</COLUMN>

<COLUMN field="F4" format="yyyy-MM-dd HH:mm:ss">COL4</COLUMN>

</LOADER_MAP>

检查脚本文件并运行之:

PROMPT> cat ./lab3.3_run_loader.sh

hadoop fs -rmr olh_lab_out

hadoop jar $OLH_JAR oracle.hadoop.loader.OraLoader -conf MyConf.xml \

-Dmapreduce.outputformat.class=oracle.hadoop.loader.lib.output.DataPumpOutputFormat \

-Doracle.hadoop.loader.loaderMapFile=file:///home/hadoop/training/OLH/loaderMap_lab_part_tab.xml

PROMPT>./lab3.3_run_loader.sh

步骤4: 把生成的文件取回到本地

如今把生成的文件取回到本地.

检查脚本文件并运行之:

PROMPT> cat lab3.4_get_datapump_files.sh

rm -rf datapumpfiles

hadoop fs -get olh_lab_out parted_datapumpfiles

chmod 777 parted_datapumpfiles

PROMPT> ./lab3.4_get_datapump_files.sh

检查一下文件大小.

PROMPT> cd parted_datapumpfiles; ls -l *.dat

文件 oraloader-00000-dp-1.dat 比另外两个要大,由于第一个分区有更多的记录.

步骤5: 将部分文件之外部表附加到数据库

修改OLH提供的oraloader-dp.sql的文件。首先,把脚本中的目录改成实际目录(/home/hadoop/training/OLH/parted_datapumpfiles),而后,去掉 “CREATE OR REPLACE DIRECTORY”前面的注释标记。.

CREATE OR REPLACE DIRECTORY OLH_EXTTAB_DIR AS '/home/hadoop/training/OLH/parted_datapumpfiles ';

另外,咱们能够只把一部分的文件映射到数据库中,只要在建立外部表脚本中去掉不想要的分区文件。这里,咱们只选择第一个分区.

检查脚本文件并运行之:

PROMPT> sqlplus scott/tiger

SQL> !cat lab3.5_load_dpfile_as_ext_tab.sql

--Oracle Loader for Hadoop Release 1.1.0.0.1 - Production

--

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

--

--Generated by DataPumpOutputFormat

--

CREATE OR REPLACE DIRECTORY OLH_EXTTAB_DIR AS '/home/hadoop/training/OLH/parted_datapumpfiles';

--GRANT READ, WRITE ON DIRECTORY OLH_EXTTAB_DIR TO SCOTT;

--

--ALTER SESSION ENABLE PARALLEL DML;

--INSERT INTO "SCOTT"."OLH_PARTED_TABLE" SELECT * FROM "SCOTT"."EXT_OLH_PARTED_TABLE";

--

CREATE TABLE "SCOTT"."EXT_OLH_PARTED_TABLE"

(

"PART_KEY" NUMBER,

"COL1" NUMBER,

"COL2" VARCHAR2(30),

"COL3" VARCHAR2(128),

"COL4" DATE

)

ORGANIZATION EXTERNAL

(TYPE ORACLE_DATAPUMP

DEFAULT DIRECTORY OLH_EXTTAB_DIR

LOCATION

( 'oraloader-00000-dp-1.dat' )

);

SQL> @lab3.5_load_dpfile_as_ext_tab.sql

步骤6: 检查结果

SQL> select count(*) from EXT_OLH_PARTED_TABLE;

4010

只有part_key=0的附加到数据库中.

步骤7: 把其余分区附加到数据库

继续修改OLH提供的oraloader-dp.sql的文件, 咱们也能够其余的数据附加到数据库.

检查脚本文件并运行之:

SQL> !cat lab3.7_load_rest_dpfile_as_ext_tab.sql

DROP TABLE "SCOTT"."EXT_OLH_REST_PARTED_TABLE";

CREATE TABLE "SCOTT"."EXT_OLH_REST_PARTED_TABLE"

(

"PART_KEY" NUMBER,

"COL1" NUMBER,

"COL2" VARCHAR2(30),

"COL3" VARCHAR2(128),

"COL4" DATE

)

ORGANIZATION EXTERNAL

(TYPE ORACLE_DATAPUMP

DEFAULT DIRECTORY OLH_EXTTAB_DIR

LOCATION

(

'oraloader-00000-dp-2.dat',

'oraloader-00000-dp-3.dat'

)

);

SQL>@ lab3.7_load_rest_dpfile_as_ext_tab.sql

步骤8: 再次检查结果

SQL> select count(*) from EXT_OLH_REST_PARTED_TABLE;

5990

正好是part_key=1和part_key=2的数据。

实验4: 装载多个Hadoop文件

OLH 也支持同时装载多个文件到同一个表里面。在实验4中,咱们将测试这个功能.

步骤1: 建立目标表

和实验1同样,建立目标表.

检查脚本文件并运行之:

PROMPT> cd /home/hadoop/training/OLH

PROMPT> sqlplus scott/tiger

SQL> !cat lab4.1_target_tab.sql

-- Drop table if table exists

drop table olh_table purge;

-- create table olh_table (col1 NUMBER, col2 VARCHAR2(30), col3 VARCHAR2(128), col4 date);

create table olh_table(

col1 NUMBER, col2 VARCHAR2(30), col3 VARCHAR2(128), col4 date );

SQL> @lab4.1_target_tab.sql;

步骤2: 在Hadoop中放入示例文件

往Hadoop中放入多个示例文件.

检查脚本文件并运行之:

PROMPT> cat ./lab4.2_init_hadoop_files.sh

#Set up input directory

hadoop fs -rmr olh_lab_in

hadoop fs -mkdir olh_lab_in

hadoop fs -put olh_lab.dat olh_lab_in/data.dat

hadoop fs -put olh_lab.dat olh_lab_in/data2.dat

hadoop fs -put olh_lab.dat olh_lab_in/data3.dat

hadoop fs -put olh_lab.dat olh_lab_in/data.txt

PROMPT> ./lab4.2_init_hadoop_files.sh

步骤3: 运行Oracle Hadoop装载程序,使用文件名通配符

运行OLH以前,编辑MyConf.xml,mapred.input.dir 参数改成带通配符的形式:olh_lab_in/*.dat. 把 mapreduce.outputformat.class 改回 oracle.hadoop.loader.lib.output.JDBCOutputFormat, 把 oracle.hadoop.loader.loaderMapFile改回files:///home/hadoop/training/OLH/loaderMap_lab.xml. 固然, 也能够直接在命令行中指定.

PROMPT> vi MyConf.xml

<property>

<name>mapred.input.dir</name>

<value>olh_lab_in/*.dat</value>

</property>

<property>

<name>mapreduce.outputformat.class</name>

<value>oracle.hadoop.loader.lib.output.JDBCOutputFormat</value>

</property>…

<property>

<name>oracle.hadoop.loader.loaderMapFile</name>

<value>files:///home/hadoop/training/OLH/loaderMap_lab.xml</value>

</property>…

检查脚本文件并运行之:

PROMPT> cat ./lab4.3_run_loader.sh

hadoop fs -rmr olh_lab_out

hadoop jar $OLH_JAR oracle.hadoop.loader.OraLoader -conf MyConf.xml \

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

-Doracle.hadoop.loader.loaderMapFile=file:///home/hadoop/training/OLH/loaderMap_lab.xml \

-Dmapred.input.dir=olh_lab_in/*.dat

PROMPT>./lab4.3_run_loader.sh

步骤4: 检查结果

PROMPT> sqlplus scott/tiger

SQL> select count(*) from olh_table;

30000

返回30000的结果是由于 olh_lab_in/*.dat 匹配到3个输入文件.

步骤5: 运行Oracle Hadoop装载程序,使用文件名列表

运行OLH以前,编辑MyConf.xml,mapred.input.dir 参数改成件名列表的形式:

olh_lab_in/data.dat, olh_lab_in/data.txt。 固然,也能够直接在命令行中指定.

PROMPT> vi MyConf.xml

<property>

<name>mapred.input.dir</name>

<value>olh_lab_in/data.dat, olh_lab_in/data.txt</value>

</property>

<property>

<name>mapreduce.outputformat.class</name>

<value>oracle.hadoop.loader.lib.output.JDBCOutputFormat</value>

</property>

检查脚本文件并运行之:

PROMPT> cat ./lab4.5_run_loader.sh

hadoop fs -rmr olh_lab_out

hadoop jar $OLH_JAR oracle.hadoop.loader.OraLoader -conf MyConf.xml \

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

-Doracle.hadoop.loader.loaderMapFile=file:///home/hadoop/training/OLH/loaderMap_lab.xml \

-Dmapred.input.dir=olh_lab_in/data.dat,olh_lab_in/data.txt

PROMPT>./lab4.5_run_loader.sh

步骤6: 再次检查结果

PROMPT> sqlplus scott/tiger

SQL> select count(*) from olh_table;

返回50000的结果是由于olh_lab_in/data.dat,olh_lab_in/data.txt匹配到2个输入文件.