ヘッダーをスキップ
Oracle® Big Data Connectorsユーザーズ・ガイド
リリース2 (2.2)
E48215-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

2 Oracle SQL Connector for Hadoop Distributed File System

この章では、Oracle SQL Connector for Hadoop Distributed File System (HDFS)を使用して、HadoopとOracle Database間のデータ・アクセスを容易にする方法について説明します。

この章の内容は次のとおりです。

2.1 Oracle SQL Connector for HDFSについて

Oracle SQL Connector for HDFSを使用する場合、Hadoopに存在する次の形式のデータへのアクセスやデータの分析にOracle Databaseを使用できます。

  • HDFS形式のデータ・ポンプ・ファイル

  • HDFS形式のデリミタ付きテキスト・ファイル

  • Hive表

その他のファイル形式(JSONファイルなど)の場合、Oracle SQL Connector for HDFSを使用する前に、入力をHive表にステージングできます。

Oracle SQL Connector for HDFSでは、外部表を使用して、Hive表、HDFSのデリミタ付きテキスト・ファイルおよびデータ・ポンプ・ファイルへの読取りアクセス権をOracle Databaseに提供します。外部表は、データベース外のデータの場所を識別するOracle Databaseオブジェクトです。Oracle Databaseは、外部表の作成時に指定されたメタデータを使用してデータにアクセスします。外部表への問合せによって、データがOracleデータベースの表に格納されている場合と同様に、HDFSやHive表に格納されているデータにアクセスできます。

この目的で外部表を作成するには、Oracle SQL Connector for HDFSで提供されるExternalTableコマンドライン・ツールを使用します。ExternalTableに、Hadoopのデータソースに関する情報とOracle Databaseのスキーマに関する情報を指定します。この情報は、ExternalTableコマンドへのパラメータとして、またはXMLファイル形式で指定します。

外部表の準備が完了すると、他のデータベース表の場合と同じ方法でデータに問合せを実行できます。HDFSやHive表のデータに問い合せたり、そのデータを他のデータベースに存在するデータと結合したりすることもできます。

SQLを使用して、Oracleデータベースの表にデータをバルク・ロードすることもできます。頻繁に問い合せるデータのすべてまたは一部をOracleデータベースに格納することもできます。

2.2 Oracle SQL Connector for HDFSを使用する前に

次に、Oracle SQL Connector for HDFSを使用する場合の基本的な手順を示します。

  1. 初めてOracle SQL Connector for HDFSを使用する場合は、ソフトウェアがインストールおよび構成されていることを確認します。

    「システムへのOracle SQL Connector for HDFSの構成」を参照してください。

  2. Oracle DatabaseシステムまたはHadoopクラスタのノードのいずれか適切なシステムにログインします。

    「システムへのOracle SQL Connector for HDFSの構成」を参照してください。

  3. 接続とデータベースを指定するXMLドキュメントを作成します(ExternalTableコマンドにこれらのパラメータを指定していない場合)。

    「外部表の説明」を参照してください。

  4. ExternalTableコマンドを含むシェル・スクリプトを作成します。

    「ExternalTableコマンドライン・ツールの使用」を参照してください。

  5. シェル・スクリプトを実行します。

  6. ジョブが失敗した場合、出力の診断メッセージを使用してエラーを特定し、修正します。失敗した時点のジョブの進捗状況によっては、スクリプトを再実行する前にOracleデータベースから表の定義を削除する必要があります。

  7. ジョブが成功した後、外部表の所有者としてOracle Databaseに接続します。この表に問い合せて、データにアクセスできることを確認します。

  8. 頻繁に問い合せるデータは、データベースの表にロードすると便利です。外部表には索引やパーティションはありません。

ここまでの手順を例2-1に例示します。

例2-1 Oracle DatabaseからのHDFSデータ・ファイルへのアクセス

$ cat moviefact_hdfs.sh
# Add environment variables
export OSCH_HOME="/opt/oracle/orahdfs-2.2.0"
 
hadoop jar $OSCH_HOME/jlib/orahdfs.jar \
       oracle.hadoop.exttab.ExternalTable \
       -conf /home/jdoe/movie/moviefact_hdfs.xml \
       -createTable

$ cat moviefact_hdfs.xml
<?xml version="1.0"?>
 <configuration>
    <property>
      <name>oracle.hadoop.exttab.tableName</name>
      <value>MOVIE_FACT_EXT_TAB_TXT</value>
    </property>
    <property>
      <name>oracle.hadoop.exttab.locationFileCount</name>
      <value>4</value>
    </property>
    <property>
      <name>oracle.hadoop.exttab.dataPaths</name>
      <value>/user/jdoe/moviework/data/part*</value>
    </property>
    <property>
      <name>oracle.hadoop.exttab.fieldTerminator</name>
      <value>\u0009</value>
    </property>
    <property>
      <name>oracle.hadoop.exttab.defaultDirectory</name>
      <value>MOVIE_DIR</value>
    </property>
    <property>
      <name>oracle.hadoop.exttab.columnNames</name>
      <value>CUST_ID,MOVIE_ID,GENRE_ID,TIME_ID,RECOMMENDED,ACTIVITY_ID,RATING,SALES</value>
    </property>
    <property>
      <name>oracle.hadoop.exttab.sourceType</name>
      <value>text</value>
    </property>
    <property>
      <name>oracle.hadoop.connection.url</name>
      <value>jdbc:oracle:thin:@//dbhost:1521/orcl.example.com</value>
    </property>
    <property>
      <name>oracle.hadoop.connection.user</name>
      <value>MOVIEDEMO</value>
    </property>
</configuration>

$ sh moviefact_hdfs.sh
Oracle SQL Connector for HDFS Release 2.2.0 - Production
 
Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
 
Enter Database Password: password]
The create table command succeeded.
 
CREATE TABLE "MOVIEDEMO"."MOVIE_FACT_EXT_TAB_TXT"
(
  "CUST_ID"                        VARCHAR2(4000),
 "MOVIE_ID"                       VARCHAR2(4000),
 "GENRE_ID"                       VARCHAR2(4000),
 "TIME_ID"                        VARCHAR2(4000),
 "RECOMMENDED"                    VARCHAR2(4000),
 "ACTIVITY_ID"                    VARCHAR2(4000),
 "RATING"                        VARCHAR2(4000),
 "SALES"                          VARCHAR2(4000)
)
ORGANIZATION EXTERNAL
(
   TYPE ORACLE_LOADER
   DEFAULT DIRECTORY "MOVIE_DIR"
   ACCESS PARAMETERS
   (
     RECORDS DELIMITED BY 0X'0A'
     disable_directory_link_check
     CHARACTERSET AL32UTF8
     STRING SIZES ARE IN CHARACTERS
     PREPROCESSOR "OSCH_BIN_PATH":'hdfs_stream'
     FIELDS TERMINATED BY 0X'2C'
     MISSING FIELD VALUES ARE NULL
     (
       "CUST_ID" CHAR,
       "MOVIE_ID" CHAR,
       "GENRE_ID" CHAR,
       "TIME_ID" CHAR,
       "RECOMMENDED" CHAR,
       "ACTIVITY_ID" CHAR,
       "RATINGS" CHAR,
       "SALES" CHAR
     )
   )
   LOCATION
   (
     'osch-20130314092801-1513-1',
     'osch-20130314092801-1513-2',
     'osch-20130314092801-1513-3',
     'osch-20130314092801-1513-4'
   )
) PARALLEL REJECT LIMIT UNLIMITED;
 
