動手實驗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個輸入文件.

相關文章
相關標籤/搜索