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
<!-- Input settings -->
<!-- Output settings -->
<!-- Table information -->
<!-- Connection information -->
(cause mapred.jdbc.username points here)
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
配置好之後,執行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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Hadoop系列之HDFS 資料塊Hadoop
- 關於Hadoop HDFS資料均衡。Hadoop
- PowerDesigner連線Oracle逆向生成資料模型(轉載)Oracle模型
- Hadoop的HDFS 入門使用Hadoop
- oracle下載安裝及PLSQL連線資料庫教程OracleSQL資料庫
- Oracle連線MongoDB資料庫OracleMongoDB資料庫
- Oracle資料庫連線方式Oracle資料庫
- Java連線oracle資料庫JavaOracle資料庫
- Hadoop 基礎之 HDFS 入門Hadoop
- Hadoop的HDFS架構入門Hadoop架構
- 建立HDFS,匯入HADOOP jar包HadoopJAR
- java Jdbc連線oracle資料庫連線測試JavaJDBCOracle資料庫
- 【Oracle】Python 連線Oracle 資料庫OraclePython資料庫
- 大資料小白系列——HDFS(3)大資料
- 【大資料】【hadoop】檢視hdfs檔案命令大資料Hadoop
- Hadoop–HDFSHadoop
- Python 連線 Oracle資料庫PythonOracle資料庫
- [Navicate]Navicate連線Oracle資料庫Oracle資料庫
- php5.4連線ORACLE資料PHPOracle
- Python連線oracle資料庫PythonOracle資料庫
- oracle資料庫修改連線數Oracle資料庫
- NodeJs連線Oracle資料庫NodeJSOracle資料庫
- PLSQL連線oracle資料庫配置SQLOracle資料庫
- java連線Oracle資料庫獲取資料JavaOracle資料庫
- Hadoop 入門筆記—核心元件 HDFSHadoop筆記元件
- 通過命令列連線oracle資料庫/進入sql plus命令列Oracle資料庫SQL
- 轉載pythonmysql資料庫連線PythonMySql資料庫
- 3.DQL資料查詢語言(內連線,外連線,自連線)
- 大資料3-Flume收集資料+落地HDFS大資料
- hadoop之上傳資料到hdfs模式Hadoop模式
- Flume:資料匯入到hdfs中
- Oracle dos連線資料庫基本操作Oracle資料庫
- C#連線和操作Oracle資料C#Oracle
- 使用instantclient連線oracle資料庫clientOracle資料庫
- ORACLE 配置連線遠端資料庫Oracle資料庫
- .Net與Oracle的資料庫連線Oracle資料庫
- Hadoop HDFS(二)Hadoop
- Hadoop HDFS(一)Hadoop