The following location files were created.
 
osch-20130314092801-1513-1 contains 1 URI, 12754882 bytes
 
    12754882 hdfs://bda-ns/user/jdoe/moviework/data/part-00001
 
osch-20130314092801-1513-2 contains 1 URI, 438 bytes
 
         438 hdfs://bda-ns/user/jdoe/moviework/data/part-00002
 
osch-20130314092801-1513-3 contains 1 URI, 432 bytes
 
         432 hdfs://bda-ns/user/jdoe/moviework/data/part-00003
 
osch-20130314092801-1513-4 contains 1 URI, 202 bytes
 
         202 hdfs://bda-ns/user/jdoe/moviework/data/part-00004

SQL*Plus: Release 11.2.0.3.0 Production on Thu Mar 14 14:14:31 2013
 
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
 
Enter password: password
 
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

SQL> SELECT cust_id, movie_id, time_id FROM movie_fact_ext_tab_txt
  2  WHERE rownum < 5;

CUST_ID              MOVIE_ID             TIME_ID
-------------------- -------------------- --------------------
1150211              585                  01-JAN-11
1221463              9870                 01-JAN-11
1002672              1422                 01-JAN-11
1095718              544                  01-JAN-11

SQL> DESCRIBE movie_fact_ext_tab_txt
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 CUST_ID                                            VARCHAR2(4000)
 MOVIE_ID                                           VARCHAR2(4000)
 GENRE_ID                                           VARCHAR2(4000)
 TIME_ID                                            VARCHAR2(4000)
 RECOMMENDED                                        VARCHAR2(4000)
 ACTIVITY_ID                                        VARCHAR2(4000)
 RATINGS                                            VARCHAR2(4000)
 SALES                                              VARCHAR2(4000)
 
SQL> CREATE TABLE movie_facts AS
   2 SELECT CAST(cust_id AS VARCHAR2(12)) cust_id, 
   3      CAST(movie_id AS VARCHAR2(12)) movie_id,
   4      CAST(genre_id AS VARCHAR(3)) genre_id,
   5      TO_TIMESTAMP(time_id,'YYYY-MM-DD-HH24:MI:SS:FF') time,
   6      TO_NUMBER(recommended) recommended,
   7      TO_NUMBER(activity_id) activity_id, 
   8      TO_NUMBER(ratings) ratings, 
   9      TO_NUMBER(sales) sales
   10 FROM movie_fact_ext_tab_txt;

SQL> DESCRIBE movie_facts
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 CUST_ID                                            VARCHAR2(12)
 MOVIE_ID                                           VARCHAR2(12)
 GENRE_ID                                           VARCHAR2(3)
 TIME                                               TIMESTAMP(9)
 RECOMMENDED                                        NUMBER
 ACTIVITY                                           NUMBER
 RATING                                             NUMBER
 SALES                                              NUMBER

2.3 システムへのOracle SQL Connector for HDFSの構成

Oracle SQL Connector for HDFSは、Oracle DatabaseシステムまたはHadoopクラスタで実行できます。

  • Hiveソースの場合は、Hadoopクラスタのノードにログインする必要があります。

  • テキストおよびデータ・ポンプ形式ファイルの場合は、Oracle DatabaseシステムまたはHadoopクラスタのノードにログインできます。

Oracle SQL Connector for HDFSでは、ログインするシステムのHADOOP_CLASSPATH環境変数に情報を追加する必要があります。この追加設定は、システム管理者がアカウントの作成時に行う場合と、自分で行う必要がある場合があります。「Oracle Databaseシステムのユーザー・アカウントの設定」および「Hadoopクラスタのユーザー・アカウントの設定」を参照してください。

環境変数の設定: 

  • HADOOP_CLASSPATHにOracle SQL Connector for HDFSのJARファイルへのパスが含まれていることを確認します。

    path/orahdfs-2.2.0/jlib/*
    
  • Hiveデータソースを使用しているHadoopクラスタにログインする場合は、HADOOP_CLASSPATHにHiveのJARファイルとconfディレクトリが含まれていることも確認します。次に例を示します。

    /usr/lib/hive/lib/*
    /etc/hive/conf
    
  • 便宜上、OSCH_HOME環境変数を作成することもできます。Oracle Big Data Applianceにこの環境変数を設定するBashコマンドを次に示します。

    $ export OSCH_HOME="/opt/oracle/orahdfs-2.2.0"
    

関連項目:

両方のシステムにソフトウェアをインストールし、ユーザー・アカウントを設定する手順については、「Oracle SQL Connector for Hadoop Distributed File Systemの設定」を参照してください。

Oracle SQL Connector for HDFSに関する既知の問題の詳細は、OSCH_HOME/doc/README.txtを参照してください。


2.4 ExternalTableコマンドライン・ツールの使用方法

Oracle SQL Connector for HDFSには、ExternalTableというコマンドライン・ツールがあります。この項では、このツールの基本的な使用方法について説明します。データソース形式に固有のコマンド構文については、「外部表の作成」を参照してください。

2.4.1 外部表の概要

ExternalTableツールでは、いくつかのプロパティの値を使用して次のタスクを行います。

  • 外部表の作成

  • 場所ファイルの移入

  • 既存の外部表への場所ファイルの公開

  • 場所ファイルのリスト

  • 外部表の説明

これらのプロパティ値はXMLドキュメントに指定することも、コマンドラインで個々に指定することもできます。「Oracle SQL Connector for HDFSの構成」を参照してください。

2.4.2 ExternalTableコマンドライン・ツールの構文

ExternalTableコマンドライン・ツールの完全な構文は次のようになります。

hadoop jar OSCH_HOME/jlib/orahdfs.jar \
oracle.hadoop.exttab.ExternalTable \
[-conf config_file]... \ 
[-D property=value]... \
-createTable [--noexecute] 
  | -publish [--noexecute] 
  | -listlocations [--details]
  | -getDDL

OSCH_HOME環境変数を作成することも、コマンド構文のOSCH_HOMEをOracle SQL Connector for HDFSのインストール・ディレクトリのフル・パスに置き換えることもできます。Oracle Big Data Applianceの場合、このディレクトリは次のようになります。

/opt/oracle/orahdfs-version

たとえば、ExternalTableコマンドライン・ツールで次のようなコマンドを実行できます。

hadoop jar /opt/oracle/orahdfs-2.2.0/jlib/orahdfs.jar \
oracle.hadoop.exttab.ExternalTable \
     .
     .
     .

パラメータの説明 

-conf config_file

実行するコマンドで必要なプロパティを含むXML構成ファイルの名前を特定します。「Oracle SQL Connector for HDFSの構成」を参照してください。

-D property=value

特定のプロパティに値を割り当てます。

-createTable [--noexecute]

外部表定義を作成し、データのURIを外部表の場所ファイルに公開します。出力レポートに、外部表の作成に使用されるDDLと、場所ファイルの内容が示されます。

--noexecuteオプションを使用して、コマンドの実行計画を表示します。操作は実行されませんが、レポートには、実行計画の詳細とエラーが表示されます。最初に、-createTableコマンドを--noexecuteを指定して実行することをお薦めします。

-publish [--noexecute]

既存の外部表の場所ファイルにデータのURIを公開します。新しいデータ・ファイルを追加した後にこのオプションを使用すると、既存の外部表からアクセスできるようになります。

--noexecuteオプションを使用して、コマンドの実行計画を表示します。操作は実行されませんが、レポートには、計画されているSQL ALTER TABLEコマンドと場所ファイルが表示されます。また、エラーも示されます。最初に、-publishコマンドを--noexecuteを指定して実行することをお薦めします。

「HDFSデータ・パスの公開」を参照してください。

-listLocations [--details]

場所ファイルの内容をテキストで表示します。このコマンドで--detailsオプションを指定すると、詳細なリストが示されます。「場所ファイルとは」を参照してください。

-getDDL

既存の外部表の表定義を出力します。「外部表の説明」を参照してください。


関連項目:

「構文の規則」

2.5 外部表の作成

Oracle SQL Connector for HDFSで提供されるExternalTableツールを使用して、外部表を自動的に作成できます。

2.5.1 ExternalTableツールによる外部表の作成

ExternalTableツールを使用して外部表を作成するには、使用するデータソースにあわせて次の手順を実行します。

ExternalTable -createTableコマンドの実行を完了すると、外部表を使用する準備ができます。

外部表を手動で作成するには、「SQLでの外部表の作成」の手順に従います。

-createTableのExternalTable構文

次の構文を使用して外部表を作成し、その場所ファイルを移入します。

hadoop jar OSCH_HOME/jlib/orahdfs.jar oracle.hadoop.exttab.ExternalTable \
[-conf config_file]... \
[-D property=value]... \
-createTable [--noexecute]

2.5.2 データ・ポンプ形式ファイルからの外部表の作成

Oracle SQL Connector for HDFSは、Oracle Loader for Hadoopで作成されるデータ・ポンプ・ファイルのみをサポートし、Oracleユーティリティで作成される汎用データ・ポンプ・ファイルはサポートしません。

Oracle SQL Connector for HDFSは、データ・ポンプ・ファイルのヘッダーのメタデータを使用してデータ・ポンプ・ファイルの外部表定義を作成します。また、preprocessorアクセス・パラメータでORACLE_LOADERアクセス・ドライバを使用します。さらに、EXTERNAL VARIABLE DATAという特殊なアクセス・パラメータも使用します。このパラメータを使用すると、ORACLE_LOADERは、Oracle Loader for Hadoopで生成されたデータ・ポンプ形式ファイルを読み取ることができます。


注意:

Oracle Loader for Hadoopで作成されるデータ・ポンプ・ファイルにコネクタがアクセスできるようにするには、Oracle SQL Connector for HDFSでOracle Database 11.2.0.2へのパッチが必要です。このパッチをダウンロードするには、http://support.oracle.comにアクセスしてOracle Bug#14557588を検索します。

リリース11.2.0.3以降では、このパッチは不要です。


2.5.2.1 必須プロパティ

次のプロパティは必須です。

  • oracle.hadoop.exttab.tableName

  • oracle.hadoop.exttab.defaultDirectory

  • oracle.hadoop.exttab.dataPaths

  • oracle.hadoop.exttab.sourceType=datapump

  • oracle.hadoop.connection.url

  • oracle.hadoop.connection.user

このデータソースに使用されるプロパティの説明については、「Oracle SQL Connector for HDFSの構成」を参照してください。

2.5.2.2 オプションのプロパティ

次のプロパティはオプションです。

  • oracle.hadoop.exttab.logDirectory

2.5.2.3 データ・ポンプ形式ファイルのXMLファイルのプロパティの定義

例2-2に、データ・ポンプ・ファイルの記述に使用可能なすべてのプロパティを含むXMLテンプレートを示します。このテンプレートを使用するには、テキスト・ファイルにカット・アンド・ペーストし、適切な値を入力してデータ・ポンプ・ファイルを記述し、不要なオプション・プロパティを削除します。XMLテンプレートの詳細は、「構成ファイルの作成」を参照してください。

例2-2 データ・ポンプ形式ファイルのプロパティを使用したXMLファイル

<?xml version="1.0"?>

<!-- Required Properties -->

<configuration>
  <property>
    <name>oracle.hadoop.exttab.tableName</name>
    <value>value</value>
  </property>
  <property>
    <name>oracle.hadoop.exttab.defaultDirectory</name>
    <value>value</value>
  </property>
  <property>
    <name>oracle.hadoop.exttab.dataPaths</name>
    <value>value</value>
  </property>
  <property>
    <name>oracle.hadoop.exttab.sourceType</name>
    <value>datapump</value>
  </property>
  <property>
    <name>oracle.hadoop.connection.url</name>
    <value>value</value>
  </property>
  <property>
    <name>oracle.hadoop.connection.user</name>
    <value>value</value>
  </property>

<!-- Optional Properties -->

  <property>
    <name>oracle.hadoop.exttab.logDirectory</name>
    <value>value</value>
  </property>
</configuration>

2.5.2.4

例2-3では、データ・ポンプ・ファイルを読み取るSALES_DP_XTABという外部表を作成します。

例2-3 データ・ポンプ形式ファイルの外部表の定義

Oracle Databaseを実行しているオペレーティング・システム・ユーザー(通常はoracleユーザー)としてログインし、ファイルシステム・ディレクトリを作成します。

$ mkdir /scratch/sales_dp_dir

データベース・ディレクトリを作成し、そのディレクトリに対する読取りアクセス権と書込みアクセス権を付与します。

$ sqlplus / as sysdba
SQL> CREATE OR REPLACE DIRECTORY sales_dp_dir AS '/scratch/sales_dp_dir'
SQL> GRANT READ, WRITE ON DIRECTORY sales_dp_dir TO scott;

外部表を作成します。

hadoop jar OSCH_HOME/jlib/orahdfs.jar \
oracle.hadoop.exttab.ExternalTable \
-D oracle.hadoop.exttab.tableName=SALES_DP_XTAB \
-D oracle.hadoop.exttab.sourceType=datapump \
-D oracle.hadoop.exttab.dataPaths=hdfs:///user/scott/olh_sales_dpoutput/ \
-D oracle.hadoop.exttab.defaultDirectory=SALES_DP_DIR \
-D oracle.hadoop.connection.url=jdbc:oracle:thin:@//myhost:1521/myservicename \
-D oracle.hadoop.connection.user=SCOTT \
-createTable

2.5.3 Hive表からの外部表の作成

Oracle SQL Connector for HDFSは、Hiveメタストア・クライアントにアクセスして表の列や表データの場所に関する情報を取得することで、Hive表から外部表定義を作成します。さらに、Hive表のデータ・パスがOracle外部表の場所ファイルに公開されます。

Hive表のメタデータを読み取る場合、Oracle SQL Connector for HDFSでは、HiveのJARファイルがHADOOP_CLASSPATH変数に含まれる必要があります。つまり、Hiveクライアントが機能しているコンピュータにOracle SQL Connector for HDFSをインストールしてこれが稼働している必要があります。

Hive構成ディレクトリをHADOOP_CLASSPATH環境変数に追加したことを確認します。Hiveクライアントが正しく機能している必要があります。

Hive管理表の場合、データ・パスはウェアハウス・ディレクトリから始まります。

Hive外部表の場合、HDFSの外部の場所からのデータ・パスは、Oracle外部表の場所ファイルに公開されます。表の作成時に外部の場所が定義されるかどうかをHiveは確認しないため、Hive外部表にはデータがありません。Hive表が空の場合、1つの場所ファイルが公開されますが、ヘッダーのみが含まれデータのURIはありません。

Oracle外部表は、「動作中」のHive表ではありません。Hive表が変更される場合、ExternalTableツールを使用して、データを公開するか、新しい外部表を作成する必要があります。

2.5.3.1 Hive表の要件

Oracle SQL Connector for HDFSは、ROW FORMAT DELIMITED句とFILE FORMAT TEXTFILE句を使用して定義される、パーティション化されていないHive表をサポートします。Hive管理表とHive外部表はどちらもサポートされます。

Hive表は、バケット化される場合とされない場合があります。Hive 0.7.1 (CDH3)のすべてのプリミティブ型とDECIMALおよびTIMESTAMP型の表の列がサポートされます。

2.5.3.2 必須プロパティ

Hive表のソースには、次のプロパティが必要です。

  • oracle.hadoop.exttab.tableName

  • oracle.hadoop.exttab.defaultDirectory

  • oracle.hadoop.exttab.sourceType=hive

  • oracle.hadoop.exttab.hive.tableName

  • oracle.hadoop.exttab.hive.databaseName

  • oracle.hadoop.connection.url

  • oracle.hadoop.connection.user

このデータソースに使用されるプロパティの説明については、「Oracle SQL Connector for HDFSの構成」を参照してください。

2.5.3.3 オプションのプロパティ

Hive表のソースの場合、次のプロパティはオプションです。

  • oracle.hadoop.exttab.locationFileCount

2.5.3.4 Hive表のXMLファイルのプロパティの定義

例2-4に、Hive表の記述に使用可能なすべてのプロパティを含むXMLテンプレートを示します。このテンプレートを使用するには、テキスト・ファイルにカット・アンド・ペーストし、適切な値を入力してHive表を記述し、不要なオプション・プロパティを削除します。XMLテンプレートの詳細は、「構成ファイルの作成」を参照してください。

例2-4 Hive表のプロパティを使用したXMLテンプレート

<?xml version="1.0"?>

<!-- Required Properties -->

<configuration>
  <property>
    <name>oracle.hadoop.exttab.tableName</name>
    <value>value</value>
  </property>
  <property>
    <name>oracle.hadoop.exttab.defaultDirectory</name>
    <value>value</value>
  </property>
  <property>
    <name>oracle.hadoop.exttab.sourceType</name>
    <value>hive</value>
  </property>
  <property>
    <name>oracle.hadoop.exttab.hive.tableName</name>
    <value>value</value>
  </property>
  <property>
    <name>oracle.hadoop.exttab.hive.databaseName</name>
    <value>value</value>
  </property>
  <property>
    <name>oracle.hadoop.connection.url</name>
    <value>value</value>
  </property>
  <property>
    <name>oracle.hadoop.connection.user</name>
    <value>value</value>
  </property>

<!-- Optional Properties -->

  <property>
    <name>oracle.hadoop.exttab.locationFileCount</name>
    <value>value</value>
  </property>
</configuration>

2.5.3.5

例2-5では、SALES_HIVE_XTABという外部表を作成して、Hive表からデータを読み取ります。この例では、XMLファイルではなく、コマンドラインのすべてのプロパティを定義しています。

例2-5 Hive表の外部表の定義

Oracle Databaseを実行しているオペレーティング・システム・ユーザー(通常はoracleユーザー)としてログインし、ファイルシステム・ディレクトリを作成します。

$ mkdir /scratch/sales_hive_dir

データベース・ディレクトリを作成し、そのディレクトリに対する読取りアクセス権と書込みアクセス権を付与します。

$ sqlplus / as sysdba
SQL> CREATE OR REPLACE DIRECTORY sales_hive_dir AS '/scratch/sales_hive_dir'
SQL> GRANT READ, WRITE ON DIRECTORY sales_hive_dir TO scott;

外部表を作成します。

hadoop jar OSCH_HOME/jlib/orahdfs.jar \
oracle.hadoop.exttab.ExternalTable \
-D oracle.hadoop.exttab.tableName=SALES_HIVE_XTAB \
-D oracle.hadoop.exttab.sourceType=hive \
-D oracle.hadoop.exttab.locationFileCount=2 \
-D oracle.hadoop.exttab.hive.tableName=sales_country_us \
-D oracle.hadoop.exttab.hive.databaseName=salesdb \
-D oracle.hadoop.exttab.defaultDirectory=SALES_HIVE_DIR \
-D oracle.hadoop.connection.url=jdbc:oracle:thin:@//myhost:1521/myservicename \
-D oracle.hadoop.connection.user=SCOTT \
-createTable

2.5.4 デリミタ付きテキスト・ファイルからの外部表の作成

Oracle SQL Connector for HDFSは、列の数、テキスト・デリミタおよびオプションで外部表の列名を指定する構成プロパティを使用して、デリミタ付きテキスト・ファイルの外部表定義を作成します。外部表のテキスト列はすべてVARCHAR2になります。列名を指定しない場合、デフォルトでC1からCnに設定されます。nは、oracle.hadoop.exttab.columnCountプロパティで指定される列の数です。

2.5.4.1 必須プロパティ

デリミタ付きテキストのソースの場合、次のプロパティが必要です。

  • oracle.hadoop.exttab.tableName

  • oracle.hadoop.exttab.defaultDirectory

  • oracle.hadoop.exttab.dataPaths

  • oracle.hadoop.exttab.columnCountまたはoracle.hadoop.exttab.columnNames

  • oracle.hadoop.connection.url

  • oracle.hadoop.connection.user

このデータソースに使用されるプロパティの説明については、「Oracle SQL Connector for HDFSの構成」を参照してください。

2.5.4.2 オプションのプロパティ

デリミタ付きテキストのソースの場合、次のプロパティはオプションです。

  • oracle.hadoop.exttab.recordDelimiter

  • oracle.hadoop.exttab.fieldTerminator

  • oracle.hadoop.exttab.initialFieldEncloser

  • oracle.hadoop.exttab.trailingFieldEncloser

  • oracle.hadoop.exttab.locationFileCount

2.5.4.3 デリミタ付きテキスト・ファイルのXMLファイルのプロパティの定義

例2-6に、デリミタ付きテキスト・ファイルの記述に使用可能なすべてのプロパティを含むXMLテンプレートを示します。このテンプレートを使用するには、テキスト・ファイルにカット・アンド・ペーストし、適切な値を入力してデータ・ファイルを記述し、不要なオプション・プロパティを削除します。XMLテンプレートの詳細は、「構成ファイルの作成」を参照してください。

例2-6 デリミタ付きテキスト・ファイルのプロパティを使用したXMLテンプレート

<?xml version="1.0"?>

<!-- Required Properties -->

<configuration>
  <property>
    <name>oracle.hadoop.exttab.tableName</name>
    <value>value</value>
  </property>
  <property>
    <name>oracle.hadoop.exttab.defaultDirectory</name>
    <value>value</value>
  </property>
  <property>
    <name>oracle.hadoop.exttab.dataPaths</name>
    <value>value</value>
  </property>

<!-- Use either columnCount or columnNames -->

  <property>
    <name>oracle.hadoop.exttab.columnCount</name>
    <value>value</value>
  </property>
  <property>
    <name>oracle.hadoop.exttab.columnNames</name>
    <value>value</value>
  </property>

  <property>
    <name>oracle.hadoop.connection.url</name>
    <value>value</value>
  </property>
  <property>
    <name>oracle.hadoop.connection.user</name>
    <value>value</value>
  </property>

<!-- Optional Properties -->

  <property>
    <name>oracle.hadoop.exttab.recordDelimiter</name>
    <value>value</value>
  </property>
  <property>
    <name>oracle.hadoop.exttab.fieldTerminator</name>
    <value>value</value>
  </property>
  <property>
    <name>oracle.hadoop.exttab.initialFieldEncloser</name>
    <value>value</value>
  </property>
  <property>
    <name>oracle.hadoop.exttab.trailingFieldEncloser</name>
    <value>value</value>
  </property>
  <property>
    <name>oracle.hadoop.exttab.locationFileCount</name>
    <value>value</value>
  </property>
</configuration>

2.5.4.4

例2-7では、SALES_DT_XTABという外部表をデリミタ付きテキスト・ファイルから作成します。

例2-7 デリミタ付きテキスト・ファイルの外部表の定義

Oracle Databaseを実行しているオペレーティング・システム・ユーザー(通常はoracleユーザー)としてログインし、ファイルシステム・ディレクトリを作成します。

$ mkdir /scratch/sales_dt_dir

データベース・ディレクトリを作成し、そのディレクトリに対する読取りアクセス権と書込みアクセス権を付与します。

$ sqlplus / as sysdba
SQL> CREATE OR REPLACE DIRECTORY sales_dt_dir AS '/scratch/sales_dt_dir'
SQL> GRANT READ, WRITE ON DIRECTORY sales_dt_dir TO scott;

外部表を作成します。

hadoop jar OSCH_HOME/jlib/orahdfs.jar \
oracle.hadoop.exttab.ExternalTable \
-D oracle.hadoop.exttab.tableName=SALES_DT_XTAB \
-D oracle.hadoop.exttab.locationFileCount=2 \
-D oracle.hadoop.exttab.dataPaths="hdfs:///user/scott/olh_sales/*.dat" \
-D oracle.hadoop.exttab.columnCount=10 \
-D oracle.hadoop.exttab.defaultDirectory=SALES_DT_DIR \
-D oracle.hadoop.connection.url=jdbc:oracle:thin:@//myhost:1521/myservicename \
-D oracle.hadoop.connection.user=SCOTT \
-createTable

2.5.5 SQLでの外部表の作成

Oracle SQL Connector for HDFSに対する外部表を手動で作成できます。たとえば、次の手順では、ExternalTable -createTableコマンドで公開されない外部表の構文を使用できます。

追加の構文は、データ・ポンプ形式ファイルではサポートされません。

外部表を手動で作成するには、次の手順を実行します。 

  1. -createTable --noexecuteコマンドを使用して、外部表DDLを生成します。

  2. DDLに必要な変更をすべて行います。

  3. ステップ2のDDLを実行して、Oracle Databaseに表定義を作成します。

  4. ExternalTable -publishコマンドを使用して、外部表の場所ファイルにデータのURIを公開します。

2.6 HDFSデータ・パスの公開

-createTableコマンドは、Oracle Databaseにメタデータを作成し、HDFSのデータ・ファイルのUniversal Resource Identifier (URI)を場所ファイルに移入します。ただし、次のような場合、外部表の作成とは別のステップとしてURIを公開します。

  • 既存の外部表に新しいデータを公開する場合。

  • ExternalTableツールを使用せずに、外部表を手動で作成した場合。

どちらの場合も、-publishを指定したExternalTableコマンドを使用して、HDFSのデータ・ファイルのURIを外部表の場所ファイルに移入できます。「場所ファイルの管理」を参照してください。

公開用のExternalTable構文

hadoop jar OSCH_HOME/jlib/orahdfs.jar \
oracle.hadoop.exttab.ExternalTable \
[-conf config_file]... \
[-D property=value]... \
-publish [--noexecute]

ExternalTableコマンドライン・ツールの例

例2-8では、HADOOP_CLASSPATHを設定し、例2-3で作成された外部表にHDFSのデータ・パスを公開します。この環境変数の設定の詳細は、「システムへのOracle SQL Connector for HDFSの構成」を参照してください。

例2-8 データ・ポンプ形式ファイルの外部表へのHDFSデータ・パスの公開

この例ではBashシェルが使用されます。

$ export HADOOP_CLASSPATH="OSCH_HOME/jlib/*"
$ hadoop jar OSCH_HOME/jlib/orahdfs.jar oracle.hadoop.exttab.ExternalTable \
-D oracle.hadoop.exttab.tableName=SALES_DP_XTAB \
-D oracle.hadoop.exttab.sourceType=datapump \
-D oracle.hadoop.exttab.dataPaths=hdfs:/user/scott/data/ \
-D oracle.hadoop.connection.url=jdbc:oracle:thin:@//myhost:1521/myservicename \
-D oracle.hadoop.exttab.connection.user=scott -publish

この例の詳細は次のとおりです。

  • OSCH_HOMEは、Oracle SQL Connector for HDFSのインストール・ディレクトリのフル・パスです。

  • SALES_DP_XTABは、例2-3で作成された外部表です。

  • hdfs:/user/scott/data/は、HDFSデータの場所です。

  • @myhost:1521/orclは、データベース接続文字列です。

2.7 場所ファイルのメタデータと内容のリスト

-listLocationsコマンドは、場所ファイルのメタデータと内容を表示できるデバッグおよび診断ユーティリティです。このコマンドを使用すると、Oracle外部表の場所ファイルの完全性を確認できます。

このコマンドを使用するには次のプロパティが必要です。

-listLocationsのExternalTable構文

hadoop jar OSCH_HOME/jlib/orahdfs.jar \
oracle.hadoop.exttab.ExternalTable \
[-conf config_file]... \ 
[-D property=value]... \
-listLocations [--details]

2.8 外部表の説明

-getDDLコマンドは、既存の外部表の定義を出力するデバッグおよび診断ユーティリティです。このコマンドは、PL/SQL DBMS_METADATAパッケージのセキュリティ・モデルに従います。このパッケージを使用すると、権限のないユーザーが各自のオブジェクトのメタデータを参照できます。

このコマンドを使用するには次のプロパティが必要です。

-getDDLのExternalTable構文

hadoop jar OSCH_HOME/jlib/orahdfs.jar \
oracle.hadoop.exttab.ExternalTable \
[-conf config_file]... \
[-D property=value]... \
-getDDL

2.9 ExternalTableツールで生成された外部表の詳細

データへのアクセスに外部表が使用されるため、外部表のすべての機能と制限が適用されます。問合せは、自動ロード・バランシングと並列で実行されます。ただし、外部表では、更新、挿入および削除操作は許可されず、索引を作成できません。外部表にアクセスすると、表の完全スキャンが常に実行されます。

Oracle SQL Connector for HDFSでは、ORACLE_LOADERアクセス・ドライバが使用されます。hdfs_streamプリプロセッサ・スクリプト(Oracle SQL Connector for HDFSに付属)は、入力データをORACLE_LOADERが処理できる形式に変更します。


関連項目:

  • 外部表の詳細は、『Oracle Database管理者ガイド』

  • 外部表、パフォーマンス・ヒント、およびORACLE_LOADERアクセス・ドライバを使用する際の制限事項の詳細は、『Oracle Databaseユーティリティ』


2.9.1 場所ファイルとは

場所ファイルは、外部表のLOCATION句で指定されるファイルです。Oracle SQL Connector for HDFSは、データ・ファイルのUniversal Resource Identifier (URI)のみを含む場所ファイルを作成します。データ・ファイルには、HDFSに格納されるデータが含まれます。

2.9.2 並列処理の有効化

外部表で並列処理を有効にするには、外部表のLOCATION句で複数のファイルを指定する必要があります。ファイルの数(並列度とも呼ばれる)は、表の読取り時に外部表で開始される子プロセスの数を決定します。子プロセスのアイドル状態を回避するには、並列度をデータ・ファイルの数と同程度に少なくすることが理想的です。

2.9.3 場所ファイルの管理

Oracle SQL Connector for HDFSのコマンドライン・ツールExternalTableは、外部表の場所ファイルを管理します。場所ファイルの管理には、次のような操作があります。

  • 名前の競合の確認後、データベース・ディレクトリに新しい場所ファイルを生成

  • データベース・ディレクトリの既存の場所ファイルを必要に応じて削除

  • データのURIを新しい場所ファイルに公開

  • 新しい場所ファイルに一致するように外部表のLOCATION句を変更

サポート対象データソースの場所ファイルの管理については、次のトピックで説明します。

データ・ポンプ・ファイル形式

データ・ポンプ・ファイルにアクセスするには、ORACLE_LOADERアクセス・ドライバが必要です。このドライバでは、各場所ファイルがHDFSの単一のデータ・ポンプ・ファイルに対応する必要があります。空の場所ファイルは許可されないため、外部表の場所ファイルの数は、HDFSのデータ・ファイルの数と厳密に一致する必要があります。

Oracle SQL Connector for HDFSは、場所ファイルの管理を自動的に引き継ぎ、外部表の場所ファイルの数とHDFSのデータ・ポンプ・ファイルの数が同じになるようにします。

HDFSのデリミタ付きファイルとHive表

ORACLE_LOADERアクセス・ドライバには、場所ファイルの数に関する制限はありません。各場所ファイルは、HDFSの1つ以上のデータ・ファイルに対応できます。外部表の場所ファイルの数は、oracle.hadoop.exttab.locationFileCount構成プロパティで示されます。

「接続プロパティ」を参照してください。

2.9.4 場所ファイルの名前

場所ファイル名の形式は次のようになります。

osch-timestamp-number-n

この構文の詳細は次のとおりです。

  • timestampの形式はyyyyMMddhhmmssです。たとえば、2012年10月17日の10:39:41の場合、20121017103941となります。

  • numberは、異なる表の間で場所ファイル名の競合が起こらないように使用されるランダムな数字です。

  • nは、同じ表の場所ファイルで名前の競合が起こらないように使用される索引です。

たとえば、osch-20121017103941-6807-1のようになります。

2.10 Oracle SQL Connector for HDFSの構成

-Dオプションを指定したコマンドラインでExternalTableツールに構成プロパティを渡すか、構成ファイルを作成してから-confオプションを指定したコマンドラインでそのファイルを渡すことができます。これらのオプションは、実行するコマンド(-createTable-publish-listLocationsまたは-getDDL)の前に置く必要があります。

たとえば、次のコマンドではexample.xmlという名前の構成ファイルを使用します。

hadoop jar OSCH_HOME/jlib/orahdfs.jar \
       oracle.hadoop.exttab.ExternalTable \
       -conf /home/oracle/example.xml \
       -createTable

「ExternalTableコマンドライン・ツールの構文」を参照してください。

2.10.1 構成ファイルの作成

構成ファイルは、次のような非常に単純な構造のXMLドキュメントです。

<?xml version="1.0"?>
<configuration>
  <property>
    <name>property</name>
    <value>value</value>
  </property>
     .
     .
     .
</configuration>

例2-9に構成ファイルを示します。これらのプロパティの説明については、「Oracle SQL Connector for HDFS構成プロパティ・リファレンス」を参照してください。

例2-9 Oracle SQL Connector for HDFSの構成ファイル

<?xml version="1.0"?>
<configuration>
  <property>
    <name>oracle.hadoop.exttab.tableName</name>
    <value>SH.SALES_EXT_DIR</value>
  </property>
  <property>
    <name>oracle.hadoop.exttab.dataPaths</name>
    <value>/data/s1/*.csv,/data/s2/*.csv</value>
  </property>
  <property>
    <name>oracle.hadoop.exttab.dataCompressionCodec</name>
    <value>org.apache.hadoop.io.compress.DefaultCodec</value>
  </property>
  <property>
    <name>oracle.hadoop.connection.url</name>
    <value>jdbc:oracle:thin:@//myhost:1521/myservicename</value>
  </property>
  <property>
    <name>oracle.hadoop.connection.user</name>
    <value>SH</value>
  </property>
</configuration>

2.10.2 Oracle SQL Connector for HDFS構成プロパティ・リファレンス

次に、ExternalTableコマンドライン・ツールで使用される構成プロパティの一覧を示します。プロパティは次のカテゴリに編成されます。

一般的なプロパティ 

oracle.hadoop.exttab.columnCount

デリミタ付きテキスト・ファイルから作成される外部表の列の数。列名はC1、C2、... Cnのように設定されます。nはこのプロパティの値です。

このプロパティは、oracle.hadoop.exttab.columnNamesが設定される場合は無視されます。

oracle.hadoop.exttab.sourceType=textの場合、-createTableコマンドでこのプロパティを使用します。

デリミタ付きテキスト・ファイルから外部表を作成する場合、次のいずれかのプロパティを設定する必要があります。

  • oracle.hadoop.exttab.columnNames

  • oracle.hadoop.exttab.columnCount

oracle.hadoop.exttab.columnNames

デリミタ付きテキスト・ファイルから作成される外部表の列名のカンマ区切りリスト。このプロパティを設定しない場合、列名はC1、C2、... Cnのようになります。noracle.hadoop.exttab.columnCountプロパティの値です。

列名はSQL識別子として読み取られます。引用符で囲まれていない値は大文字に変換され、二重引用符で囲まれている値は入力したとおりに使用されます。

oracle.hadoop.exttab.sourceType=textの場合、-createTableコマンドでこのプロパティを使用します。

デリミタ付きテキスト・ファイルから外部表を作成する場合、次のいずれかのプロパティを設定する必要があります。

  • oracle.hadoop.exttab.columnNames

  • oracle.hadoop.exttab.columnCount

oracle.hadoop.exttab.dataCompressionCodec

データ・ファイルの圧縮に使用される圧縮コーデック・クラスの名前。このプロパティは、データ・ファイルを圧縮する場合に指定します。オプション。

このプロパティは、org.apache.hadoop.io.compress.CompressionCodecインタフェースを実装する圧縮コーデックのクラス名を指定します。このコーデックはすべてのデータ・ファイルに適用されます。

Hadoopでは、次を含む複数の標準コーデックを使用できます。

  • bzip2: org.apache.hadoop.io.compress.BZip2Codec

  • gzip: org.apache.hadoop.io.compress.GzipCodec

デフォルト値: なし

oracle.hadoop.exttab.dataPaths

完全修飾されたHDFSパスのカンマ区切りリスト。このパラメータを使用すると、パスの指定に特別なパターン一致文字を使用して、入力を制限できます。表2-1を参照してください。-createTableおよび-publicコマンドでデータ・ポンプ・ファイルまたはデリミタ付きテキスト・ファイルを使用する場合、このプロパティは必須です。Hiveデータソースの場合、このプロパティは無視されます。

たとえば、/data/s2/内のすべてのファイルと、/data/s7//data/s8/および/data/s9/内のCSVファイルのみを選択するには、次の式を入力します。

/data/s2/,/data/s[7-9]/*.csv

外部表は、リストされたすべてのファイルおよびリストされたディレクトリ内のすべてのファイルに含まれるデータにアクセスします。これらのファイルで1つのデータセットを構成します。

データセットには、圧縮ファイルを含めることも、非圧縮ファイルを含めることもできますが、両方を含めることはできません。

表2-1 パターン一致文字

文字 説明

?

任意の1文字に一致します。

*


0文字以上の文字に一致します。

[abc]

文字セット{a, b, c}内の1文字に一致します。

[a-b]

文字の範囲{a...b}内の1文字に一致します。文字aは、b以下である必要があります。

[^a]

文字セットまたは範囲{a}外の1文字に一致します。カレット(^)は、左カッコの直後に付ける必要があります。

\c

文字cの特別な意味を無効にします。バックスラッシュ(\)は、エスケープ文字です。

{ab\,cd}

文字列セット{ab, cd}内の文字列に一致します。カンマの前にエスケープ文字(\)を付けて、パス区切りとしてのカンマの意味を無効にします。

{ab\,c{de\,fh}}

文字列セット{ab, cde, cfh}内の文字列に一致します。カンマの前にエスケープ文字(\)を付けて、パス区切りとしてのカンマの意味を無効にします。


oracle.hadoop.exttab.dataPathFilter

パス・フィルタ・クラス。Hiveデータソースの場合、このプロパティは無視されます。

Oracle SQL Connector for HDFは、デフォルトのフィルタを使用して、先頭がドットまたはアンダースコアの隠しファイルを除外します。このプロパティを使用して別のパス・フィルタ・クラスを指定する場合、デフォルトのフィルタの他にも使用するフィルタが機能します。そのため、使用するフィルタで受け入れられる表示ファイルのみが考慮されます。

oracle.hadoop.exttab.defaultDirectory

Oracle外部表のデフォルトのディレクトリを指定します。このディレクトリは、ディレクトリ・オブジェクトを明示的に指定しない入力ファイルおよび出力ファイルのすべてに使用されます。

有効な値: 既存のデータベース・ディレクトリの名前

引用符で囲まれていない名前は大文字に変更されます。二重引用符で囲まれている名前は変更されないため、大文字と小文字を区別する場合は、二重引用符で囲まれた名前を使用します。一重引用符で囲まれている名前は、デフォルトのディレクトリ名に使用できません。

-createTableコマンドではこのプロパティが必要です。

oracle.hadoop.exttab.fieldTerminator

oracle.hadoop.exttab.sourceType=textの場合、外部表のフィールドの終端文字を指定します。オプション。

デフォルト値: , (カンマ)

有効な値: 次のいずれかの形式の文字列

  • 1つ以上の規則正しい出力可能文字(\uによる開始は不可)。たとえば、\tはタブを表します。

  • \uHHHH形式の1つ以上のエンコード文字。HHHHは、UTF-16の文字をビッグ・エンディアンの16進で表したものです。たとえば、\u0009はタブを表します。16進数の桁は大文字と小文字を区別しません。

2つの形式を組み合せないでください。

oracle.hadoop.exttab.hive.databaseName

入力データ表を含むHiveデータベースの名前。

oracle.hadoop.exttab.sourceType=hiveの場合、-createTableコマンドでこのプロパティが必要です。

oracle.hadoop.exttab.hive.tableName

既存のHive表の名前。

oracle.hadoop.exttab.sourceType=hiveの場合、-createTableコマンドでこのプロパティが必要です。

oracle.hadoop.exttab.initialFieldEncloser

デリミタ付きテキスト・ファイルから作成される外部表の開始フィールド囲み文字を指定します。オプション。

デフォルト値: null。外部表定義に囲み文字は指定されません。

oracle.hadoop.exttab.sourceType=textの場合、-createTableコマンドでこのプロパティを使用します。

有効な値: 次のいずれかの形式の文字列

  • 1つ以上の規則正しい出力可能文字(\uによる開始は不可)

  • \uHHHH形式の1つ以上のエンコード文字。HHHHは、UTF-16の文字をビッグ・エンディアンの16進で表したものです。16進数の桁は大文字と小文字を区別しません。

2つの形式を組み合せないでください。

oracle.hadoop.exttab.locationFileCount

外部表の場所ファイルの目的の数を指定します。データ・ポンプ・ファイル以外のファイルにのみ適用可能です。

デフォルト値: 4

データ・ファイルがデータ・ポンプ形式の場合、このプロパティは無視されます。それ以外は、場所ファイルの数は次のいずれか少ない方になります。

  • データ・ファイルの数

  • このプロパティの値

少なくとも1つの場所ファイルが作成されます。

場所ファイルの数の詳細は、「並列処理の有効化」を参照してください。

oracle.hadoop.exttab.logDirectory

ログ・ファイル、不正なファイルおよび廃棄ファイルが格納されるデータベース・ディレクトリを指定します。ファイル名は、外部表で使用されるデフォルトの値になります。たとえば、ログ・ファイルの名前は、表名の後に_%p.logが続きます。

これは、-createTableコマンドのオプションのプロパティです。

ファイル名のデフォルトの拡張子を次に示します。

  • ログ・ファイル: log

  • 不正なファイル: bad

  • 廃棄ファイル: dsc

有効な値: 既存のOracleディレクトリ・オブジェクト名。

引用符で囲まれていない名前は大文字になります。引用符で囲まれている名前は変更されません。例2-2に、値が変換される場合の例を示します。

例2-2 引用符で囲まれている値と引用符で囲まれていない値の例

指定される値 解釈される値

my_log_dir:'sales_tab_%p.log '

MY_LOG_DIR/sales_tab_%p.log

'my_log_dir':'sales_tab_%p.log'

my_log_dir/sales_tab_%p.log

"my_log_dir":"sales_tab_%p.log"

my_log_dir/sales_tab_%p.log


oracle.hadoop.exttab.preprocessorDirectory

プリプロセッサのデータベース・ディレクトリを指定します。ファイルシステム・ディレクトリには、hdfs_streamスクリプトが含まれる必要があります。

デフォルト値: OSCH_BIN_PATH

プリプロセッサのディレクトリは、外部表のPREPROCESSOR句で使用されます。

oracle.hadoop.exttab.recordDelimiter

デリミタ付きテキスト・ファイルから作成される外部表のレコード・デリミタを指定します。オプション。

デフォルト値: \n

oracle.hadoop.exttab.sourceType=textの場合、-createTableコマンドでこのプロパティを使用します。

有効な値: 次のいずれかの形式の文字列

  • 1つ以上の規則正しい出力可能文字(\uによる開始は不可)

  • \uHHHH形式の1つ以上のエンコード文字。HHHHは、UTF-16の文字をビッグ・エンディアンの16進で表したものです。16進数の桁は大文字と小文字を区別しません。

2つの形式を組み合せないでください。

oracle.hadoop.exttab.sourceType

ソース・ファイルのタイプを指定します。

有効な値は、datapumphiveおよびtextです。

デフォルト値: text

-createTable操作と-publish操作の場合、このパラメータの値が必要です。

oracle.hadoop.exttab.tableName

外部表のスキーマで修飾された名前。次の形式で表されます。

schemaName.tableName

schemaNameを省略すると、スキーマ名はデフォルトで接続ユーザー名に設定されます。

デフォルト値: なし

すべての操作で必須のプロパティ。

oracle.hadoop.exttab.trailingFieldEncloser

デリミタ付きテキスト・ファイルから作成される外部表の終了フィールド囲み文字を指定します。オプション。

デフォルト値: null。デフォルトでoracle.hadoop.exttab.initialFieldEncloserの値に設定されます。

oracle.hadoop.exttab.sourceType=textの場合、-createTableコマンドでこのプロパティを使用します。

有効な値: 次のいずれかの形式の文字列

  • 1つ以上の規則正しい出力可能文字(\uによる開始は不可)

  • \uHHHH形式の1つ以上のエンコード文字。HHHHは、UTF-16の文字をビッグ・エンディアンの16進で表したものです。16進数の桁は大文字と小文字を区別しません。

2つの形式を組み合せないでください。

接続プロパティ 

oracle.hadoop.connection.url

次のようなThinスタイル・サービス名形式のデータベース接続文字列を指定します。

jdbc:oracle:thin:@//host_name:port/service_name

サービス名が不明な場合は、特権ユーザーとして次のSQLコマンドを入力します。

SQL> show parameter service

Oracle Walletが外部パスワード・ストアとして構成されている場合、プロパティ値は、ドライバ接頭辞jdbc:oracle:thin:@で始まる必要があり、db_connect_stringは、ウォレットに定義されている資格証明と完全に一致する必要があります。

このプロパティは、他のすべての接続プロパティより優先されます。

デフォルト値: 定義されていません。

有効な値: 1つの文字列

oracle.hadoop.connection.user

Oracle Databaseのログイン名。externalTableツールによって、パスワードの入力が求められます。Oracle Walletを外部パスワード・ストアとして使用する場合を除き、このパラメータは必須です。

デフォルト値: 定義されていません。

有効な値: 1つの文字列

oracle.hadoop.connection.tnsEntryName

tnsnames.oraファイルに定義されたTNSエントリ名を指定します。

このプロパティは、oracle.hadoop.connection.tns_adminプロパティと一緒に使用されます。

デフォルト値: 定義されていません。

有効な値: 1つの文字列

oracle.hadoop.connection.tns_admin

tnsnames.oraファイルを格納するディレクトリを指定します。データベース接続文字列でTransparent Network Substrate (TNS)のエントリ名を使用するようにこのプロパティを定義します。TNSNamesをJDBC Thinドライバとともに使用する場合は、このプロパティまたはJavaのoracle.net.tns_adminプロパティを設定する必要があります。両方のプロパティを設定した場合、このプロパティがoracle.net.tns_adminより優先されます。

Oracle Walletを外部パスワード・ストアとして使用する場合、このプロパティを設定する必要があります。「oracle.hadoop.connection.wallet_location」を参照してください。

デフォルト値: Java oracle.net.tns_adminシステム・プロパティの値

有効な値: 1つの文字列

oracle.hadoop.connection.wallet_location

接続の資格証明が格納されるOracle Walletディレクトリへのファイル・パス。

デフォルト値: 定義されていません。

有効な値: 1つの文字列

Oracle Walletを外部パスワード・ストアとして使用する場合、次のパラメータを設定します。

  • oracle.hadoop.connection.wallet_location

  • oracle.hadoop.connection.url またはoracle.hadoop.connection.tnsEntryName

  • oracle.hadoop.connection.tns_admin

2.11 HDFS内のデータの問合せのパフォーマンスに関するヒント

大量のデータを処理する場合、並列処理はきわめて重要です。外部表を使用する場合、必ず次のSQLコマンドを使用して並列問合せを有効にします。

ALTER SESSION ENABLE PARALLEL QUERY;

Oracle SQL Connector for HDFSによって作成された外部ファイルからOracle Databaseにデータをロードする前に、並列DDLを有効にします。

ALTER SESSION ENABLE PARALLEL DDL;

既存のデータベース表にデータを挿入する前に、次のSQLコマンドを使用して並列DMLを有効にします。

ALTER SESSION ENABLE PARALLEL DML;

APPENDPQ_DISTRIBUTEなどのヒントにより、データ挿入時のパフォーマンスも向上します。