Oracle® Big Data Connectors ユーザーズ・ガイド

リリース2 (2.0)

B71710-02(原本部品番号:E36961-03)

目次

タイトルおよび著作権情報

はじめに

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- テキストの表記規則

- 構文の表記規則

Oracle Big Data Connectorsユーザーズ・ガイドのこのリリースでの変更点

- Oracle Big Data Connectorsリリース2 (2.0)の変更点

1 Oracle Big Data Connectorsを使用する前に

- 1.1 Oracle Big Data Connectorsについて

- 1.2 ビッグ・データの概念とテクノロジ

- 1.2.1 MapReduceとは

- 1.2.2 Apache Hadoopとは

- 1.3 Oracle Big Data Connectorsソフトウェアのダウンロード

- 1.4 Oracle SQL Connector for Hadoop Distributed File Systemの設定

- 1.4.1 ソフトウェア要件

- 1.4.2 Hadoopのインストールと構成

- 1.4.3 Oracle SQL Connector for HDFSのインストール

- 1.4.4 Oracle SQL Connector for HDFSに対するユーザー・アクセス権の付与

- 1.5 Oracle Loader for Hadoopの設定

- 1.5.1 ソフトウェア要件

- 1.5.2 Oracle Loader for Hadoopのインストール

- 1.6 Oracle Data Integrator Application Adapter for Hadoopの設定

- 1.6.1 システム要件および動作要件

- 1.6.2 テクノロジ固有の要件

- 1.6.3 Oracle Data Integrator Application Adapter for Hadoopの場所

- 1.6.4 トポロジの設定

- 1.7 Oracle R Connector for Hadoopの設定

- 1.7.1 Hadoopへのソフトウェアのインストール

- 1.7.1.1 サードパーティHadoopクラスタのソフトウェア要件

- 1.7.1.2 HadoopクラスタへのSqoopのインストール

- 1.7.1.3 HadoopクラスタへのHiveのインストール

- 1.7.1.4 HadoopクラスタへのRのインストール

- 1.7.1.5 HadoopクラスタへのORCHパッケージのインストール

- 1.7.2 追加のRパッケージのインストール

- 1.7.3 Rユーザーへのリモート・クライアント・アクセスの提供

- 1.7.3.1 リモート・クライアント・アクセスのソフトウェア要件

- 1.7.3.2 Hadoopクライアントとしてのサーバーの構成

- 1.7.3.3 HadoopクライアントへのSqoopのインストール

- 1.7.3.4 HadoopクライアントへのRのインストール

- 1.7.3.5 HadoopクライアントへのORCHパッケージのインストール

- 1.7.3.6 Oracle R Enterpriseクライアントのパッケージ(オプション)のインストール

2 Oracle SQL Connector for Hadoop Distributed File System

- 2.1 Oracle SQL Connector for HDFSについて

- 2.2 外部表について

- 2.2.1 場所ファイルとは

- 2.2.2 並列処理の有効化

- 2.2.3 場所ファイルの管理

- 2.2.4 場所ファイルの名前

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

- 2.3.1 外部表について

- 2.3.2 HADOOP_CLASSPATHの変更

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

- 2.4 外部表の作成

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

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

- 2.4.2.1 必須プロパティ

- 2.4.2.2 オプションのプロパティ

- 2.4.2.3 例

- 2.4.3 Hive表からの外部表の作成

- 2.4.3.1 Hive表の要件

- 2.4.3.2 必須プロパティ

- 2.4.3.3 オプションのプロパティ

- 2.4.3.4 例

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

- 2.4.4.1 必須プロパティ

- 2.4.4.2 オプションのプロパティ

- 2.4.4.3 例

- 2.4.5 SQLでの外部表の作成

- 2.5 HDFSデータ・パスの公開

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

- 2.7 外部表の説明

- 2.8 HDFS内のデータの問合せ

- 2.9 Oracle SQL Connector for HDFSの構成

- 2.9.1 構成ファイルの作成

- 2.9.2 構成プロパティ

3 Oracle Loader for Hadoop

- 3.1 Oracle Loader for Hadoopとは

- 3.2 Oracle Loader for Hadoopの使用方法

- 3.2.1 InputFormatの実装

- 3.2.1.1 HiveToAvroInputFormat

- 3.2.1.2 DelimitedTextInputFormat

- 3.2.1.3 RegexInputFormat

- 3.2.1.4 AvroInputFormat

- 3.2.1.5 KVAvroInputFormat

- 3.2.2 loaderMapドキュメントの作成

- 3.2.2.1 loaderMapドキュメントの例

- 3.2.3 表のメタデータへのアクセス

- 3.2.3.1 OraLoaderMetadataユーティリティの実行

- 3.2.4 OraLoaderの起動

- 3.2.5 Oracle Databaseへのファイルのロード(オフライン・ロードのみ)

- 3.2.5.1 デリミタ付きテキスト・ファイルからOracle Databaseへのロード

- 3.3 OraLoader起動時の出力モード

- 3.3.1 JDBC出力

- 3.3.2 Oracle OCIダイレクト・パス出力

- 3.3.3 デリミタ付きテキスト出力

- 3.3.4 Oracle Data Pump出力

- 3.4 エラー処理と診断

- 3.4.1 拒否されたレコードの不正なファイルへのロギング

- 3.4.2 ジョブの拒否制限の設定

- 3.5 パーティション表にデータをロードする場合のロード・バランシング

- 3.5.1 サンプリング機能の使用方法

- 3.5.2 ロード・バランシングとサンプリング動作のチューニング

- 3.5.2.1 ロード・バランシングをチューニングするプロパティ

- 3.5.2.2 サンプリング動作をチューニングするプロパティ

- 3.5.3 Oracle Loader for Hadoopは常にサンプラのパーティション化スキームを使用するのか

- 3.5.4 サンプリング機能のプロパティの値が無効な場合

- 3.5.5 ロード・バランシング機能に関する主な構成プロパティ

- 3.6 OraLoaderの構成プロパティ

- 3.6.1 主なジョブ構成プロパティ

- 3.6.2 一般的なプロパティ

- 3.7 Oracle Loader for Hadoopの使用例

- 3.8 ターゲット表の特性

- 3.8.1 サポートされるデータ型

- 3.8.2 サポートされるパーティション化方法

- 3.9 ローダー・マップXMLスキーマ定義

- 3.10 構成プロパティのXMLドキュメント

- 3.11 同梱されているソフトウェアのサードパーティ・ライセンス

- 3.11.1 Apache Licensed Code

- 3.11.2 Apache Avro 1.6.3

- 3.11.3 Apache Commons Mathematics Library 2.2

- 3.11.4 Jackson JSON 1.8.8

4 Oracle Data Integrator Application Adapter for Hadoop

- 4.1 概要

- 4.1.1 概念

- 4.1.2 ナレッジ・モジュール

- 4.1.3 セキュリティ

- 4.2 トポロジの設定

- 4.2.1 ファイル・データソースの設定

- 4.2.2 Hiveデータソースの設定

- 4.2.3 Hadoopジョブを実行するためのOracle Data Integratorエージェントの設定

- 4.2.4 ローカル・エージェントでHadoopジョブを実行するためのOracle Data Integrator Studioの構成

- 4.3 統合プロジェクトの設定

- 4.4 HiveモデルのリバースエンジニアリングからのOracle Data Integratorモデルの作成

- 4.4.1 モデルの作成

- 4.4.2 Hive表のリバースエンジニアリング

- 4.5 インタフェースの設計

- 4.5.1 ファイルからHiveへのデータのロード

- 4.5.2 Hive内のデータの検証と変換

- 4.5.2.1 IKM Hive Control Append

- 4.5.2.2 CKM Hive

- 4.5.2.3 IKM Hive Transform

- 4.5.3 HiveおよびHDFSからOracle Databaseへのデータのロード

5 Oracle R Connector for Hadoop

- 5.1 Oracle R Connector for Hadoopについて

- 5.2 HDFSファイルへのアクセス

- 5.3 Hiveへのアクセス

- 5.3.1 HiveのORE関数

- 5.3.2 Hiveでサポートされる一般的なR関数

- 5.3.3 Hiveデータ型のサポート

- 5.3.4 Hiveアクセスの使用上の注意

- 5.3.5 例: Oracle R Connector for HadoopへのHive表のロード

- 5.4 Oracle Databaseへのアクセス

- 5.4.1 Oracle Databaseアクセスの使用上の注意

- 5.4.2 Oracle R EnterpriseでOracle R Connector for Hadoopを使用する場合のシナリオ

- 5.5 Oracle R Connector for Hadoopの分析関数

- 5.6 ORCH mapred.configクラス

- 5.7 Oracle R Connector for Hadoopの例とデモ

- 5.7.1 デモの使用方法

- 5.7.2 例の使用方法

- 5.8 Oracle R Connector for Hadoopのセキュリティ上の注意

6 ORCHライブラリ・リファレンス

- 6.1 アルファベット順の関数

- 6.2 カテゴリ別の関数

- 6.2.1 接続

- 6.2.2 データのコピー

- 6.2.3 ファイルの調査

- 6.2.4 MapReduce関数の記述

- 6.2.5 デバッグ・スクリプト

- 6.2.6 Hiveデータの使用方法

- 6.2.7 分析関数の記述

- hadoop.exec

- hadoop.run

- hdfs.attach

- hdfs.cd

- hdfs.cp

- hdfs.describe

- hdfs.download

- hdfs.exists

- hdfs.get

- hdfs.head

- hdfs.id

- hdfs.ls

- hdfs.mkdir

- hdfs.mv

- hdfs.parts

- hdfs.pull

- hdfs.push

- hdfs.put

- hdfs.pwd

- hdfs.rm

- hdfs.rmdir

- hdfs.root

- hdfs.sample

- hdfs.setroot

- hdfs.size

- hdfs.tail

- hdfs.upload

- is.hdfs.id

- orch.connect

- orch.connected

- orch.dbcon

- orch.dbg.lasterr

- orch.dbg.off

- orch.dbg.on

- orch.dbg.output

- orch.dbinfo

- orch.disconnect

- orch.dryrun

- orch.export

- orch.keyval

- orch.keyvals

- orch.pack

- orch.reconnect

- orch.temp.path

- orch.unpack

- orch.version

索引

Oracle® Big Data Connectors

ユーザーズ・ガイド

リリース2 (2.0)

B71710-02(原本部品番号:E36961-03)

2013年2月

Oracle Big Data Connectors (Oracle SQL Connector for Hadoop Distributed File System、Oracle Loader for Hadoop、Oracle Data Integrator Application Adapter for HadoopおよびOracle R Connector for Hadoop)のインストールと使用について説明します。

Oracle Big Data Connectorsユーザーズ・ガイド, リリース2 (2.0)

B71710-02

Copyright © 2011, 2013, Oracle and/or its affiliates.All rights reserved.

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

Cloudera、Cloudera CDHおよびCloudera Managerは、Cloudera, Incの登録商標および商標です。

はじめに

『Oracle Big Data Connectorsユーザーズ・ガイド』では、Oracle Big Data Connectorsのインストール方法と使用方法について説明します。

- Oracle Loader for Hadoop

- Oracle SQL Connector for Hadoop Distributed File System

- Oracle Data Integrator Application Adapter for Hadoop

- Oracle R Connector for Hadoop

対象読者

このドキュメントは、次のユーザーなどのOracle Big Data Connectorsのユーザーを対象としています。

- アプリケーション開発者

- Javaプログラマ

- システム管理者

- データベース管理者

ドキュメントのアクセシビリティについて

Oracleのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)を参照してください。

Oracle Supportへのアクセス

Oracleサポート・サービスでは、My Oracle Supportを通して電子支援サービスを提供しています。詳細情報は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info か、聴覚に障害のあるお客様は (http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs)を参照してください。

関連ドキュメント

詳細は、次のドキュメントを参照してください。

- Oracle Loader for Hadoop Java APIリファレンス

- Oracle Fusion Middleware Oracle Data Integratorアプリケーション・アダプタ・ガイド

テキストの表記規則

このマニュアルでは次の表記規則を使用します。

規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

イタリック体

イタリックは、ユーザーが特定の値を指定するプレースホルダ変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

構文の表記規則

第2章の構文は、次の記号と表記規則を使用するバッカスナウア記法(BNF)の単純なバリエーションで示されます。

記号または規則

説明

[ ]

大カッコは、オプション項目を囲みます。

{ }

中カッコは、選択項目を囲み、そのうち1つのみが必須です。

|

縦線は、大カッコまたは中カッコ内の代替項目を区切ります。

...

省略記号は、先行する構文要素を反復できることを示します。

デリミタ

大カッコ、中カッコおよび縦線以外のデリミタは、記載されているとおりに入力する必要があります。

Oracle Big Data Connectorsユーザーズ・ガイドのこのリリースでの変更点

ここでは、『Oracle Big Data Connectorsユーザーズ・ガイド』の変更点を示します。

Oracle Big Data Connectorsリリース2 (2.0)の変更点

Oracle Big Data Connectorsリリース2 (2.0)の『Oracle Big Data Connectorsユーザーズ・ガイド』の変更点は次のとおりです。

新機能

Oracle Big Data Connectorsは、Apache Hadoopバージョン4 (CDH4)を含むClouderaのディストリビューションをサポートしています。他のサポート対象プラットフォームについては、第1章のそれぞれのコネクタを参照してください。

Oracle Direct Connector for Hadoop Distributed File Systemの名称は、Oracle SQL Connector for Hadoop Distributed File Systemに変更されました。

- Oracle SQL Connector for Hadoop Distributed File System

- Hive表、データ・ポンプ・ファイルまたはデリミタ付きテキスト・ファイルからのOracle Database外部表の自動作成

- 場所ファイルの管理

第2章を参照してください。

- Oracle Loader for Hadoop

- ダイレクト・パス・ロードに関するSockets Direct Protocol (SDP)のサポート

- ユーザー指定の列に対する2番目のソートのサポート

- 正規表現およびOracle NoSQL Databaseの新しい入力形式。AvroレコードInputFormatは、サンプル・コードのかわりにサポートされるコードです。

- 簡略化された日付形式の指定

- 拒否制限の新しいしきい値

- ジョブのレポート作成および診断の改良

第3章を参照してください。

- Oracle R Connector for Hadoop
いくつかの分析アルゴリズムを使用できるようになりました。具体的には、線形回帰、予測用ニューラル・ネットワーク、低ランクの行列因数分解を使用した行列補完、クラスタリング、非負行列因子分解を使用できます。

Oracle R Connector for Hadoopは、HDFSファイルの他にHiveデータソースをサポートします。

Oracle R Connector for Hadoopは、HDFSとOracle Database間でデータを移動できます。Oracle R Enterpriseは、データのこの基本転送には必要ありません。

このリリースの新機能は次のとおりです。

as.ore.*
hadoop.jobs
hdfs.head
hdfs.tail
is.ore.*
orch.connected
orch.dbg.lasterr
orch.evaluate
orch.export.fit
orch.lm
orch.lmf
orch.neural
orch.nmf
orch.nmf.NMFalgo
orch.temp.path
ore.*
predict.orch.lm
print.summary.orch.lm
summary.orch.lm

第5章を参照してください。

非推奨になった機能

次の機能はこのリリースで非推奨になったため、今後のリリースでサポートされません。

- Oracle SQL Connector for Hadoop Distributed File System

- 場所ファイル形式(バージョン1): Oracle Direct Connector for HDFSバージョン1を使用して内容が公開される既存の外部表は、場所ファイル形式の変更に互換性がないため、Oracle SQL Connector for HDFSバージョン2を使用して公開する必要があります。
Oracle SQL Connector for HDFSで新しい場所ファイルが作成される場合、古い場所ファイルは削除されません。

第2章を参照してください。

- oracle.hadoop.hdfs.exttabネームスペース(バージョン1): Oracle SQL Connector for HDFSでは、すべての構成プロパティに対して次の新しいネームスペースが使用されます。

- oracle.hadoop.connection: Oracle Database接続およびWalletのプロパティ

- oracle.hadoop.exttab: その他すべてのプロパティ

第2章を参照してください。

- HDFS_BIN_PATHディレクトリ: プリプロセッサのディレクトリ名はOSCH_BIN_PATHになりました。
「Oracle SQL Connector for Hadoop Distributed File Systemの設定」を参照してください。

- Oracle R Connector for Hadoop

- keyval: キーと値のペアの生成にorch.keyvalを使用します。

- orch.reconnect: orch.dbconによって返される接続オブジェクトを使用する再接続にorch.connectを使用します。

サポート対象外の機能

次の機能はOracleでサポート対象外になりました。

- Oracle Loader for Hadoop

- oracle.hadoop.loader.configuredCounters
第3章を参照してください。

その他の変更点

このリリースでは、次の変更が追加されています。

- Oracle Loader for Hadoop
インストール用のzipアーカイブには、次の2つのキットが含まれています。

- CDH4向けoraloader-2.0.0-2.x86_64.zip

- Apache Hadoop 0.20.2およびCDH3向けoraloader-2.0.0-1.x86_64.zip

「Oracle Loader for Hadoopの設定」を参照してください。

1 Oracle Big Data Connectorsを使用する前に

この章では、Oracle Big Data Connectorsの概要とインストール手順を示し、ユーザーがコネクタにアクセスするのに必要な権限について説明します。

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

- Oracle Big Data Connectorsについて

- ビッグ・データの概念とテクノロジ

- Oracle Big Data Connectorsソフトウェアのダウンロード

- Oracle SQL Connector for Hadoop Distributed File Systemの設定

- Oracle Loader for Hadoopの設定

- Oracle Data Integrator Application Adapter for Hadoopの設定

- Oracle R Connector for Hadoopの設定

1.1 Oracle Big Data Connectorsについて

Oracle Big Data Connectorsを使用すると、HadoopクラスタとOracle Databaseに格納されているデータ間のデータ・アクセスが簡単になります。Oracle Big Data Applianceまたはコモディティ・ハードウェア上で稼働するHadoopクラスタでの使用に対してライセンス供与されます。

次のコネクタがあります。

- Oracle SQL Connector for Hadoop Distributed File System (旧Oracle Direct Connector for HDFS): Oracle Databaseは、Hadoop Distributed File System (HDFS)ファイルまたはHive表に格納されているデータにアクセスできます。データをHDFSまたはHive表に保持することも、Oracle Databaseにロードすることもできます。Oracle SQL Connector for HDFSは、org.apache.hadoop.util.Toolインタフェースでサポートされる汎用のコマンドライン引数を受け入れるコマンドライン・ユーティリティです。また、Oracle外部表のプリプロセッサも提供します。

- Oracle Loader for Hadoop: HadoopクラスタからOracle Databaseの表にデータをすばやく移動するための効率的でパフォーマンスのよいローダーを提供します。Oracle Loader for Hadoopは、必要に応じてデータを事前にパーティション化し、そのデータをデータベース対応形式に変換します。また、データのロードや出力ファイルの作成の前に主キーまたはユーザー定義の列でレコードを任意にソートします。Oracle Loader for Hadoopは、コマンドライン・ユーティリティとして起動するMapReduceアプリケーションです。org.apache.hadoop.util.Toolインタフェースでサポートされる汎用コマンドライン・オプションを受け入れます。

- Oracle Data Integrator Application Adapter for Hadoop: グラフィカル・ユーザー・インタフェースを使用して定義されたとおりに、HadoopクラスタからOracle Databaseの表にデータを抽出、変換およびロードします。

- Oracle R Connector for Hadoop: ローカルR環境、Oracle Database、Hadoop間のインタフェースを提供し、3つすべてのプラットフォームで高速でインタラクティブな分析を可能にします。Oracle R Connector for Hadoopは単独で機能するよう設計されていますが、分析対象のエンタープライズ・データがOracle Databaseにも格納されている場合、Oracle R Enterpriseとともに使用すると、このコネクタの機能を最大限に活用できます。

それぞれのコネクタでは、Oracle DatabaseおよびHadoopクラスタにソフトウェア・コンポーネントをインストールする必要があります。Oracle Databaseでの追加のアクセス権限が必要な場合もあります。

関連項目:
My Oracle Support情報センター: Big Data Connectors (ID 1487399.2)およびその関連情報センター

1.2 ビッグ・データの概念とテクノロジ

エンタープライズでは、複数のソースから生じる大量のデータを参照します。分析した場合にエンタープライズにとってきわめて大きな価値となる膨大な量のデータのほんの一例として、Webログのクリックストリーム・データ、GPS追跡情報、小売事業のデータ、センサー・データおよびマルチメディア・ストリームなどがあります。生のデータ・フィードから取得する非構造化および半構造化情報は、それ自体ほとんど価値はありません。実際に価値のある情報を抽出するには、データを処理する必要があります。処理されたデータは、その後データベースに格納して管理できます。このデータをデータベースの構造化データと一緒に分析することで、新たな理解が得られ、実質的なビジネス利益につながります。

1.2.1 MapReduceとは

MapReduceは、分散システムでデータを処理するための並列プログラミング・モデルです。これは、大量のデータをタイムリに処理して線形的に縮小および拡大できます。特に、非構造化データおよび半構造化データのバッチ処理のメカニズムとして効果的です。MapReduceは、比較的下位の操作を一連のキーと値を通じて計算に抽象化します。

MapReduceジョブを簡単に定義すると、2つのフェーズ(マップ・フェーズとリデュース・フェーズ)が連続的に交代する操作になります。各マップ・フェーズは、入力データの各レコードに変換機能を適用して、キーと値のペアで表現される一連のレコードを作成します。マップ・フェーズからの出力は、リデュース・フェーズへの入力になります。リデュース・フェーズでは、マップ出力レコードはキーと値のセットにソートされるため、セット内のすべてのレコードのキーの値が同じになります。リデューサ関数がセット内のすべてのレコードに適用され、一連の出力レコードがキーと値のペアで作成されます。マップ・フェーズは、各レコードに対して論理的に並列で実行され、リデュース・フェーズは、すべてのキーの値に対して並列で実行されます。

注意:
Oracle Big Data Connectorsは、MapReduceのYet Another Resource Negotiator (YARN)をサポートしていません。

1.2.2 Apache Hadoopとは

Apache Hadoopは、MapReduceプログラミング・モデルに基づく、データ処理ジョブの開発およびデプロイ用ソフトウェア・フレームワークです。中核機能として、Hadoopは、信頼できる共有ストレージおよび分析システム脚注 1 を提供します。分析はMapReduceによって行われます。ストレージは、MapReduceジョブ向けに設計された共有ストレージ・システムであるHadoop Distributed File System (HDFS)によって行われます。

Hadoopエコシステムには、その他にApache Avro (Oracle Loader for Hadoopで使用されるデータ・シリアライズ・システム)などのプロジェクトが複数含まれています。

Cloudera's Distribution including Apache Hadoopは、Oracle Big Data Applianceにインストールされます。この章の設定手順で説明されているように、CDHまたは同等のApache Hadoopコンポーネントが稼働するHadoopクラスタでOracle Big Data Connectorsを使用できます。

関連項目:

- Hadoopテクノロジに関する概念上の情報については、次のサードパーティの公開内容を参照してください。
『Hadoop: The Definitive Guide, Third Edition』Tom White著(O'Reilly Media Inc., 2012, ISBN: 978-1449311520)。

- Cloudera's Distribution including Apache Hadoop (CDH4)の詳細は、Oracle Clouderaの次のWebサイトを参照してください
http://oracle.cloudera.com/

- Apache Hadoopの詳細は、次のWebサイトを参照してください
http://hadoop.apache.org/

1.3 Oracle Big Data Connectorsソフトウェアのダウンロード

Oracle Big Data Connectorsは、Oracle Technology NetworkまたはOracle Software Delivery Cloudからダウンロードできます。

Oracle Technology Networkからダウンロードするには、次の手順を実行します。

1. ブラウザを使用して次のWebサイトにアクセスします。
http://www.oracle.com/technetwork/bdc/big-data-connectors/downloads/index.html

2. 各コネクタの名前をクリックして、インストール・ファイルを含むzipファイルをダウンロードします。

Oracle Software Delivery Cloudからダウンロードするには、次の手順を実行します。

1. ブラウザを使用して次のWebサイトにアクセスします。
https://edelivery.oracle.com/

2. 条件と制限事項を受け入れて、「メディア・パック検索」ページを表示します。

3. 検索条件を次のように選択します。
製品パックを選択: Oracle Database

プラットフォーム: Linux x86-64

4. 「実行」をクリックして製品パックの一覧を表示します。

5. Oracle Big Data Connectors Media Pack for Linux x86-64 (B65965-0x)を選択して、「続行」をクリックします。

6. 各コネクタの「ダウンロード」をクリックして、インストール・ファイルを含むzipファイルをダウンロードします。

1.4 Oracle SQL Connector for Hadoop Distributed File Systemの設定

Oracle SQL Connector for Hadoop Distributed File System (HDFS)は、Oracle Databaseが稼働するシステムにインストールして構成します。また、Hive表がデータソースとして使用される場合、Hiveがインストールされているシステムにインストールして実行します。

Oracle SQL Connector for HDFSをインストールする前に、必要なソフトウェアが揃っていることを確認します。

1.4.1 ソフトウェア要件

Oracle SQL Connector for HDFSには、次のソフトウェアが必要です。

- Cloudera's Distribution including Apache Hadoopバージョン3 (CDH3)またはバージョン4 (CDH4)、あるいはApache Hadoop 1.0 (旧0.20.2)。

- Java Development Kit (JDK) 1.6_08以上。推奨バージョンについては、Hadoopソフトウェアの代理店(ClouderaまたはApache)に確認してください。

- Linuxの場合、Oracle Databaseリリース11gリリース2 (11.2.0.2または11.2.0.3)。

- Oracle Data Pumpファイル形式をサポートするためのOracle Databaseの個別パッチ。このパッチをダウンロードするには、http://support.oracle.comにアクセスしてOracle Bug#14557588を検索します。

- Hadoopクラスタと同じバージョンのOracle Databaseシステム上のHadoop。CDH3、CDH4またはApache Hadoop 1.0のいずれか。

- Hadoopクラスタと同じバージョンのOracle Databaseシステム上のJDK。

- Hive 0.7.0、0.7.1または0.9.0 (Hive表にアクセスする場合は必須、それ以外はオプション)。

1.4.2 Hadoopのインストールと構成

Oracle SQL Connector for HDFSは、Hadoopクライアントとして機能します。Oracle SQL Connector for HDFSのMapReduceジョブを実行するために、Oracle DatabaseシステムでHadoopを構成する必要はありません。ただし、Oracle DatabaseシステムにHadoopをインストールして、Hadoopクライアントを使用する場合にかぎり、最小限の構成を行う必要があります。

Oracle DatabaseシステムをHadoopクライアントとして構成するには、次の手順を実行します。

1. Hadoopクラスタと同じバージョンのCDHまたはApache HadoopをOracle Databaseシステムにインストールして構成します。Oracle Big Data Applianceを使用する場合、『Oracle Big Data Applianceソフトウェア・ユーザーズ・ガイド』のリモート・クライアント・アクセスを提供するための手順を完了します。それ以外の場合は、代理店(ClouderaまたはApache)が提供するインストール手順に従います。

2. Oracle DatabaseからHDFSにアクセスできることを確認します。

1. Oracle Databaseアカウントを使用して、Oracle Databaseが稼働しているシステムにログインします。

2. Bashシェルを開き、次のコマンドを入力します。

$HADOOP_HOME/bin/hadoop fs -ls /user

このコマンドでは、$HADOOP_HOMEは、Hadoopのホーム・ディレクトリの絶対パスです。ディレクトリのリストが表示されます。表示されない場合、最初にHadoopクラスタが稼働していることを確認します。問題が続く場合、Oracle DatabaseからHadoopクラスタ・ファイルシステムにアクセスできるようにHadoopクライアント構成を修正する必要があります。

これで、Oracle DatabaseシステムをHadoopクライアントとして使用する準備ができました。Hadoopの他の構成手順は必要ありません。

1.4.3 Oracle SQL Connector for HDFSのインストール

Oracle SQL Connector for HDFSをOracle DatabaseシステムおよびHadoopクラスタ(Hive表にアクセスする場合)にインストールするために、この手順を完了します。

Oracle DatabaseシステムにOracle SQL Connector for HDFSをインストールするには、次の手順を実行します。

1. Oracle Databaseが稼働するシステムのディレクトリにzipファイルをダウンロードします。

2. orahdfs-version.zipをディレクトリに解凍します。解凍したファイルの構造は、例1-1のようになります。

3. hdfs_stream Bashシェル・スクリプトをテキスト・エディタで開き、スクリプトのコメントで示される変更を行います。
hdfs_streamスクリプトは、HDFS外部表のプリプロセッサ・スクリプトです。

4. HDFSインストール・ディレクトリの場合、Oracle SQL Connectorからhdfs_streamを実行します。次の使用方法の情報が表示されます。

$ ./hdfs_stream
Usage: hdfs_stream locationFile

表示されない場合、Oracle Databaseを実行しているオペレーティング・システム・ユーザーに次の権限があることを確認します。

- hdfs_streamスクリプトに対する読取り権限と実行権限:

$ ls -l OSCH_HOME/bin/hdfs_stream
-rwxr-xr-x 1 oracle oinstall Nov 27 15:51 hdfs_stream

これらの権限が表示されない場合、chmodコマンドを入力して権限を修正します。

$ chmod 755 OSCH_HOME/bin/hdfs_stream

- OSCH_HOME/jlib/orahdfs.jarに対する読取り権限。

前述のコマンドでは、OSCH_HOMEは、Oracle SQL Connector for HDFSホーム・ディレクトリを表します。

5. hdfs_streamが存在するorahdfs-version/binディレクトリのデータベース・ディレクトリを作成します。この例では、Oracle SQL Connector for HDFSキットは/etcにインストールされます。

SQL> CREATE OR REPLACE DIRECTORY osch_bin_path AS  '/etc/orahdfs-2.0.0/bin'

Hive表をサポートするには、HadoopクラスタにOracle SQL Connector for HDFSをインストールします。HDFSファイルのみにアクセスする場合は、この手順を省略できます。

HadoopクラスタにOracle SQL Connector for HDFSをインストールするには、次の手順を実行します。

1. Hiveがインストールされているシステムのディレクトリにzipファイルをダウンロードします。

2. orahdfs-version.zipをディレクトリに解凍します。

3. HiveのJARファイルをHADOOP_CLASSPATH環境変数に追加します。

解凍したファイルの構造は、例1-1のようになります。

例1-1 orahdfsディレクトリの構造

orahdfs-version
bin/
hdfs_stream
jlib/
orahdfs.jar
osdt_core.jar
osdt_cert.jar
oraclepki.jar
ojdbc6.jar
log/
doc/
README.txt

1.4.4 Oracle SQL Connector for HDFSに対するユーザー・アクセス権の付与

Oracle DatabaseユーザーがOracle SQL Connector for HDFSを使用するには、次の権限が必要です。

- CREATE SESSION

- CREATE TABLE

- UTL_FILE PL/SQLパッケージに対するEXECUTE

- Oracle SQL Connector for HDFSのインストール時に作成されるOSCH_BIN_PATHディレクトリに対するREADおよびEXECUTE。書込みアクセス権は誰にも付与しないでください。Oracle SQL Connector for HDFSを使用する予定のユーザーにのみEXECUTEを付与します。

例1-2に、これらの権限をHDFSUSERに付与するSQLコマンドを示します。

例1-2 Oracle SQL Connector for HDFSに対するユーザー・アクセス権の付与

CONNECT / AS sysdba;
CREATE USER hdfsuser IDENTIFIED BY password;
GRANT CREATE SESSION, CREATE TABLE TO hdfsuser;
GRANT EXECUTE ON SYS.UTL_FILE TO hdfsuser;
GRANT READ, EXECUTE ON DIRECTORY OSCH_BIN_PATH TO hdfsuser;

1.5 Oracle Loader for Hadoopの設定

Oracle Loader for Hadoopをインストールする前に、必要なソフトウェアがあることを確認します。

1.5.1 ソフトウェア要件

Oracle Loader for Hadoopには、次のソフトウェアが必要です。

- 次のいずれかが稼働しているターゲット・データベース・システム

- 必要なパッチを含むOracle Database 11gリリース2 (11.2.0.2)

- Oracle Database 11gリリース2 (11.2.0.3)

注意:
Oracle Database 11gリリース2 (11.2.0.2)でOracle Loader for Hadoopを使用するには、Oracle Bug#11897896に対処する個別パッチを最初に適用する必要があります。このパッチを入手するには、http://support.oracle.comにアクセスしてバグ番号を検索します。

- Cloudera's Distribution including Apache Hadoopバージョン3 (CDH3)またはバージョン4 (CDH4)、あるいはApache Hadoop 1.0 (旧0.20.2)。

- HiveToAvroInputFormatクラスをサポートするHive 0.7.0、0.7.1または0.9.0

1.5.2 Oracle Loader for Hadoopのインストール

Oracle Loader for Hadoopは、Oracle Database 11gリリース2クライアント・ライブラリおよびOracle Database 11.2.0.2または11.2.0.3に接続するためのOracle Instant Clientライブラリに同梱されています。

Oracle Loader for Hadoopをインストールするには、次の手順を実行します。

1. oraloader-version.zipの内容をHadoopクラスタのディレクトリに解凍します。このアーカイブには次の2つのアーカイブが含まれます。

- oraloader-version-1.x86_64.zip: CDH3およびApache Hadoop 1.0で使用

- oraloader-version-2.x86_64.zip: CDH4で使用

2. Hadoopクラスタのディレクトリに適切なアーカイブを解凍します。
oraloader-versionというディレクトリが次のサブディレクトリとともに作成されます。

jlib
lib
examples

3. $OLH_HOMEという変数を作成し、その変数をインストール・ディレクトリに設定します。

4. $OLH_HOME/jlib/*をHADOOP_CLASSPATH変数に追加します。

5. Oracle NoSQL Databaseリリース2からデータを読み取る場合、$KVHOME/lib/kvstore-2.0.22.jarをHADOOP_CLASSPATH変数に追加します。

1.6 Oracle Data Integrator Application Adapter for Hadoopの設定

次の各項で、Oracle Data Integrator (ODI) Application Adapter for Hadoopのインストール要件について説明します。

- システム要件および動作要件

- テクノロジ固有の要件

- Oracle Data Integrator Application Adapter for Hadoopの場所

- トポロジの設定

1.6.1 システム要件および動作要件

Oracle Data Integrator Application Adapter for Hadoopを使用するには、まず、Oracle Data Integratorが必要です。これは、Oracle Big Data Connectorsとは別にライセンス供与されます。ODIは次のOracle Webサイトからダウンロードできます。

http://www.oracle.com/technetwork/middleware/data-integrator/downloads/index.html

Oracle Data Integrator Application Adapter for Hadoopには、Oracle Data Integrator 11.1.1.6.0以上が必要です。

インストールを実行する前に、システム要件および動作保証のドキュメントを読み、インストール先の環境が、これからインストールする製品の最小インストール要件を満たしていることを確認します。

サポートされているプラットフォームおよびバージョンのリストには、次のOracle Technical Networkからアクセスできます。

http://www.oracle.com/technetwork/middleware/data-integrator/overview/index.html

1.6.2 テクノロジ固有の要件

サポートされているテクノロジおよびバージョンのリストには、次のOracle Technical Networkからアクセスできます。

http://www.oracle.com/technetwork/middleware/data-integrator/overview/index.html

1.6.3 Oracle Data Integrator Application Adapter for Hadoopの場所

Oracle Data Integrator Application Adapter for Hadoopは、Oracle Data Integrator付属CDのxml-referenceディレクトリで入手できます。

1.6.4 トポロジの設定

トポロジを設定するには、第4章「Oracle Data Integrator Application Adapter for Hadoop」を参照してください。

1.7 Oracle R Connector for Hadoopの設定

Oracle R Connector for Hadoopでは、Hadoop側とクライアントLinuxシステムへのソフトウェア環境のインストールが必要です。

1.7.1 Hadoopへのソフトウェアのインストール

Oracle Big Data Applianceでは、追加ソフトウェアのインストールや構成なしにOracle R Connector for Hadoopがサポートされます。ただし、特定のRパッケージがインストールされていることを確認する必要があります。詳細は、「追加のRパッケージのインストール」を参照してください。

ただし、その他のHadoopクラスタでOracle R Connector for Hadoopを使用するには、必要な環境を作成する必要があります。

1.7.1.1 サードパーティHadoopクラスタのソフトウェア要件

Oracle R Connector for HadoopをサポートするサードパーティHadoopクラスタにいくつかのソフトウェア・コンポーネントをインストールする必要があります。

次のコンポーネントをサードパーティ・サーバーにインストールします。

- Cloudera's Distribution including Apache Hadoopバージョン4 (CDH4)またはApache Hadoop 2.0.0。MapReduce 1を使用。
代理店で提供される手順を完了します。

- Hive 0.7.1または0.9.0。
「HadoopクラスタへのHiveのインストール」を参照してください。

- Oracle Databaseに接続する関数を実行するためのSqoop。Oracle R Connector for Hadoopでは、Sqoopのインストールやロードは必要ありません。
「HadoopクラスタへのSqoopのインストール」を参照してください。

- Java Virtual Machine (JVM)、できればJava HotSpot Virtual Machine 6。
次のダウンロード・サイトで提供される手順を完了します。

http://www.oracle.com/technetwork/java/javase/downloads/index.html

- HadoopクラスタのすべてのノードにOracle R Distribution 2.15.1とすべてのベース・ライブラリ。
「HadoopクラスタへのRのインストール」を参照してください。

- 各RエンジンのORCHパッケージ。Hadoopクラスタの各ノードに必要です。
「HadoopクラスタへのORCHパッケージのインストール」を参照してください。

- OLHドライバ(オプション)をサポートするOracle Loader for Hadoop。「Oracle Loader for Hadoopの設定」を参照してください。

注意:
HadoopクラスタにHADOOP_HOMEを設定しないでください。CDH4では必要なく、JobTrackerのステータスのチェック時にOracle R Connector for Hadoopと競合します。その結果、エラー「Something is terribly wrong with Hadoop MapReduce.」が発生します。
他のアプリケーションでHADOOP_HOMEを設定する必要がある場合は、/etc/bashrcファイルにHADOOP_LIBEXEC_DIRも設定してください。次に例を示します。

export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec

1.7.1.2 HadoopクラスタへのSqoopのインストール

Sqoopには、Hadoopに対するSQLライクなインタフェースがあり、これはJavaベース環境になります。Oracle R Connector for Hadoopでは、Oracle DatabaseへのアクセスにSqoopが使用されます。

注意:
Oracle DatabaseへのデータのロードにOracle Loader for Hadoopをドライバとして使用する場合もSqoopが必要です。Sqoopは、データベースからHDFSへのデータのコピーや自由形式の問合せのデータベースへの送信などの関数を実行します。OLHドライバでは、Oracle Loader for Hadoopがサポートしない操作の実行にもSqoopが使用されます。

Oracle Databaseで使用するためにSqoopをインストールして構成するには、次の手順を実行します。

1. Sqoopがサーバーにインストールされていない場合はインストールします。
Cloudera's Distribution including Apache Hadoopについては、次のサイトの『CDH Installation Guide』のSqoopインストール手順を参照してください

http://oracle.cloudera.com/

2. Oracle Databaseに適したJava Database Connectivity (JDBC)ドライバを次のOracle Technology Networkからダウンロードします
http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html

3. ドライバのJARファイルを$SQOOP_HOME/libにコピーします。これは、/usr/lib/sqoop/libなどのディレクトリです。

4. SqoopにOracle Databaseへの接続文字列を指定します。

$ sqoop import --connect jdbc_connection_string

sqoop import --connect jdbc:oracle:thin@myhost:1521/orclのようになります。

1.7.1.3 HadoopクラスタへのHiveのインストール

Hiveは、HiveQLと呼ばれる問合せ言語によって、代替のストレージおよび取得メカニズムをHDFSファイルに提供します。Oracle R Connector for HadoopではHiveQLのデータ準備と分析機能が使用されますが、R言語構文も使用できます。

Hiveをインストールするには、次の手順を実行します。

1. 代理店(ClouderaまたはApache)で提供されるHiveインストール手順に従います。

2. インストールが適切に機能することを確認します。

3. $ hive -H
usage: hive
-d,--define <key=value>          Variable subsitution to apply to hive
commands. e.g. -d A=B or --define A=B
--database <databasename>     Specify the database to use
-e <quoted-query-string>         SQL from command line
-f <filename>                    SQL from files
-H,--help                        Print help information
-h <hostname>                    connecting to Hive Server on remote host
--hiveconf <property=value>   Use value for given property
--hivevar <key=value>         Variable subsitution to apply to hive
commands. e.g. --hivevar A=B
-i <filename>                    Initialization SQL file
-p <port>                        connecting to Hive Server on port number
-S,--silent                      Silent mode in interactive shell
-v,--verbose                     Verbose mode (echo executed SQL to the
console)

4. コマンドが失敗したり、出力に警告が表示される場合、Hiveインストールを修正します。

1.7.1.4 HadoopクラスタへのRのインストール

次のWebサイトからOracle R Distribution 2.15.1をダウンロードして、インストール手順を入手できます。

http://www.oracle.com/technetwork/indexes/downloads/r-distribution-1532464.html

あるいは、次のComprehensive R Archive Network (CRAN)のWebサイトからRをダウンロードできます。

http://www.r-project.org

1.7.1.5 HadoopクラスタへのORCHパッケージのインストール

ORCHは、Oracle R Connector for Hadoopパッケージの名称です。

ORCHパッケージをインストールするには、次の手順を実行します。

1. サポートするソフトウェアの環境変数を設定します。

$ setenv JAVA_HOME /usr/lib/jdk6
$ setenv R_HOME /usr/lib64/R
$ setenv SQOOP_HOME /usr/lib/sqoop

2. ダウンロードしたファイルを解凍します。

$ unzip orch-version.zip
Archive:  orch-linux-x86_64-2.0.zip
extracting: ORCH2.0/ORCH_2.0_R_x86_64-unknown-linux-gnu.tar.gz
inflating: ORCH2.0/ORCHcore_2.0_R_x86_64-unknown-linux-gnu.tar.gz
inflating: ORCH2.0/OREbase_1.3_R_x86_64-unknown-linux-gnu.tar.gz
inflating: ORCH2.0/OREstats_1.3_R_x86_64-unknown-linux-gnu.tar.gz

3. 新しいディレクトリに変更します。

$ cd ORCH2.0

4. 次の順序でパッケージをインストールします。

$ R --vanilla CMD INSTALL OREbase_1.3_R_x86_64-unknown-linux-gnu.tar.gz
$ R --vanilla CMD INSTALL OREstats_1.3_R_x86_64-unknown-linux-gnu.tar.gz
$ R --vanilla CMD INSTALL ORCHcore_2.0_R_x86_64-unknown-linux-gnu.tar.gz
$ R --vanilla CMD INSTALL ORCH_2.0_R_x86_64-unknown-linux-gnu.tar.gz

1.7.2 追加RのRパッケージのインストール

Hadoopクラスタでは、すべてのノードにlibpng-develがインストールされている必要があります。この手順では、dcliユーティリティを使用してコマンドを実行します。dcliユーティリティの構文は、『Oracle Big Data Applianceオーナーズ・ガイド』を参照してください。

libpng-develのインストール手順:

1. 任意のOracle Big Data Applianceサーバーにrootとしてログインします。

2. libpng-develがすでにインストールされているかどうかを確認します。

# dcli rpm -qi libpng-devel
bda1node01: package libpng-devel is not installed
bda1node02: package libpng-devel is not installed
.
.
.

すべてのサーバーにパッケージがインストール済の場合、この手順は省略できます。

3. ファイアウォールの外側にプロキシ・サーバー経由で接続する必要がある場合は、HTTP_PROXY環境変数を設定します。

# dcli export HTTP_PROXY="http://proxy.example.com"

4. yum構成ファイルをダウンロードします。

# cd /etc/yum.repos.d
# wget http://public-yum.oracle.com/public-yum-el5.repo

5. テキスト・エディタでpublic-yum-el5.repoを開き、次のように変更します。

- el5_latestの下で、enabled=1と設定します。

- el5_addonsの下で、enabled=1と設定します。

6. 他のOracle Big Data Applianceサーバーにファイルをコピーします。

# dcli -d /etc/yum.repos.d -f public-yum-el5.repo

7. すべてのサーバーにパッケージをインストールします。

# dcli yum -y install libpng-devel
bda1node01: Loaded plugins: rhnplugin, security
bda1node01: Repository 'bda' is missing name in configuration, using id
bda1node01: This system is not registered with ULN.
bda1node01: ULN support will be disabled.
bda1node01: http://bda1node01-master.us.oracle.com/bda/repodata/repomd.xml:
bda1node01: [Errno 14] HTTP Error 502: notresolvable
bda1node01: Trying other mirror.
.
.
.
bda1node01: Running Transaction
bda1node01: Installing     : libpng-devel                                 1/2
bda1node01: Installing     : libpng-devel                                 2/2

bda1node01: Installed:
bda1node01: libpng-devel.i386 2:1.2.10-17.el5_8  ibpng-devel.x86_64 2:1.2.10-17.el5_8

bda1node01: Complete!
bda1node02: Loaded plugins: rhnplugin, security
.
.
.

8. すべてのサーバーでインストールが正常に終了したことを確認します。

# dcli rpm -qi libpng-devel
bda1node01: Name        : libpng-devel                      Relocations: (not relocatable)
bda1node01: Version     : 1.2.10                                 Vendor: Oracle America
bda1node01: Release     : 17.el5_8                           Build Date: Wed 25 Apr 2012 06:51:15 AM PDT
bda1node01: Install Date: Tue 05 Feb 2013 11:41:14 AM PST    Build Host: ca-build56.us.oracle.com
bda1node01: Group       : Development/Libraries              Source RPM: libpng-1.2.10-17.el5_8.src.rpm
bda1node01: Size        : 482483                                License: zlib
bda1node01: Signature   : DSA/SHA1, Wed 25 Apr 2012 06:51:41 AM PDT, Key ID 66ced3de1e5e0159
bda1node01: URL         : http://www.libpng.org/pub/png/
bda1node01: Summary     : Development tools for programs to manipulate PNG image format files.
bda1node01: Description :
bda1node01: The libpng-devel package contains the header files and static
bda1node01: libraries necessary for developing programs using the PNG (Portable
bda1node01: Network Graphics) library.
.
.
.

1.7.3 Rユーザーへのリモート・クライアント・アクセスの提供

Rユーザーは、Hadoopクラスタで自身のプログラムをMapReduceジョブとして実行しますが、通常、そのプラットフォームでの個別アカウントは保有していません。かわりに、外部Linuxサーバーでリモート・アクセスが提供されます。

1.7.3.1 リモート・クライアント・アクセスのソフトウェア要件

HadoopクラスタへのアクセスをRユーザーに提供するには、次のコンポーネントをLinuxサーバーにインストールします。

- Hadoopクラスタと同じバージョンのHadoop。インストールされていない場合、予想外の問題や障害が生じることがあります。

- Hadoopクラスタと同じバージョンのSqoop。Oracle Database内外でのデータのコピーをサポートする場合にのみ必要です。

- Mahout。Mahout ALS-WSアルゴリズムでorch.ls関数を使用する場合にのみ必要です。

- Hadoopクラスタと同じバージョンのJava Development Kit (JDK)。

- Rディストリビューション2.13.2とすべてのベース・ライブラリ。

- ORCH Rパッケージ。

データベース・オブジェクトにアクセスできるようにするには、Oracle DatabaseへのOracle Advanced Analyticsオプションが必要です。その後、Hadoopクライアントにこの追加コンポーネントをインストールできます。

- Oracle R Enterpriseクライアントのパッケージ。

1.7.3.2 Hadoopクライアントとしてのサーバーの構成

クライアントにHadoopをインストールし、HDFSクライアントを使用する場合はHadoopの最小限の構成を行う必要があります。

クライアント・システムにHadoopをインストールして構成するには、次の手順を実行します。

1. クライアント・システムにCDH3またはApache Hadoop 0.20.2をインストールして構成します。このシステムがOracle Databaseのホストになります。Oracle Big Data Applianceを使用する場合、『Oracle Big Data Applianceソフトウェア・ユーザーズ・ガイド』のリモート・クライアント・アクセスを提供するための手順を完了します。それ以外の場合は、代理店(ClouderaまたはApache)が提供するインストール手順に従います。

2. Rユーザーでクライアント・システムにログインします。

3. Bashシェルを開き、次のHadoopファイルシステム・コマンドを入力します。

$HADOOP_HOME/bin/hadoop fs -ls /user

4. ファイルのリストが表示されたら終了です。表示されない場合、Hadoopクラスタが稼働していることを確認します。それでも問題が修正されない場合は、クライアントHadoopのインストールをデバッグする必要があります。

1.7.3.3 HadoopクライアントへのSqoopのインストール

Sqoopをインストールして構成する場合、「HadoopクラスタへのSqoopのインストール」で説明する手順と同じ手順をクライアント・システムで完了します。

1.7.3.4 HadoopクライアントへのRのインストール

Oracle R Distributionの次のWebサイトからR 2.13.2をダウンロードして、インストール手順を入手できます。

http://oss.oracle.com/ORD/

終了したら、Linuxサーバーへの接続とRの実行に必要な権限がユーザーにあることを確認します。

また、Rユーザーによるアクセスが簡単になるようにRStudioサーバーもインストールできます。RStudioの次のWebサイトを参照してください。

http://rstudio.org/

1.7.3.5 HadoopクライアントへのORCHパッケージのインストール

「Hadoopへのソフトウェアのインストール」の説明に従って、クライアント・システムでORCHのインストール手順を実行します。

1.7.3.6 Oracle R Enterpriseクライアントのパッケージ(オプション)のインストール

Rを使用したOracle Databaseへの完全なアクセスをサポートするには、Oracle R Enterpriseリリース1.3以上のクライアントのパッケージをインストールします。このパッケージがない場合、Oracle R Connector for Hadoopでは、Oracle R Enterpriseで提供される高度な統計アルゴリズムを利用できません。

関連項目:
RおよびOracle R Enterpriseのインストールの詳細は、Oracle R Enterpriseユーザーズ・ガイド

脚注の説明
脚注 1: 『Hadoop: The Definitive Guide, Third Edition』Tom White著(O'Reilly Media Inc., 2012, 978-1449311520)

2 Oracle SQL Connector for Hadoop Distributed File System

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

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

- Oracle SQL Connector for HDFSについて

- 外部表について

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

- 外部表の作成

- HDFSデータ・パスの公開

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

- 外部表の説明

- HDFS内のデータの問合せ

- Oracle SQL Connector for HDFSの構成

2.1 Oracle SQL Connector for HDFSについて

Oracle SQL Connector for HDFSを使用する場合、HDFSファイルやHive表に存在するデータへのアクセスやデータの分析にOracle Databaseを使用できます。また、HDFSやHive表のデータに問い合せたり、そのデータを他のデータベースに存在するデータと結合したりすることもできます。必要に応じて、SQLを使用してデータをデータベースにロードすることもできます。

Oracle SQL Connector for HDFSは、Oracle Databaseが稼働するシステムにインストールして構成します。また、Oracle Databaseが稼働するシステムでの実行も可能です。Hive表がデータソースとして使用される場合、HiveがインストールされているシステムにOracle SQL Connector for HDFSもインストールして実行する必要があります。「Oracle SQL Connector for Hadoop Distributed File Systemの設定」を参照してください。

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

2.2 外部表について

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

Oracle SQL Connector for HDFSでは、ORACLE_LOADERアクセス・ドライバが使用されます。

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

Oracle SQL Connector for HDFSは、次のデータソースの外部表を作成できます。

- HDFSのデータ・ポンプ・ファイル: Oracle SQL Connector for HDFSは、データ・ポンプ・ファイルのヘッダーに問い合せて、Oracle Loader for Hadoopで作成されたデータ・ポンプ形式のファイルの外部表定義を作成する必要があるかどうかを確認します。

- Hive表: Oracle SQL Connector for HDFSは、Hiveメタストアに問い合せて、Hive表の外部表定義を作成する必要があるかどうかを確認します。

- HDFSのデリミタ付きテキスト・ファイル: Oracle SQL Connector for HDFSは、構成プロパティを使用して、HDFSに格納されているテキスト・ファイルの外部表定義を作成する必要があるかどうかを確認します。外部表の列はすべてVARCHAR2型で作成されます。

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

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

関連項目:

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

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

2.2.1 場所ファイルとは

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

2.2.2 並列処理の有効化

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

2.2.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.2.4 場所ファイルの名前

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

osch-timestamp-number-n

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

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

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

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

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

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

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

2.3.1 外部表について

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

- 外部表の作成

- 場所ファイルの移入

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

- 場所ファイルのリスト

- 外部表の説明

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

2.3.2 HADOOP_CLASSPATHの変更

ExternalTableを使用する前に、次の内容をHADOOP_CLASSPATH環境変数に追加します。

- $OSCH_HOME/jlib/*

Hive表をデータソースとして使用する場合、次の内容もHADOOP_CLASSPATHに追加します。

- $HIVE_HOME/lib/*

- $HIVE_CONF_DIR (設定される場合)、または$HIVE_HOME/conf

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

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

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

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

コマンドの説明

-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を指定して実行することをお薦めします。

-listLocations [--details]

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

-getDDL

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

関連項目:
「構文の規則」

2.4 外部表の作成

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

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

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

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

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

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

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

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

-createTableのExternalTable構文

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

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

関連項目:
「ExternalTableコマンドライン・ツールの構文」

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

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

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

2.4.2.1 必須プロパティ

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

- oracle.hadoop.exttab.tableName

- oracle.hadoop.exttab.sourceType=datapump

- oracle.hadoop.exttab.dataPaths

- oracle.hadoop.exttab.defaultDirectory

- oracle.hadoop.connection.url

- oracle.hadoop.connection.user

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

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

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

- oracle.hadoop.exttab.logDirectory

2.4.2.3 例

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

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

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_HOME/bin/hadoop jar $OSCH_HOME/jlib/orahdsf.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.4.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.4.3.1 Hive表の要件

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

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

2.4.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.4.3.3 オプションのプロパティ

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

- oracle.hadoop.locationFileCount

2.4.3.4 例

例2-2では、SALES_HIVE_XTABという外部表を作成して、Hive表からデータを読み取ります。

例2-2 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_HOME/bin/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.4.4 デリミタ付きテキスト・ファイルからの外部表の作成

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

2.4.4.1 必須プロパティ

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

- oracle.hadoop.exttab.tableName

- oracle.hadoop.exttab.dataPaths

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

- oracle.hadoop.exttab.defaultDirectory

- oracle.hadoop.connection.url

- oracle.hadoop.connection.user

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

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

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

- oracle.hadoop.exttab.recordDelimiter

- oracle.hadoop.exttab.fieldTerminator

- oracle.hadoop.exttab.initialFieldEncloser

- oracle.hadoop.exttab.trailingFieldEncloser

- oracle.hadoop.exttab.locationFileCount

2.4.4.3 例

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

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

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_HOME/bin/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.4.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.5 HDFSデータ・パスの公開

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

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

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

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

公開用のExternalTable構文

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

関連項目:
「ExternalTableコマンドライン・ツールの構文」

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

例2-4では、HADOOP_CLASSPATHを設定し、例2-1で作成された外部表にHDFSのデータ・パスを公開します。この環境変数の設定の詳細は、「HADOOP_CLASSPATHの変更」を参照してください。

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

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

$ export HADOOP_CLASSPATH="$OSCH_HOME/jlib/*"
$ $HADOOP_HOME/bin/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

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

- HADOOP_HOMEは、Hadoopホーム・ディレクトリを指し示す環境変数です。

- OSCH_HOMEは、Oracle SQL Connector for HDFSのインストール・ディレクトリを指し示す環境変数です。

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

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

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

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

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

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

- oracle.hadoop.exttab.tableName

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

-listLocationsのExternalTable構文

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

関連項目:
「ExternalTableコマンドライン・ツールの構文」

2.7 外部表の説明

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

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

- oracle.hadoop.exttab.tableName

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

-getDDLのExternalTable構文

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

関連項目:
「ExternalTableコマンドライン・ツールの構文」

2.8 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;

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

2.9 Oracle SQL Connector for HDFSの構成

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

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

2.9.1 構成ファイルの作成

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

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

例2-5に構成ファイルを示します。これらのプロパティの説明については、「構成プロパティ」を参照してください。

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

<?xmlversion="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.9.2 構成プロパティ

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

- 一般的なプロパティ

- 接続プロパティ

- Hiveプロパティ

一般的なプロパティ

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のようになります。nはoracle.hadoop.exttab.columnCountプロパティの値です。

このプロパティの値は大文字と小文字を区別しません。列名はすべて大文字になります。列名にカンマを入れることはできません。

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

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

- oracle.hadoop.exttab.columnNames

- oracle.hadoop.exttab.columnCount

oracle.hadoop.exttab.dataCompressionCodec

データ・ファイルに使用される圧縮コーデック・クラスの名前。オプション。

デフォルト値: なし

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による開始は不可)

- \uHHHH形式の1つ以上のエンコード文字。HHHHは、UTF-16の文字をビッグエディアンの16進で表したものです。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-1に、値が変換される場合の例を示します。

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

指定される値

解釈される値

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

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

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

デフォルト値: text

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

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

データベース接続文字列のURLを指定します。このプロパティは、他のすべての接続プロパティより優先されます。

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

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

有効な値: 1つの文字列

oracle.hadoop.connection.user

Oracle Databaseのログイン名。

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

有効な値: 1つの文字列

oracle.hadoop.connection.tnsEntryName

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

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

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

有効な値: 1つの文字列

oracle.hadoop.connection.tns_admin

SQL*Net構成ファイル(sqlnet.oraやtnsnames.oraなど)を含むディレクトリのファイル・パス。データベース接続文字列でTransparent Network Substrate (TNS)のエントリ名を使用するようにこのプロパティを定義します。

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

デフォルト値: 定義されていません。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

Hiveプロパティ

hive.metastore.local

Hiveメタストアがローカルとリモートのどちらかを示します。

デフォルト値: true

メタストアがローカルの場合はtrue、リモートの場合はfalseに設定します。リモート・メタストアの場合、hive.metastore.urisを指定する必要があります。

hive.metastore.uris

リモートHiveメタストアのURI。HiveはこのURIに接続して、メタデータのリクエストを行います。

hive.metastore.warehouse.dir

Hive表の場合のHDFSのデフォルトの場所。

例: /user/beeswax/warehouse

javax.jdo.option.ConnectionDriverName

Hiveメタデータを含むデータストアのJDBCドライバのクラス名。

例: この例では、MySQL DatabaseのJDBCドライバ・クラスを指定します。

com.mysql.jdbc.Driver

javax.jdo.option.ConnectionPassword

MySQL Databaseなどのデータストアに接続するためのパスワード。

javax.jdo.option.ConnectionURL

Hiveメタデータを含むデータストアのJDBC接続文字列。

例: これは、HiveメタデータがMySQL Databaseに格納される場合の接続URLの構文です。

jdbc:mysql://host-name/database-name?createDatabaseIfNotExist=true

javax.jdo.option.ConnectionUserName

MySQL Databaseなどのデータストアに接続するためのユーザー名。

3 Oracle Loader for Hadoop

この章では、Oracle Loader for Hadoopを使用してHadoopファイルからOracle Databaseの表へデータをコピーする方法について説明します。この章の内容は次のとおりです。

- Oracle Loader for Hadoopとは

- Oracle Loader for Hadoopの使用

- OraLoader起動時の出力モード

- エラー処理と診断

- パーティション表にデータをロードする場合のロード・バランシング

- OraLoaderの構成プロパティ

- Oracle Loader for Hadoopの使用例

- ターゲット表の特性

- ローダー・マップXMLスキーマ定義

- 構成プロパティのXMLドキュメント

- 同梱されているソフトウェアのサードパーティ・ライセンス

3.1 Oracle Loader for Hadoopとは

Oracle Loader for Hadoopは、HadoopクラスタからOracle Databaseの表にデータをすばやく移動するための効率的でパフォーマンスのよいローダーです。Oracle Loader for Hadoopは、必要に応じてデータを事前にパーティション化し、そのデータをデータベース対応形式に変換します。また、データのロードや出力ファイルの作成の前に主キーまたはユーザー指定の列でレコードを任意にソートします。Oracle Loader for Hadoopは、コマンドライン・ユーティリティとして起動するMapReduceアプリケーションです。

注意:
パーティション化は、非常に大規模な表の管理および効率的な問合せを行うためのデータベースの機能です。アプリケーションに対して完全に透過的な方法で、大規模な表をパーティションと呼ばれる小規模でより管理し易いサイズに分割する方法を提供します。パーティション化の詳細は、『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください。

Oracle Loader for Hadoopは、一連の入力データ形式で機能します。これは、入力データの歪みに対応するため、パフォーマンスを最大限に生かすことができます。

事前パーティション化と変換のステップの後、HadoopクラスタからOracle Databaseにデータをロードするには2つのモードがあります。

- オンライン・データベース・モード: JDBC出力形式またはOCIダイレクト・パス出力形式を使用してデータがデータベースにロードされます。OCIダイレクト・パス出力形式は、パフォーマンスのよい、ターゲット表のダイレクト・パス・ロードを実行します。JDBC出力形式は、従来のパス・ロードを実行します。OCIダイレクト・パス出力形式の制限を含めたオンライン・ロード方法の詳細は、「OraLoader起動時の出力モード」を参照してください。

- オフライン・データベース・モード: リデューサ・タスクで、バイナリまたはテキスト形式の出力ファイルが作成されます。Oracle Data Pump出力形式では、外部表およびORACLE_DATAPUMPアクセス・ドライバを使用したOracle Databaseへのロードが可能なバイナリ形式ファイルが作成されます。デリミタ付きテキスト出力形式では、デリミタ付きレコード形式でテキスト・ファイルが作成されます。(デリミタがカンマの場合、通常カンマ区切り(CSV)形式と呼ばれます。)これらのテキスト・ファイルは、外部表およびORACLE_LOADERアクセス・ドライバを使用したOracle Databaseへのロードが可能です。ファイルは、SQL*Loaderユーティリティを使用してロードすることもできます。

3.2 Oracle Loader for Hadoopの使用方法

この項では、Oracle Loader for Hadoopを使用するための次の手順について説明します。

1. InputFormatの実装

2. loaderMapドキュメントの作成

3. 表のメタデータへのアクセス

4. OraLoaderの起動

5. Oracle Databaseへのファイルのロード(オフライン・ロードのみ)

インストール手順については、「Oracle Loader for Hadoopの設定」を参照してください。

3.2.1 InputFormatの実装

Oracle Loader for Hadoopは、mapreduce.inputformat.class構成プロパティで指定されるorg.apache.hadoop.mapreduce.InputFormatクラスで規定されるように、org.apache.hadoop.mapreduce.RecordReader実装から入力を取得するMapReduceアプリケーションです。Oracle Loader for Hadoopでは、RecordReaderがgetCurrentValue()メソッドからAvro IndexedRecord入力オブジェクトを返す必要があります。メソッドのシグネチャは次のとおりです。

public org.apache.avro.generic.IndexedRecord getCurrentValue()
throws IOException, InterruptedException;

Oracle Loader for Hadoopでは、IndexedRecord入力オブジェクトのスキーマを使用して入力フィールドの名前を検出し、ロードする表の列にマップします。このマッピングについては、後続の各項で詳細を説明します。

また、Oracle Loader for Hadoopは、対応するIndexedRecordの値の処理でエラーが発生する場合にフィードバックを提供する手段として、RecordReaderのgetCurrentKey()メソッドで返されるオブジェクトを使用します。このような場合、キーのtoString()メソッドが呼び出され、結果がエラー・メッセージで書式設定されます。次のいずれかの情報を返すことにより、InputFormatの開発者は、Oracle Loader for Hadoopが拒否したレコードの識別でユーザーを支援できます。

- データ・ファイルのURI

- InputSplit情報

- データ・ファイルとそのファイルのレコードのオフセット

データに機密情報が含まれる場合、実際のレコードのテキスト表現は役立ちません。これは、クラスタ全体のHadoopのログに出力されるためです。かわりに、拒否されたレコードのロギングに関する不正なファイルの有効化については、「拒否されたレコードの不正なファイルへのロギング」を参照してください。

キーがnullの場合、レコードが失敗すると、そのレコードを識別する情報は出力されません。

Oracle Loader for Hadoopには、4つの組込み入力形式が付属しています。Oracle NoSQL Databaseでも入力形式が提供されます。さらに、Oracle Loader for Hadoopには、InputFormatサンプルのソース・コードもあります。サンプル・ソース・コードは、examples/jsrc/ディレクトリにあります。表3-1に、これらのすべての入力形式と処理される入力タイプ、Avroスキーマ・フィールド名の生成方法を示します。(ターゲット表にデータをロードするには、InputFormatによるフィールド名の生成方法を理解する必要があります。)

組込み入力形式クラスについては、後続の各項で説明します。InputFormatサンプルについては、ソース・コードとこのクラスのJavadocで詳細を確認してください。

表3-1 InputFormatの各クラス、タイプおよびフィールド名

クラス

入力タイプ

Avroスキーマ・フィールド名

oracle.hadoop.loader.lib.input.HiveToAvroInputFormat

Hive表ソース

Hive表の列名(大文字)

oracle.hadoop.loader.lib.input.DelimitedTextInputFormat

デリミタ付きテキスト・ファイル

プロパティoracle.hadoop.loader. input.fieldNamesからのカンマ区切りのリスト

(または、プロパティが定義されていない場合はF0, F1,…)

oracle.hadoop.loader.lib.input.RegexInputFormat

テキスト・ファイル

プロパティoracle.hadoop.loader. input.fieldNamesからのカンマ区切りのリスト

(または、プロパティが定義されていない場合はF0, F1,…)

oracle.hadoop.loader.lib.input.AvroInputFormat

バイナリ形式のAvroレコード・ファイル

入力ファイルのAvroスキーマのフィールド名

oracle.hadoop.loader.examples.CSVInputFormat

単純なデリミタ付きテキスト・ファイル

F0, F1,...

oracle.kv.hadoop.KVAvroInputFormat

Oracle NoSQL Database

Oracle NoSQL DatabaseのAvroレコードに対するキーと値のペアの値部分からのフィールド名

3.2.1.1 HiveToAvroInputFormat

このクラスは、Hive表からのデータを読み取る入力形式を表します。次の構成プロパティを使用して、Hiveのデータベースと表の名前が指定される必要があります。

- oracle.hadoop.loader.input.hive.tableName

- oracle.hadoop.loader.input.hive.databaseName

HiveToAvroInputFormatは、HiveMetaStoreClientにアクセスして表の列、場所、InputFormat、SerDeなどの情報を取得します。Hiveの構成方法によっては、追加のHive固有のプロパティを設定する必要があります(hive.metastore.uris、hive.metastore.localなど)。

Oracle Loader for Hadoopでは、現在Hiveパーティション表をサポートしていないことに注意してください。

HiveToAvroInputFormatは、表全体(Hive表のディレクトリ内の全ファイル)をインポートします。このドキュメントに記載されている他のすべての(ファイルベースの)入力形式で、グロビング(ワイルドカード・パターンを入力ディレクトリに追加して入力を制限すること)が可能です。

Hive表の行は、フィールド名がHive表の大文字の列名になっているAvroレコードに変換されます。このため、フィールドがデータベースの列名と一致する可能性が高くなります。「loaderMapドキュメントの作成」を参照してください。

3.2.1.2 DelimitedTextInputFormat

これは、カンマ区切りファイルやタブ区切りファイルなどのデリミタ付きファイル向けのInputFormatクラスです。DelimitedTextInputFormatでは、改行文字でレコードが区切られ、1文字のマーカーを使用してフィールドが区切られる必要があります。

DelimitedTextInputFormatクラスは、SQL*Loaderの"terminated by t [optionally enclosed by ie [and te]]"の動作をエミュレートするものです。tはフィールド終端文字、ieは開始フィールド囲み文字、teは終了フィールド囲み文字です。

DelimitedTextInputFormatでは、次の文法に基づいてパーサーが使用されます。

- Line = Token t Line | Token\n

- Token = EnclosedToken | UnenclosedToken

- EnclosedToken = (white-space)* ie [(non-te)* te te ]* (non-te)* te (white-space)*

- UnenclosedToken = (white-space)* (non-t)*

- white-space = {c | Character.isWhitespace(c) and c!=t}

囲まれたトークン内に含まれる終了フィールド囲み文字は、二重に(2回出力)してコード化する必要があります。

囲まれたトークンの前後の空白は破棄されます。囲まれていないトークンの場合、先頭の空白は廃棄されますが、末尾の空白(ある場合)は破棄されません。

空の文字列のトークンは(囲まれていても囲まれていなくても)、nullで置き換えられます。

この実装では、カスタム囲み文字と終端文字は許可されます(表3-2を参照)が、レコード終端文字と空白は(それぞれ、改行とJavaのCharacter.isWhitespace()に)ハードコードされます。囲み文字は、終端文字と空白とは異なる必要があります(囲み文字同士は同じものでかまいません)。終端文字は空白でもかまいません(その値は、空白文字のクラスから削除されます)。

表3-2に、DelimitedTextInputFormatで使用可能なデリミタを示します。表内のHHHHは、UTF-16の文字をビッグエンディアンの16進で表したものです。

表3-2 DelimitedTextInputFormatのデリミタ

デリミタのタイプ

プロパティ

使用可能な値

デフォルト

フィールド終端文字

oracle.hadoop.loader.input.fieldTerminator

- 1文字

- \uHHHH

,(カンマ)

開始フィールド囲み文字

oracle.hadoop.loader.input.initialFieldEncloser

- 1文字

- \uHHHH

- なし

デフォルトなし

終了フィールド囲み文字

oracle.hadoop.loader.input.trailingFieldEncloser

- 1文字

- \uHHHH

- なし

開始フィールド囲み文字の値

終了フィールド囲み文字を設定しない場合、パーサーでは開始フィールド囲み文字の値が使用されます。たとえば、使用しない囲み文字に相当する空の文字列値などがあります。

開始フィールド囲み文字を設定しない場合、終了フィールド囲み文字も設定しないでください。

フィールド囲み文字が設定されていない場合、EnclosedToken non-terminalは、前述の文法から基本的には削除されます。開始フィールド囲み文字を設定する場合、パーサーは、各フィールドをUnenclosedTokenと読み取る前にEnclosedTokenとして読み取ろうとします。

DelimitedTextInputFormatは、構成プロパティoracle.hadoop.loader.input.fieldNamesからのカンマ区切りリストとしてフィールド名を読み取ります。行の解析の結果フィールド名を超える数のトークン(フィールド)があった場合、余分なトークンは破棄されます。フィールド名よりトークンが少ない場合、不足分のトークンはnullに設定されます。

oracle.hadoop.loader.input.fieldNamesプロパティが設定されていない場合、 DelimitedTextInputFormatのRecordReaderは、F0, F1,…Fnをフィールド名(nは、この時点までにRecordReaderで検出された1行当たりのトークンの最大数)として使用します。

3.2.1.3 RegexInputFormat

RegexInputFormatは、DelimitedTextInputFormatの汎化と考えられます。これは、Oracle Loader for HadoopのDelimitedTextInputFormatで処理できないデータに役立ちます。例として、あるフィールドが引用符で区切られ、別のフィールドが角カッコで区切られているWebログなどがあります。さらにレコードを改行文字で区切る必要がありますが、java.util.regex正規表現ベースのパターン一致エンジンを使用して各テキスト行のフィールドを識別します。java.util.regexの詳細は、次のサイトのJava Platform Standard Edition 6 Javadocを参照してください。

http://docs.oracle.com/javase/6/docs/api/java/util/regex/package-summary.html

表3-3に、RegexInputFormatの解析動作を制御するプロパティを示します。

表3-3 RegexInputFormatでパターン一致を制御するプロパティ

プロパティ

説明と可能な値

デフォルト

oracle.hadoop.loader.input.regexPattern

正規表現のパターンを設定します。仕様と可能な値の説明については、次のサイトにあるJava Platform Standard Edition 6のJavadocを参照してください。

http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html

(空の文字列)

oracle.hadoop.loader.input.regexCaseInsensitive

一致プロセスで大文字と小文字を区別する必要があるかどうかを指定します。可能な値は次のとおりです。

- true

- false

false

正規表現は、全体として各テキスト行に一致する必要があることに注意してください。たとえば、入力行「a,b,c,」の正しい正規表現パターンは「([^,]*),」ではなく「([^,]*),([^,]*),([^,]*),」になります。これは、正規表現が入力テキストの行に対して繰り返し適用されないためです。

RegexInputFormatでは、正規表現の一致による取得グループをフィールドとして使用します。特殊なグループのゼロは、入力行全体を表すため無視されます。グループの取得については、http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html#cgで説明しています。

oracle.hadoop.loader.input.fieldNamesプロパティが設定される場合、RegexInputFormatは、このプロパティをフィールド名のカンマ区切りリストと解釈します。この場合、フィールド名の数によって、各レコードのフィールドの数が決まります。余分なフィールドは破棄され、末尾の不足分のフィールドはnullに設定されます。

oracle.hadoop.loader.input.fieldNamesプロパティが設定されていない場合、RegexInputFormatのRecordReaderは、F0, F1,…Fnをフィールド名(nは、この時点までにRecordReaderで検出された1行当たりのフィールドの最大数)として使用します。

3.2.1.4 AvroInputFormat

AvroInputFormatは、Avroレコードを含む標準Avroデータ・ファイルのInputFormatクラスです。

拡張子が.avroのファイルのみを処理するには、mapred.input.dir構成プロパティで指定するディレクトリに*.avroを追加します。

3.2.1.5 KVAvroInputFormat

Oracle NoSQL Database 11gリリース2には、oracle.kv.hadoop.KVAvroInputFormatと呼ばれるクラスがあります。Oracle Loader for Hadoopは、このクラスを使用してOracle NoSQL Databaseからデータを直接読み取ることができます。このクラスは、org.apache.hadoop.mapreduce.InputFormat<oracle.kv.Key, org.apache.avro.generic.IndexedRecord>のサブクラスで、mapreduce.inputformat.classプロパティの値として指定できます。このクラスを使用して、Oracle NoSQL Databaseに格納されるAvroの値をOracle Loader for Hadoopに読み取ることができます。

KVAvroInputFormatクラスによって、Oracle NoSQL Database Avroレコードのキーと値のペアの値部分はOracle Loader for Hadoopに直接渡されますが、Oracle NoSQL Databaseレコードのキーは渡されません。レコードのキーは、Oracle Loader for HadoopのMapReduceジョブでMapReduceキーとして使用できますが、Oracle Loader for Hadoopマッピングで指定可能なフィールドとして利用できません。Oracle Loader for HadoopでOracle NoSQL Databaseレコードのキーにアクセスする必要がある場合(ターゲット表にキーを格納する場合など)、Oracle Loader for Hadoop構成ファイルのoracle.kv.formatterClassプロパティを使用してoracle.kv.hadoop.AvroFormatterを実装するクラスを指定できます。

関連項目:
次のサイトにあるKVInputFormatBaseクラスのJavadoc
http://docs.oracle.com/cd/NOSQL/html/index.html

3.2.2 loaderMapドキュメントの作成

Oracle Loader for Hadoopでは、1つのデータベース表にデータがロードされます。この表は、ターゲット表と呼ばれます。次の方法で、ターゲット表、ロードする列および入力フィールドのデータベース列へのマップ方法と日付形式の仕様を指定できます。

- データベース表のすべての列をロードし、入力フィールドの名前がデータベースの列名と完全に一致することを指定するには、構成プロパティoracle.hadoop.loader.targetTableを使用します。ターゲットのロード表に対して名前を定義できます。データベースの列ごとに、ローダーは列名を使用して同じ名前の入力フィールドを検出します。その後、フィールドの値が列にロードされます。

- ターゲット表の列の一部をロードする場合、または入力フィールド名がデータベースの列名と完全に一致しないときに明示的なマッピングを作成する場合、loaderMapドキュメントを作成してターゲット表、列および入力フィールドのデータベース列へのマップ方法を指定します。loaderMapドキュメントの場所は、oracle.hadoop.loader.loaderMapFile構成プロパティを使用して指定します。

- すべての日付入力フィールドに適用されるデフォルトの日付形式を指定するには、構成プロパティoracle.hadoop.loader.defaultDateFormatを使用します。loaderMapドキュメントを使用すると、様々な日付入力フィールドに異なる日付形式を指定できます。

関連項目:

- 「ターゲット表の特性」

- XMLスキーマ定義(XSD)ドキュメントの内容の詳細は、「ローダー・マップXMLスキーマ定義」を参照してください

3.2.2.1 loaderMapドキュメントの例

次の例のloaderMapドキュメントでは、ロードする必要があるHR.EMPLOYEES表の列のリストを指定します。入力データ・フィールド名と表の列名との間のマッピングも含まれます。その列に使用される入力データの形式も指定されます。

<?xml version="1.0" encoding="UTF-8"?>
<LOADER_MAP>
<SCHEMA>HR</SCHEMA>
<TABLE>EMPLOYEES</TABLE>
<COLUMN field="empId">EMPLOYEE_ID</COLUMN>
<COLUMN field="lastName">LAST_NAME</COLUMN>
<COLUMN field="email">EMAIL</COLUMN>
<COLUMN field="hireDate" format="MM-dd-yyyy">HIRE_DATE</COLUMN>
<COLUMN field="jobId">JOB_ID</COLUMN>
</LOADER_MAP>

注意:
ターゲット表のすべての列がロードに使用され、IndexedRecord入力オブジェクトの入力データ・フィールド名が列名に完全に一致する場合、表の列がDATEデータ型である場合を除き、loaderMapファイルは必要ありません。DATE列にマップされる入力フィールドは、デフォルトのJava日付形式を使用して解析されます。入力が別の形式の場合、loaderMapドキュメントを作成し、形式属性を使用して入力値の解析時に使用されるJava日付形式文字列を指定する必要があります。

3.2.3 表のメタデータへのアクセス

Oracle Loader for Hadoopでは、Oracle Databaseの表のメタデータを使用してローダー・ジョブの実行を制御します。JDBC接続が確立可能な場合、ローダーでメタデータを自動的にフェッチします。ローダー・ジョブでデータベースにアクセスできない場合があります。たとえば、Hadoopクラスタが、データベースとは別のネットワークにある場合などです。この場合、OraLoaderMetadataユーティリティ・プログラムを使用して、データベースからXMLドキュメントに表のメタデータを抽出します。メタデータのドキュメントは、Hadoopクラスタに転送されます。構成プロパティoracle.hadoop.loader.tableMetadataFileを使用して、メタデータ・ドキュメントの場所を指定します。ローダー・ジョブの実行時、このドキュメントがアクセスされ、ターゲット表に関する必要なメタデータ情報がすべて検出されます。

3.2.3.1 OraLoaderMetadataユーティリティの実行

OraLoaderMetadata Javaユーティリティを実行するには、次のJARファイルをCLASSPATH変数に追加します。

- $OLH_HOME/jlib/oraloader.jar

- $OLH_HOME/jlib/ojdbc6.jar

- $OLH_HOME/jlib/oraclepki.jar

注意:
oraclepki.jarライブラリは、Oracle Walletに格納されている資格証明を使用してデータベースに接続する場合にのみ必要です。

次のコマンドを実行します。

java oracle.hadoop.loader.metadata.OraLoaderMetadata \
-user <username> -connection_url <connection URL> [-schema <schemaName>] \
-table <tableName> -output <output filename>

OraLoaderMetadataのパラメータ

OraLoaderMetadataユーティリティは次のパラメータを受け入れます。

- -userはOracle Databaseのユーザー名です。ユーザーは、パスワードを要求されます。

- -connection_urlは、Oracle Databaseに接続する接続URLです。

- -schemaは、ターゲット表を含むスキーマの名前です。指定されない場合、ターゲット表は、接続URLで指定されたユーザー・スキーマ内にあるとみなされます。

- -tableはターゲット表の名前です。

- -outputは、メタデータ・ドキュメントの格納に使用される出力ファイルの名前です。

3.2.4 OraLoaderの起動

OraLoaderは、標準のHadoopツールを使用して実行するHadoopジョブです。OraLoaderは、org.apache.hadoop.util.Toolインタフェースを実装し、MapReduceアプリケーションを構築する標準的なHadoopの方法に従います。OraLoaderは次のアクションを実行します。

1. 入力構成パラメータを読み取り、チェックします。

2. ターゲット表の表と列のメタデータ情報を取得し、チェックします。JDBC接続が確立可能な場合、メタデータがデータベースから取得されます。そうでない場合、oracle.hadoop.loader.tableMetadataFileプロパティで指定された場所に格納されているメタデータがローダーによって検索されます。

3. OraLoaderのMapReduceタスク用に内部構成情報を準備し、表のメタデータ情報と従属するJavaライブラリを分散キャッシュに格納して、クラスタ全体でマップとリデュースのタスクに使用できるようにします。

4. MapReduceジョブをHadoopに発行します。

5. マップとリデュースのタスクの完了後、個々のタスクからのレポート情報をまとめてジョブの共通のログ・ファイルを作成します。ログ・ファイルはジョブ出力ディレクトリの_olhサブディレクトリに書き込まれ、oraloader-report.txtという名前が付けられます。

OraLoaderはコマンドラインから起動され、一般的なコマンドライン・オプションを受け付けます。起動例を次に示します。

HADOOP_CLASSPATH="$HADOOP_CLASSPATH:$OLH_HOME/jlib/*"

bin/hadoop jar $OLH_HOME/jlib/oraloader.jar oracle.hadoop.loader.OraLoader \
-conf MyConf.xml

表3-1に示す入力形式のいずれかの例を使用する場合、OraLoaderの起動に-libjarsオプションを含める必要があります。

bin/hadoop jar $OLH_HOME/jlib/oraloader.jar oracle.hadoop.loader.OraLoader \
-conf MyConf.xml -libjars $OLH_HOME/jlib/oraloader-examples.jar

Oracle NoSQL Database 11gリリース2のKVAvroInputFormatを使用する場合、HADOOP_CLASSPATHに$KVHOME/lib/kvstore-2.0.22.jarを含め、OraLoaderの起動に-libjarsオプションを含める必要があります。

bin/hadoop jar $OLH_HOME/jlib/oraloader.jar oracld.hadoop.loader.OraLoader -conf
MyConf.xml -libjars $KVHOME/lib/kvstore-2.0.22.jar

関連項目:

- Hadoop実行可能ファイルの場所とHADOOP_CLASSPATH変数の設定については、Apache Hadoopのドキュメント

- Apacheサイト(http://hadoop.apache.org/common/docs/r0.20.2/api/org/apache/hadoop/util/GenericOptionsParser.html)にある汎用オプションのJavadoc

3.2.5 Oracle Databaseへのファイルのロード(オフライン・ロードのみ)

オフライン・ロードの場合、Oracle Loader for Hadoopによって、データベース・サーバーにコピーされ、Oracle Databaseにロードされるファイルが生成されます。次の項で、使用可能なオフライン・ロード方法について説明します。

3.2.5.1 デリミタ付きテキスト・ファイルからOracle Databaseへのロード

デリミタ付きテキスト・ファイルをデータベース・システムにコピーしたら、生成された制御ファイルを使用してSQL*Loaderを起動し、デリミタ付きテキスト・ファイルからデータベースにデータをロードします。また、生成されたSQLスクリプトを使用して、外部表のデータベースへのロードを実行することもできます。「デリミタ付きテキスト出力」を参照してください。

3.3 OraLoader起動時の出力モード

この項では、次の出力オプションについて説明します。

- JDBC出力

- Oracle OCIダイレクト・パス出力

- デリミタ付きテキスト出力

- Oracle Data Pump出力

3.3.1 JDBC出力

JDBCは、オンライン・データベース・モードの出力オプションです。ローダー・ジョブの出力レコードは、OraLoaderプロセスの一部としてマップ・タスクまたはリデュース・タスクによって直接ターゲット表にロードされます。データをロードするために追加手順を実行する必要はありません。この出力オプションには、HadoopシステムとOracle Databaseとの間のJDBC接続が必要です。

JDBC出力オプションでは、標準のJDBCバッチを使用してパフォーマンスと効率を向上させます。バッチの実行時に制約違反などのエラーが発生すると、JDBCドライバは最初のエラーで実行を停止します。つまり、バッチに100行あり、10行目でエラーが発生した場合、9行は挿入され、91行は挿入されません。また、JDBCドライバでは、エラーが発生した行を特定するための情報は提供されません。この場合、Oracle Loader for Hadoopでは、バッチ内の各行の挿入ステータスは把握されません。バッチ内のすべての行に問題があるとみなされ、次のバッチのロードが続けられます。発生したバッチ・エラーの数と挿入ステータスに問題のある行の数を示すロード・レポートがジョブの最後に生成されます。この問題に対処する方法の1つは、データに対して一意キーを使用することです。データのロード後、キーを有効にして欠落しているキー値を検出します。ロードに失敗した原因がわかったら、欠落している行を入力ファイル内で特定し、再ロードする必要があります。

JDBC出力形式を選択するには、次のHadoopプロパティを設定します。

<property>
<name>mapreduce.outputformat.class</name>
<value>oracle.hadoop.loader.lib.output.JDBCOutputFormat</value>
</property>

JDBC出力の構成に関連するプロパティはoracle.hadoop.loader.jdbc.defaultExecuteBatchです。これは、バッチのサイズを制御します。

Big Data Appliance (BDA)とExadata間のインフィニバンドによるデータ移動を最適化するには、Sockets Direct Protocol (SDP)を使用できます。SDPプロトコルを指定するには、次のようにします。

- JVMオプションを追加してJDBC SDPエクスポートを有効にします。

HADOOP_OPTS="-Doracle.net.SDP=true -Djava.net.preferIPv4Stack=true"

- SDPプロトコルで接続URLを使用します。ポート1522は、SDP対応リスナーを指し示すため意図的なものになります。

<property>
\u000b
<name>oracle.hadoop.loader.connection.url</name>
\u000b
<value>jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=SDP)
(HOST=example.com}) (PORT=1522))
(CONNECT_DATA=(SERVICE_NAME=example_service))) </value>
\u000b
</property>

関連項目:

- インフィニバンドによる最高のパフォーマンスを確保するためにBDAとExadataを構成する場合の詳細は、Big Data Appliance (BDA)のドキュメント

3.3.2 Oracle OCIダイレクト・パス出力

Oracle OCIダイレクト・パス出力形式は、オンライン・データベース・モードで使用可能です。この出力形式では、OCIダイレクト・パス・インタフェースを使用して、行をターゲット表にロードします。各リデューサが異なるデータベース・パーティションにロードするため、並列ダイレクト・パス・ロードが可能になります。

Oracle OCIダイレクト・パス出力形式を選択するには、次のHadoopプロパティを設定します。

<property>
<name>mapreduce.outputformat.class</name>
<value>oracle.hadoop.loader.lib.output.OCIOutputFormat</value>
</property>

ダイレクト・パス・ストリーム・バッファのサイズは、次のプロパティを使用して制御されます。

<property>
<name>oracle.hadoop.loader.output.dirpathBufsize</name>
<value>131072</value>
<description>
This property is used to set the size, in bytes, of the direct path
stream buffer for OCIOutputFormat. If needed, values are rounded
up to the next nearest multiple of 8k.
</description>
</property>

Big Data Appliance (BDA)とExadata間のインフィニバンドによるデータ移動を最適化するには、Sockets Direct Protocol (SDP)を使用できます。SDPプロトコルを指定するには、次のようにします。

- JVMオプションを追加してJDBC SDPエクスポートを有効にします。

HADOOP_OPTS="-Doracle.net.SDP=true -Djava.net.preferIPv4Stack=true"

- SDPプロトコルで接続URLを使用します。ポート1522は、SDP対応リスナーを指し示すため意図的なものになります。

<property>
\u000b
<name>oracle.hadoop.loader.connection.url</name>
\u000b
<value>jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=SDP)
(HOST=example.com}) (PORT=1522))
(CONNECT_DATA=(SERVICE_NAME=example_service))) </value>
\u000b
</property>

関連項目:

- インフィニバンドによる最高のパフォーマンスを確保するためにBDAとExadataを構成する場合の詳細は、Big Data Appliance (BDA)のドキュメント

Oracle OCIダイレクト・パス出力形式には、次の制限があります。

- Linux x86.64プラットフォームでのみ使用できます。

- ロード・ターゲット表は、パーティション化されている必要があります。

- リデューサの数は、ゼロより大きい数である必要があります。

- OCIダイレクト・パス出力では、サブパーティション・キーにCHAR、VARCHAR2、NCHARまたはNVARCHAR2列が含まれるコンポジット時間隔パーティション表をロードできません。ローダーはこの状態をチェックし、ターゲット・ロード表がこの条件に合う場合、エラーで停止します。サブパーティション・キーに文字型の列が含まれないコンポジット時間隔パーティションはサポートされます。

Oracle OCIダイレクト・パス出力形式には、次の構成手順が必要です。この手順によって、ローダーで、出力形式を実装するC共有ライブラリの検出が可能になります。これらのライブラリは自動的に配布され、Hadoop分散キャッシュ・メカニズムを使用するノードが導出されます。

1. ディレクトリ$OLH_HOME/libを指し示す環境変数JAVA_LIBRARY_PATHを作成します。この環境変数は、ジョブが発行されるノードにのみ必要です。ジョブの作成時、CDHの$HADOOP_HOME/bin/hadoopコマンドは、この変数の値をJavaシステム・プロパティjava.library.pathに自動的に挿入します。Apache Hadoopディストリビューションの場合、新しい値と既存の値が連結されるように$HADOOP_HOME/bin/hadoopコマンドを編集する必要があります。Apache hadoopコマンドは、空のJAVA_LIBRARY_PATH値から開始され、環境から値をインポートしません。

2. ローダー・ジョブが発行されるクライアントでLD_LIBRARY_PATH変数に$OLH_HOME/libを追加します。

3.3.3 デリミタ付きテキスト出力

デリミタ付きテキストは、オフライン・データベース・モードの出力オプションです。カンマ区切り(CSV)形式のファイルまたは他のデリミタ付きテキスト・ファイルは、マップまたはリデュース・タスクによって生成されます。これらのファイルは、SQL*Loaderまたは外部表を使用してターゲット表にロードされます。

デリミタ付きテキスト出力形式を選択するには、次のHadoopプロパティを設定します。

<property>
<name>mapreduce.outputformat.class</name>
<value>oracle.hadoop.loader.lib.output.DelimitedTextOutputFormat</value>
</property>

各出力タスクで、デリミタ付きテキスト形式ファイルと、SQL*Loader制御ファイルが生成されます(例3-1を参照)。表がパーティション化されない場合やoracle.hadoop.loader.loadByPartition=falseの場合、ジョブ全体のSQL*Loader制御ファイルが1つ生成されます。さらに、1つのSQLスクリプトが生成され、デリミタ付きテキスト・ファイルをターゲット表にロードします。

デリミタ付きテキストファイルには、次のテンプレートがあります。

oraloader-${taskId}-csv-${partitionId}.dat

SQL*Loader制御ファイル名には、次のテンプレートがあります。

oraloader-${taskId}-csv-${partitionId}.ctl

テンプレート・パラメータの定義は次のとおりです。

${taskId}: マッパー(リデューサ)ID

${partitionId}: パーティション識別子

表がパーティション化されない場合やoracle.hadoop.loader.loadByPartition=falseの場合、1つのSQL*Loader制御ファイルoraloader-csv.ctlが生成されます。

外部表にロードするためのSQLスクリプトはoraloader-csv.sqlと呼ばれます。

デリミタ付きテキスト・ファイル内のレコードとフィールドの形式は、次のプロパティによって制御されます。

- oracle.hadoop.loader.output.fieldTerminator: フィールドを区切る1文字を特定します。

- oracle.hadoop.loader.output.initialFieldEncloser: フィールドの開始を特定します。これは、この文字とtrailingFieldEncloser文字でフィールドが常に囲まれていることを示します。

- oracle.hadoop.loader.output.trailingFieldEncloser: 設定しない場合、initialFieldEncloserの値とみなされます。

- oracle.hadoop.loader.output.escapeEnclosers: 埋込みの終了フィールド囲み文字のエスケープに使用される文字を特定します。

例3-1に、出力タスクで生成されるサンプルSQL*Loader制御ファイルを示します。

例3-1 サンプルSQL*Loader制御ファイル

LOAD DATA CHARACTERSET AL32UTF8
INFILE 'oraloader-csv-1-0.dat'
BADFILE 'oraloader-csv-1-0.bad'
DISCARDFILE 'oraloader-csv-1-0.dsc'
INTO TABLE "SCOTT"."CSV_PART" PARTITION(10) APPEND
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
(
"ID"      DECIMAL EXTERNAL,
"NAME"    CHAR,
"DOB"     DATE 'SYYYY-MM-DD HH24:MI:SS'
)

3.3.4 Oracle Data Pump出力

Oracle Data Pump出力形式は、オフライン・データベース・モードで使用可能です。外部表とORACLE_DATAPUMP アクセス・ドライバを使用してターゲット表にロードされるバイナリ形式ファイルがローダーによって生成されます。出力ファイルは、HDFSファイルシステムから、Oracle Databaseにアクセス可能なローカル・ファイルシステムにコピーされる必要があります。

Oracle Data Pump出力形式を選択するには、次のHadoopプロパティを設定します。

<property>
<name>mapreduce.outputformat.class</name>
<value>oracle.hadoop.loader.lib.output.DataPumpOutputFormat</value>
</property>

Oracle Data Pump出力ファイル名には、次のテンプレートがあります。

oraloader-${taskId}-dp-${partitionId}.dat

Oracle Loader for Hadoopで、次のタスクを実行するコマンドを含むSQLファイルも生成されます。

1. ORACLE_DATAPUMPアクセス・ドライバを使用する外部表定義を作成します。バイナリ形式のOracle Data Pump出力ファイルは、外部表のLOCATION句にリストされます。

2. 外部表によって使用されるディレクトリ・オブジェクトを作成します。このコマンドは、使用する前にコメント解除される必要があります。生成されるディレクトリ名をSQLファイルに指定するには、次のプロパティを設定します。

<property>
<name>oracle.hadoop.loader.extTabDirectoryName</name>
<value>OLH_EXTTAB_DIR</value>
<description>
The name of the Oracle directory object for the external table's
LOCATION data files. This property applies only to the CSV and
DataPump output formats.
</description>
</property>

3. 外部表からターゲット表に行を挿入します。このコマンドは、使用する前にコメント解除される必要があります。

SQLファイルは、ジョブの出力ディレクトリ内の_olhディレクトリに配置されます。

関連項目:

- 外部表の作成と管理の詳細は、『Oracle Database管理者ガイド』

- ORACLE_DATAPUMPアクセス・ドライバの詳細は、『Oracle Databaseユーティリティ』

3.4 エラー処理と診断

Oracle Loader for Hadoopは、次のような様々な理由で入力レコードを拒否します。

- 不正なloaderMapファイル

- フィールドの不足

- 表の無効なパーティションへのレコードのマップ

- 不正な書式のレコード(たとえば、フィールドが日付形式に一致しない場合や、レコードが正規表現パターンに一致しない場合など)

問題の原因となるレコードとエラー・メッセージのログを明示的に記録する方法の手順については、「拒否されたレコードの不正なファイルへのロギング」を参照してください。

エラーの検出が多すぎる場合にジョブを早期に停止するようにOracle Loader for Hadoopを構成する手順については、「ジョブの拒否制限の設定」を参照してください。

3.4.1 拒否されたレコードの不正なファイルへのロギング

デフォルトでは、Oracle Loader for Hadoopは、拒否されたレコードをHadoopログに記録せず、拒否されたレコードの識別方法のみを記録します。これにより、クラスタ全体に散在しているHadoopログにユーザーの機密情報が格納されることはありません。拒否されたレコードの識別方法の詳細は、「InputFormatの実装」のgetCurrentKey()に関する説明を参照してください。

拒否されたレコードを記録するようにOracle Loader for Hadoopを管理するには、構成プロパティoracle.hadoop.loader.logBadRecordsをtrue (デフォルトはfalse)に設定します。このプロパティをtrueに設定すると、Oracle Loader for Hadoopは、ジョブの出力ディレクトリ内にある_olh/ディレクトリの1つ以上の「不正な」ファイルに不正なレコードを記録します。

このプロパティは、入力形式とマッパーで拒否されるレコードに適用されます。サンプリング機能(「パーティション表にデータをロードする場合のロード・バランシング」を参照)や出力形式(「JDBC出力」および「Oracle OCIダイレクト・パス出力」を参照)で検出されるエラーには適用されません。

3.4.2 ジョブの拒否制限の設定

不正なloaderMapファイルを使用するなどの特定の問題により、Oracle Loader for Hadoopが入力のすべてのレコードを拒否することがあります。このような問題による時間の無駄を軽減するため、 Oracle Loader for Hadoopは、1000を超えるレコードが拒否される場合にジョブを中止します。拒否レコードの最大許可数を変更するには、構成プロパティoracle.hadoop.loader.rejectLimitを使用します。このプロパティを負の値にすると、拒否制限が無効になり、拒否されるレコードの数に関係なくジョブの実行が完了します。

入力形式のエラーは、致命的でマップ・タスクが中止になるため、拒否制限に反映されないことに注意してください。サンプリング機能(「パーティション表にデータをロードする場合のロード・バランシング」を参照)や出力形式(「JDBC出力」および「Oracle OCIダイレクト・パス出力」を参照)で検出されるエラーも拒否制限に反映されません。

3.5 パーティション表にデータをロードする場合のロード・バランシング

パーティション化されたデータベース表にデータをロードするときにリデューサ間で負荷を分散させるには、Oracle Loader for Hadoopのサンプリング機能を使用します。

リデューサの実行時間は、通常、処理するレコードの数に比例します。レコードが多いほど、実行時間は長くなります。サンプリング機能が無効の場合、特定のデータベース・パーティションのすべてのレコードが1つのリデューサに送られます。データベース・パーティションによってレコードの数が異なることがあるため、これによってリデューサの負荷は不均等になります。Hadoopジョブの実行時間は、最も遅いリデューサの実行時間であるため、リデューサの負荷が不均等な場合、ジョブ全体のパフォーマンスが低下します。

レコードをリデューサ間で均等に分割すると、リデューサの負荷は分散されますが、データベースに挿入する前に、データベース・パーティションごとにレコードが分類されるわけでは必ずしもありません。

Oracle Loader for Hadoopのサンプリング機能では、リデューサの負荷を分散させると同時に、データベース・パーティションごとにレコードを分類する、効率的なMapReduceパーティション化スキームが生成されます。

3.5.1 サンプリング機能の使用方法

サンプリング機能を有効にするには、構成プロパティoracle.hadoop.loader.sampler.enableSamplingをtrueに設定します。

enableSamplingプロパティがtrueに設定されている場合でも、サンプリングが不要な場合、または適切なサンプルを作成できないとローダーが判断した場合、ローダーによってサンプリング機能が自動的に無効になります。たとえば、表がパーティション化されていない場合、リデューサ・タスクの数が2未満の場合、または入力データが少なすぎて適切なロード・バランシングの計算ができない場合、サンプリングが自動的に無効になります。このような場合、ローダーは情報メッセージを返します。

注意:
サンプラはマルチスレッド化され、各サンプラ・スレッドは、指定されたInputFormatクラスのコピーをインスタンス化します。Oracle Loader for Hadoopに提供される新規のInputFormatの実装では、静的でミュータブルなデータ構造が複数のスレッド・アクセスに対して必ず同期化されます。
ローダー・ジョブが発行されるクライアント・ノードでサンプラがメモリー不足エラーを返す場合があります。これは、InputFormatによって返される入力分割がメモリーに収まらない場合に起こります。

この問題に対する考えられる解決策は、次のとおりです。

- ジョブが発行されるJVMのヒープ・サイズを大きくします。

- 次のプロパティを調整します。

oracle.hadoop.loader.sampler.hintMaxSplitSize
oracle.hadoop.loader.sampler.hintNumMapTasks

これらのプロパティの説明については、「構成プロパティのXMLドキュメント」を参照してください。

3.5.2 ロード・バランシングとサンプリング動作のチューニング

Oracle Loader for Hadoopには、ロード・バランシングとサンプリング動作のチューニングに使用できるプロパティが用意されています。これらのプロパティについては、「ロード・バランシング機能に関する主な構成プロパティ」でまとめられています。

3.5.2.1 ロード・バランシングをチューニングするプロパティ

ロード・バランシングの目標は、すべてのリデューサにほぼ同量の処理を割り当てるMapReduceパーティション化スキームを生成することです。このスキームは、Oracle Loader for Hadoopのジョブの実行時のパーティション化ステップで使用されます。

2つのプロパティmaxLoadFactorとloadCIがロード・バランシングの質を制御します。サンプラは、所定のリデューサ負荷係数を使用してパーティション化スキームの質を評価します。負荷係数は、リデューサの負荷が、完全に分散されたリデューサの負荷とどの程度違っているかを示すメトリックです。負荷係数1は、完全に分散された負荷(過負荷ではない)を表します。

負荷係数が小さい場合、負荷分散が適切であることを表します。maxLoadFactorのデフォルト0.05は、5%以上の過負荷状態になるリデューサがないことを表します。サンプラでは、loadCIの値で決まる統計的信頼度でこのmaxLoadFactorが保証されます。loadCIのデフォルト値は0.95で、maxLoadFactorを超えるリデューサの負荷係数は5%のみであることを表します。

サンプラの実行時間と負荷分散の質の間にはトレードオフがあります。maxLoadFactorの値を低くしてloadCIの値を高くすると、リデューサの負荷はより均等化されますが、サンプリング時間は長くなります。デフォルト値maxLoadFactor=0.05およびloadCI値=0.95により、ロード・バランシングの質と実行時間のバランスが適切に保たれます。

3.5.2.2 サンプリング動作をチューニングするプロパティ

デフォルトでは、サンプラは、maxLoadFactorとloadCIの基準を満たすパーティション化スキームを生成するのに十分なサンプルを収集するまで実行されます。

ただし、サンプラがサンプリングを停止する最大レコード数を指定するmaxSamplesPctプロパティを使用すると、サンプラの実行時間を制限できます。

3.5.3 Oracle Loader for Hadoopは常にサンプラのパーティション化スキームを使用するのか

Oracle Loader for Hadoopでは、サンプリングが成功の場合にのみ、生成されたパーティション化スキームを使用します。統計的信頼度loadCIで保証される最大リデューサ負荷係数(1+ maxLoadFactor)のパーティション化スキームが生成される場合、サンプリングは成功です。デフォルト値maxLoadFactor、loadCIおよびmaxSamplesPctにより、サンプラは、様々な入力データ分布に対する質の高いパーティション化スキームを正常に生成できます。ただし、サンプラが制約を満たすパーティション化スキームの生成に失敗することがあります(制約が厳しすぎる場合や、必要なサンプルの数が、ユーザーが指定した最大数であるmaxSamplesPctを超えている場合など)。このような場合、Oracle Loader for Hadoopは、十分なサンプルがなかったことを示すログ・メッセージを出力します。デフォルトであるデータベース・パーティション別のレコードの分割を行い、ロード・バランシングは保証されません(「ロード・バランシングとサンプリング動作のチューニング」を参照してください)。

代替策は、構成プロパティの値を緩和することです。これは、maxSamplesPctを増やすか、maxLoadFactorまたはloadCI、あるいはその両方を減らすことによって行えます。

3.5.4 サンプリング機能のプロパティの値が無効な場合

サンプリング機能の構成プロパティが、許容可能な範囲外の値に設定されている場合、例外は返されません。かわりに、サンプラは警告メッセージを出力し、プロパティをデフォルト値に設定して実行を続けます。

3.5.5 ロード・バランシング機能に関する主な構成プロパティ

次に、サンプリング動作のチューニングで使用できる主なプロパティを示します。これらのプロパティの詳細は、「構成プロパティのXMLドキュメント」を参照してください。

Hadoopサンプリングの構成プロパティ

oracle.hadoop.loader.sampler.maxSamplesPct

型: Float

デフォルト: 0.01

許容可能な範囲: [0, 1]

0以下の値の場合、このプロパティは無効になります。

説明: 最大サンプル・サイズ(入力データ内のレコード数の割合)。値0.05は、サンプラがサンプリングするのはレコードの総数の5%以下であることを示します。サンプラは、これより少ないサンプルを収集します。

oracle.hadoop.loader.sampler.maxLoadFactor

型: Float

デフォルト: 0.05

許容可能な範囲: >0

0以下の値の場合、プロパティがデフォルトに再設定されます。

説明: リデューサ作業負荷に対する最大許容負荷係数。

oracle.hadoop.loader.sampler.loadCI

型: Float

デフォルト: 0.95

許容可能な範囲: >=0.5および<1

推奨値は>=0.9です。値が<0.5の場合、プロパティがデフォルトに再設定されます。

説明: リデューサの最大負荷係数に対する統計的信頼度。デフォルト以外でよく使用される値は0.90と0.99です。

3.6 OraLoaderの構成プロパティ

OraLoaderは、構成プロパティの指定にHadoopの標準的なメソッドを使用します。これらのプロパティは、構成ファイルで指定するか、GenericOptionsParserおよびToolRunnerに対して-D property=value optionを使用して指定できます。

次に、Oracle Loader for Hadoopの主なジョブ構成プロパティに関して簡単に説明します。すべての構成プロパティの一覧と詳細は、「構成プロパティのXMLドキュメント」 のoraloader-conf.xmlドキュメントを参照してください。

3.6.1 主なジョブ構成プロパティ

次に、Oracle Loader for Hadoopの主なジョブ構成プロパティについて説明します。

oracle.hadoop.loader.targetTable

型: String

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

説明: ロード先の表のスキーマで修飾された名前。このオプションを使用して、表のすべての列がロードされることと、入力フィールドの名前が列名と一致することを示します。このプロパティは、oracle.hadoop.loader.loaderMapFileプロパティよりも優先されます。表がスキーマで修飾されない場合、Oracle Loader for Hadoopでは接続ユーザーが使用されます。

oracle.hadoop.loader.loaderMapFile

型: String

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

説明: ローダー・マップ・ファイルへのパス

oracle.hadoop.loader.tableMetadataFile

型: String

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

説明: ターゲット表のメタデータ・ファイルへのパス。切断モードで実行する場合、このオプションを使用します。表のメタデータ・ファイルは、OraLoaderMetadataユーティリティを実行すると作成されます。

oracle.hadoop.loader.olhcachePath

型: String

デフォルト: ${mapred.output.dir}/../olhcache

説明: Oracle Loader for Hadoopが、DistributedCacheにロードされるファイルを作成できるディレクトリのパス。分散モードでは、値はHDFSパスである必要があります。

oracle.hadoop.loader.extTabDirectoryName

型: String

デフォルト: OLH_EXTTAB_DIR

説明: 外部表のLOCATIONデータ・ファイルのデータベース・ディレクトリ・オブジェクトの名前。このプロパティは、デリミタ付きテキストとデータ・ポンプ出力形式にのみ適用されます。

oracle.hadoop.loader.sampler.enableSampling

型: Boolean

デフォルト: true

説明: サンプリング機能が有効かどうかを示します。

oracle.hadoop.loader.enableSorting

型: Boolean

デフォルト: true

説明: 各リデューサ・グループ内の出力レコードが、表の主キーでソートされるかどうかを示します。

oracle.hadoop.loader.connection.url

型: String

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

説明: データベース接続文字列のURLを指定します。このプロパティは、他のすべての接続プロパティより優先されます。Oracle Walletが外部パスワード・ストアとして構成されている場合、プロパティ値は、ドライバ接頭辞jdbc:oracle:thin:@で始まる必要があり、db_connect_stringは、ウォレットに定義されている資格証明と完全に一致する必要があります。

oracle.hadoop.loader.connection.user

型: String

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

説明: データベース・ログインの名前

oracle.hadoop.loader.connection.password

型: String

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

説明: 接続するユーザーのパスワード

oracle.hadoop.loader.connection.wallet_location

型: String

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

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

Oracle Walletを外部パスワード・ストアとして使用する場合、次の3つのプロパティを設定します。

- oracle.hadoop.loader.connection.wallet_location

- oracle.hadoop.loader.connection.url

- oracle.hadoop.loader.connection.tns_admin

または、次の3つのプロパティを設定します。

- oracle.hadoop.loader.connection.wallet_location

- oracle.hadoop.loader.connection.tnsEntryName

- oracle.hadoop.loader.connection.tns_admin

oracle.hadoop.loader.connection.tnsEntryName

型: String

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

説明: tnsnames.oraファイルに定義されたTNSエントリ名を指定します。このプロパティは、oracle.hadoop.loader.connection.tns_adminプロパティと一緒に使用されます。

oracle.hadoop.loader.connection.tns_admin

型: String

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

説明: sqlnet.oraやtnsnames.oraなどのSQL*Net構成ファイルを含むディレクトリのファイル・パス。このプロパティが定義されない場合、環境変数TNS_ADMINの値が使用されます。データベース接続文字列でTNSエントリ名を使用する場合、このプロパティを定義します。

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

oracle.hadoop.loader.connection.defaultExecuteBatch

型: Integer

デフォルト: 100

説明: JDBCおよびOCIダイレクト・パス出力形式にのみ適用されます。データベースへのトリップごとにバッチで挿入されるレコードの数のデフォルト値。1より大きい値を指定すると、デフォルト値がオーバーライドされます。指定された値が1より小さい場合、このプロパティはデフォルト値をとります。最大値の制限はありませんが、パフォーマンスはあまり向上せずにメモリー・フットプリントが大きくなるため、非常に大きいバッチ・サイズを使用することは推奨されません。

oracle.hadoop.loader.connection.sessionTimeZone

型: String

デフォルト: LOCAL

説明: このプロパティは、データベース接続のセッション・タイムゾーンの変更に使用されます。有効な値は次のとおりです。

- [+|-] hh:mm: UTCとの差分の時間数と分数

- LOCAL: JVMのデフォルト・タイムゾーン

- time_zone_region: 有効なタイムゾーン・リージョン

このプロパティは、TIMESTAMP、TIMESTAMP WITH TIME ZONEおよびTIMESTAMP WITH LOCAL TIME ZONEのデータベース列にロードされる入力データの解析に使用されるデフォルト・タイムゾーンも決定します。

oracle.hadoop.loader.output.dirpathBufsize

型: Integer

デフォルト: 131072

説明: このプロパティは、OCIOutputFormatのダイレクト・パス・ストリーム・バッファのサイズ(バイト)の設定に使用されます。必要に応じて、値は8KBの倍数に切り上げられます。

oracle.hadoop.loader.output.fieldTerminator

型: String

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

説明: DelimitedTextOutputFormatのフィールドを区切る1文字。

代替表記: \uHHHH (HHHHは文字のUTF-16エンコーディング)。

oracle.hadoop.loader.output.initialFieldEncloser

型: String

デフォルト: なし

説明: この値が設定されている場合、指定された文字(デフォルトでこのプロパティの値に設定)と${oracle.hadoop.loader.output.trailingFieldEncloser}でフィールドは常に囲まれます。

この値を設定する場合、1文字または\uHHHH (HHHHは文字のUTF-16エンコーディング)である必要があります。ゼロ長値は囲み文字がないことを表します(デフォルト値)。

${oracle.hadoop.loader.output.initialFieldEncloser}および${oracle.hadoop.loader.output.trailingFieldEncloser}は、両方とも設定しないか、両方とも設定する必要があります。

一部のフィールドにfieldTerminatorが含まれる場合はこれらのプロパティを使用します。一部のフィールドにtrailingFieldEncloserも含まれる場合は、escapeEnclosersプロパティをtrueに設定します。

oracle.hadoop.loader.output.trailingFieldEncloser

型: String

デフォルト: なし

説明: この値が設定されている場合、フィールドは常に${oracle.hadoop.loader.output.initialFieldEncloser}とこのプロパティに指定された文字で囲まれます。

この値を設定する場合、1文字または\uHHHH (HHHHは文字のUTF-16エンコーディング)である必要があります。ゼロ長値は囲み文字がないことを表します(デフォルト値)。

この値が設定されない場合、${oracle.hadoop.loader.output.initialFieldEncloser}の値がかわりに使用されます。

${oracle.hadoop.loader.output.initialFieldEncloser}が設定されない場合、このプロパティを設定しないでください。

一部のフィールドにfieldTerminatorが含まれる場合はこれらのプロパティを使用します。一部のフィールドにtrailingFieldEncloserも含まれる場合は、escapeEnclosersプロパティをtrueに設定します。

oracle.hadoop.loader.output.escapeEnclosers

型: Boolean

デフォルト: false

説明: これがtrueに設定され、開始と終了の両方のフィールド囲み文字が設定されている場合、フィールドが走査され、埋込みの終了囲み文字がエスケープされます。フィールド値に終了囲み文字が含まれている可能性がある場合、このオプションを使用します。

oracle.hadoop.loader.input.fieldTerminator

型: String

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

説明: DelimitedTextInputFormatのフィールドを区切る1文字。

代替表記: \uHHHH (HHHHは文字のUTF-16エンコーディング)。

oracle.hadoop.loader.input.initialFieldEncloser

型: String

デフォルト: なし

説明: この値が設定されている場合、指定された文字(デフォルトでこのプロパティの値に設定)と${oracle.hadoop.loader.input.trailingFieldEncloser}でフィールドを囲むことができます。

この値を設定する場合、1文字または\uHHHH (HHHHは文字のUTF-16エンコーディング)である必要があります。

ゼロ長値は囲み文字がないことを表します(デフォルト値)。

oracle.hadoop.loader.input.trailingFieldEncloser

型: String

デフォルト: なし

説明: この値が設定されている場合、${oracle.hadoop.loader.input.initialFieldEncloser}と指定された文字でフィールドを囲むことができます。

この値を設定する場合、1文字または\uHHHH (HHHHは文字のUTF-16エンコーディング)である必要があります。ゼロ長値は囲み文字がないことを表します(デフォルト値)。

${oracle.hadoop.loader.input.initialFieldEncloser}および${oracle.hadoop.loader.input.trailingFieldEncloser}は、両方とも設定しないか、両方とも設定する必要があります。

oracle.hadoop.loader.input.fieldNames

型: 文字列のカンマ区切りのリスト

デフォルト: F0,F1,F2,...

説明: 入力フィールドに割り当てられる名前。名前は、レコードのAvroスキーマの作成に使用されます。文字列は、有効なJSON名文字列である必要があります。

3.6.2 一般的なプロパティ

次に、Oracle Loader for Hadoopの一般的なプロパティについて説明します。

mapreduce.inputformat.class

InputFormatを実装するクラスの名前

mapreduce.outputformat.class

Oracle Loader for Hadoopでサポートされる出力オプション。値は次のとおりです。

- oracle.hadoop.loader.lib.output.DelimitedTextOutputFormat
データ・レコードを、カンマ区切り(CSV)形式ファイルなどのデリミタ付きテキスト形式ファイルに書き込みます。

- oracle.hadoop.loader.lib.output.JDBCOutputFormat
JDBCを使用してデータ・レコードをターゲット表に挿入します。

- oracle.hadoop.loader.lib.output.OCIOutputFormat
Oracle OCIダイレクト・パス・インタフェースを使用して、行をターゲット表に挿入します。

- oracle.hadoop.loader.lib.output.DataPumpOutputFormat
外部表を使用してターゲット表にロードされるバイナリ形式ファイルに行を書き込みます。

3.7 Oracle Loader for Hadoopの使用例

この項に示す例では、JDBCを使用するオンライン・データベース・モードでOracle Loader for Hadoopを使用します。次のステップがあります。

1. データベースに表を作成します。この例では、Oracle DatabaseのHRサンプル・スキーマの一部として入手できるHR.EMPLOYEES表が使用されます。

2. oracle.hadoop.loader.examplesパッケージの例と同様のInputFormatクラスを実装します。

3. 構成プロパティを設定します。MyLoaderMap.xmlドキュメントには、次のように入力データ・フィールドとHR.EMPLOYEES表の列のマッピングが含まれます。

<?xml version="1.0" encoding="UTF-8"?>
<LOADER_MAP>
<SCHEMA>HR</SCHEMA>
<TABLE>EMPLOYEES</TABLE>
<COLUMN field="empId">EMPLOYEE_ID</COLUMN>
<COLUMN field="lastName">LAST_NAME</COLUMN>
<COLUMN field="email">EMAIL</COLUMN>
<COLUMN field="hireDate" format="MM-dd-yyyy">HIRE_DATE</COLUMN>
<COLUMN field="jobId">JOB_ID</COLUMN>
</LOADER_MAP>

MyConf.xmlの構成プロパティは次のとおりです。

<configuration>
<property>
<name>mapreduce.inputformat.class</name>
<value><full_class_name>.MyInputFormat</value>
<description> Name of the class implementing InputFormat </description>
</property>

<property>
<name>mapreduce.outputformat.class</name>
<value>oracle.hadoop.loader.lib.output.JDBCOutputFormat</value>
<description> Output mode after the loader job executes on Hadoop  </description>
</property>

<property>
<name>oracle.hadoop.loader.loaderMapFile</name>
<value>MyLoaderMap.xml</value>
<description> The loaderMap file specifying the mapping of input data
fields to the table columns </description>
</property>

<property>
<name>oracle.hadoop.loader.connection.user</name>
<value>HR</value>
<description> Name of the user connecting to the database</description>
</property>

<property>
<name>oracle.hadoop.loader.connection.password</name>
<value>[HR password]</value>
<description>Password of the user connecting to the database</description>
</property>

<property>
<name>oracle.hadoop.loader.connection.url</name>
<value>jdbc:oracle:thin:@//example.com:1521/serviceName</value>
<description> Database connection string </description>
</property>
</configuration>

4. OraLoaderを起動します。

bin/hadoop jar oraloader.jar oracle.hadoop.loader.OraLoader -libjars \
avro-1.4.1.jar, MyInputFormat.jar -conf MyConf.xml \
-fs [<local|namenode:port>] \
-jt [<local|jobtracker:port>]

3.8 ターゲット表の特性

Oracle Loader for Hadoopでは、ターゲット表と呼ばれる1つの表へのロードがサポートされます。ターゲット表はOracle Database内に存在する必要があります。データを含めることも、空にすることもできます。

3.8.1 サポートされるデータ型

Oracle Loader for Hadoopでは、次のデータベース組込みデータ型がサポートされます。

- VARCHAR2

- CHAR

- NVARCHAR2

- NCHAR

- NUMBER

- FLOAT

- RAW

- BINARY_FLOAT

- BINARY_DOUBLE

- DATE

- TIMESTAMP

- TIMESTAMP WITH TIME ZONE

- TIMESTAMP WITH LOCAL TIME ZONE

- INTERVAL YEAR TO MONTH

- INTERVAL DAY TO SECOND

ターゲット表には、サポートされていないデータ型の列が含まれていてもかまいませんが、これらの列はnull値可能である必要があります。そうでない場合、値を設定します。

3.8.2 サポートされるパーティション化方法

Oracle Loader for Hadoopでは、次の単一レベルおよび複合レベルのパーティション化方法がサポートされます。

- レンジ

- リスト

- ハッシュ

- 時間隔

- レンジ-レンジ

- レンジ-ハッシュ

- レンジ-リスト

- リスト-レンジ

- リスト-ハッシュ

- リスト-リスト

- ハッシュ-レンジ

- ハッシュ-ハッシュ

- ハッシュ-リスト

- 時間隔-レンジ

- 時間隔-ハッシュ

- 時間隔-リスト

Oracle Loader for Hadoopでは、参照パーティション化または仮想列ベースのパーティション化はサポートされません。

3.9 ローダー・マップXMLスキーマ定義

この項には、ターゲット表にロードされる列を指定するローダー・マップのXMLスキーマ定義(XSD)があります。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema elementFormDefault="qualified" attributeFormDefault="unqualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:attributeGroup name="columnAttrs">
<xs:annotation>
<xs:documentation>Column attributes define how to map input fields to the
database column. field - is the name of the field in the
IndexedRecord input object. The field name need not be
unique. This means that the same input field can map to
different columns in the database table. format - is a
format string for interpreting the input. For example,
if the field is a date then the format is a date format
string suitable for interpreting dates</xs:documentation>
</xs:annotation>
<xs:attribute name="field" type="xs:token" use="optional"/>
<xs:attribute name="format" type="xs:token" use="optional"/>
</xs:attributeGroup>
<xs:simpleType name="TOKEN_T">
<xs:restriction base="xs:token">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="LOADER_MAP">
<xs:complexType>
<xs:sequence>
<xs:element name="SCHEMA" type="TOKEN_T" minOccurs="0"/>
<xs:element name="TABLE" type="TOKEN_T" nillable="false"/>
<xs:element name="COLUMN" maxOccurs="unbounded" minOccurs="0">
<xs:annotation>
<xs:documentation>specifies the database column name that will be
loaded. Each column name must be unique.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="TOKEN_T">
<xs:attributeGroup ref="columnAttrs"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

3.10 構成プロパティのXMLドキュメント

これはoraloader-conf.xmlドキュメントで、Oracle Loader for Hadoopの構成プロパティを示します。

<?xml version="1.0"?>
<!--
Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.

NAME
oraloader-conf.xml

DESCRIPTION
This file is loaded as the very first conf resource.
-->
<configuration>
<property>
<name>oracle.hadoop.loader.libjars</name>
<value>${oracle.hadoop.loader.olh_home}/jlib/ojdbc6.jar,
${oracle.hadoop.loader.olh_home}/jlib/orai18n.jar,
${oracle.hadoop.loader.olh_home}/jlib/orai18n-utility.jar,
${oracle.hadoop.loader.olh_home}/jlib/orai18n-mapping.jar,
${oracle.hadoop.loader.olh_home}/jlib/orai18n-collation.jar,
${oracle.hadoop.loader.olh_home}/jlib/oraclepki.jar,
${oracle.hadoop.loader.olh_home}/jlib/osdt_cert.jar,
${oracle.hadoop.loader.olh_home}/jlib/osdt_core.jar,
${oracle.hadoop.loader.olh_home}/jlib/commons-math-2.2.jar,
${oracle.hadoop.loader.olh_home}/jlib/jackson-core-asl-1.8.8.jar,
${oracle.hadoop.loader.olh_home}/jlib/jackson-mapper-asl-1.8.8.jar,
${oracle.hadoop.loader.olh_home}/jlib/avro-1.6.3.jar,
${oracle.hadoop.loader.olh_home}/jlib/avro-mapred-1.6.3.jar</value>
<description>
Comma separated list of library jar files. These jars are
appended to the value of the "-libjars" command-line argument.
Users can distribute their application jars using this property
in place of, or in combination with, the "-libjars" option.

It is invalid for this list to have a leading comma or
consecutive commas.
</description>
</property>
<property>
<name>oracle.hadoop.loader.sharedLibs</name>
<value>
${oracle.hadoop.loader.olh_home}/lib/libolh11.so,
${oracle.hadoop.loader.olh_home}/lib/libclntsh.so.11.1,
${oracle.hadoop.loader.olh_home}/lib/libnnz11.so,
${oracle.hadoop.loader.olh_home}/lib/libociei.so
</value>
<description>
These files are appended to the value of the "-files"
command-line argument.

It is invalid for this list to have a leading comma or
consecutive commas.
</description>
</property>
<property>
<name>oracle.hadoop.loader.olh_home</name>
<value/>
<description>
A path to the OLH_HOME on the node where the OraLoader job
is initiated. OraLoader uses this path to locate required libraries.
If this property is not defined, OraLoader will use the value in the
environment variable OLH_HOME.
</description>
</property>
<property>
<name>mapred.job.name</name>
<value>OraLoader</value>
<description>
Hadoop job name for this Oracle loader job.
</description>
</property>
<property>
<name>oracle.hadoop.loader.targetTable</name>
<value/>
<description>
A schema qualified name for the table to be loaded. Use this
property to indicate that all columns of the table will be
loaded and that the names of the input fields match the
column names. This property takes precedence over the
oracle.hadoop.loader.loaderMapFile property. By default
this property is not defined. If the table is not schema-qualified,
then Oracle Loader for Hadoop uses the connection user.
</description>
</property>
<property>
<name>oracle.hadoop.loader.defaultDateFormat</name>
<value>yyyy-MM-dd HH:mm:ss</value>
<description>
A java.text.SimpleDateFormat pattern that is used to parse any input
field into a DATE column. The format is constructed using
the default locale. If you need different patterns for different input
fields, then specify the pattern for each input field using the "format"
attribute of the COLUMN element definition in the loader map file
</description>
</property>
<property>
<name>oracle.hadoop.loader.loaderMapFile</name>
<value/>
<description>
Path to the loader map file.
Use a file:// scheme to indicate a local file.
</description>
</property>
<property>
<name>oracle.hadoop.loader.tableMetadataFile</name>
<value/>
<description>
Path to the target table metadata file. Use this property when
running in disconnected mode. The table metadata file is
created by running the OraLoaderMetadata utility.
Use a file:// scheme to indicate a local file.
</description>
</property>
<property>
<name>oracle.hadoop.loader.olhcachePath</name>
<value>${mapred.output.dir}/../olhcache</value>
<description>
Path to a directory where Oracle Loader for Hadoop can create
files that will be loaded into the DistributedCache.

The default value is a directory called 'olhcache' in the parent directory
of the job's output directory (i.e. ${mapred.output.dir}).

In distributed mode, the value must be a hdfs path
(see javaDoc for org.apache.hadoop.filecache.DistributedCache).
</description>
</property>
<property>
<name>oracle.hadoop.loader.loadByPartition</name>
<value>true</value>
<description>
Instructs the output format to perform a partition-aware load.
For DelimitedText output format, this option controls whether the
keyword "PARTITION" appears in the generated .ctl file(s).
</description>
</property>
<property>
<name>oracle.hadoop.loader.extTabDirectoryName</name>
<value>OLH_EXTTAB_DIR</value>
<description>
The name of the Oracle directory object for the external table's
LOCATION data files. This property applies only to the DelimitedText
and DataPump output formats.
</description>
</property>
<property>
<name>oracle.hadoop.loader.sampler.enableSampling</name>
<value>true</value>
<description>
Indicates whether the sampling feature is enabled.
Set the value to false to disable this feature.
</description>
</property>
<property>
<name>oracle.hadoop.loader.enableSorting</name>
<value>true</value>
<description>
Indicates whether output records within each reducer group
should be sorted. Use the property oracle.hadoop.loader.sortKey
to specify the columns to use when sorting. If no value is given,
then records will be sorted by primary key if the table has one.
</description>
</property>
<property>
<name>oracle.hadoop.loader.sortKey</name>
<value/>
<description>
A comma separated list of column names that is used to form a
key for sorting output records within a reducer group. If no value
is given, and oracle.hadoop.loader.enableSorting is true, then
records will be sorted by primary key if the table has one.

A name may be provided as a quoted or non-quoted identifier. A
quoted identifier begins and ends with a double quotation mark.
The name between the quotes is used to identify the column.
A non-quoted identifier will be converted to uppercase before use.
</description>
</property>
<property>
<name>oracle.hadoop.loader.rejectLimit</name>
<value>1000</value>
<description>
The allowed number of rejected (skipped) records. If this value is
exceeded, the job is aborted.

A negative value signals that no limit is imposed on the number of
rejected records.

Note that if mapper speculative execution is turned on
(${mapred.map.tasks.speculative.execution}=true by default),
the number of rejected records may be temporarily inflated, and
the job may be prematurely aborted.
</description>
</property>

<property>
<name>oracle.hadoop.loader.logBadRecords</name>
<value>false</value>
<description>
When set to true, Oracle Loader for Hadoop will log bad records to a file.
This applies to records rejected by input formats and mappers.
</description>
</property>

<property>
<name>oracle.hadoop.loader.badRecordFlushInterval</name>
<value>500</value>
<description>
Specifies the number of records logged by a task attempt before
flushing (sync-ing) the log.

This limits the number of records logged by a task attempt
that can be lost when the job is killed due to
${oracle.hadoop.loader.rejectLimit}.

This is ignored unless ${oracle.hadoop.loader.logBadRecords}
is set to true.
</description>
</property>

<property>
<name>oracle.hadoop.loader.log4j.propertyPrefix</name>
<value>log4j.logger.oracle.hadoop.loader</value>
<description>
Oracle Loader for Hadoop allows you to specify log4j properties
using Hadoop's job configuration mechanism (-conf, -D).

All configuration properties starting with this prefix are loaded into
log4j. They will override the settings with the same property names
log4j loaded from ${log4j.configuration}.

These overrides apply to the Oracle Loader for Hadoop job driver
and all its map and reduce tasks.

Example: -D log4j.logger.oracle.hadoop.loader.OraLoader=DEBUG
-D log4j.logger.oracle.hadoop.loader.metadata=INFO

Expert: properties are copied from the conf to log4j with their
RAW values; any variable expansion is done in the context of log4j.
In order to use conf variables in the expansion, the variables would have
to start with this prefix.
</description>
</property>

<!-- CONNECTION properties -->

<property>
<name>oracle.hadoop.loader.connection.url</name>
<value/>
<description>
Specifies the URL of the database connection string. This property
takes precedence and overrides all other connection properties.

If Oracle Wallet is configured as an external password store,
the property value must start with the driver prefix: jdbc:oracle:thin:@
and the db_connect_string must exactly match the credential defined in the
wallet.

Example 1: ( using oracle net syntax)
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=myhost)(PORT=1521)))
(CONNECT_DATA=(SERVICE_NAME=my_db_service_name)))

Example 2: ( using TNS entry)
jdbc:oracle:thin:@myTNS

- Also see documentation for
oracle.hadoop.loader.connection.wallet_location

If Oracle Wallet is NOT used, then set the following conf properties
oracle.hadoop.loader.connection.url.
Examples of connection URL styles:
thin-style:
jdbc:oracle:thin:@//myhost:1521/my_db_service_name
jdbc:oracle:thin:user/password@//myhost:1521/my_db_service_name

Oracle Net:
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=myhost)(PORT=1521)))
(CONNECT_DATA=(SERVICE_NAME=my_db_service_name)))

TNSEntry Name:
jdbc:oracle:thin:@myTNSEntryName

oracle.hadoop.loader.connection.user
oracle.hadoop.loader.connection.password

If OCIOutputFormat is configured, and Oracle Wallet is not used, then
username and password must be specified in these separate properties.
</description>
</property>
<property>
<name>oracle.hadoop.loader.connection.user</name>
<value/>
<description>
Name for the database login. If OCIOutputFormat is configured and this
user property is not defined, then logon with Oracle Wallet is assumed.
</description>
</property>
<property>
<name>oracle.hadoop.loader.connection.password</name>
<value/>
<description>Password for the connecting user.</description>
</property>
<property>
<name>oracle.hadoop.loader.connection.wallet_location</name>
<value/>
<description>
File path to an Oracle wallet directory where the connection
credential is stored.

When using Oracle Wallet as an external password store
set the three properties
oracle.hadoop.loader.connection.wallet_location
oracle.hadoop.loader.connection.url
oracle.hadoop.loader.connection.tns_admin

or set the three properties
oracle.hadoop.loader.connection.wallet_location
oracle.hadoop.loader.connection.tnsEntryName
oracle.hadoop.loader.connection.tns_admin
</description>
</property>
<property>
<name>oracle.hadoop.loader.connection.tnsEntryName</name>
<value/>
<description>
Specifies a TNS entry name defined in the tnsnames.ora file.
This property is used together with the
oracle.hadoop.loader.connection.tns_admin property.
</description>
</property>
<property>
<name>oracle.hadoop.loader.connection.tns_admin</name>
<value/>
<description>
File path to a directory containing
SQL*Net configuration files like sqlnet.ora and tnsnames.ora.
If this property is not defined, the value of the environment
variable TNS_ADMIN will be used. Define this property in order
to use TNS entry names in database connect strings.

This property must be set when using Oracle Wallet as an
external password store. See the property
oracle.hadoop.loader.connection.wallet_location
</description>
</property>
<property>
<name>oracle.hadoop.loader.connection.defaultExecuteBatch</name>
<value>100</value>
<description>
Applicable only for JDBC and OCI output formats. The default
value for the number of records to be inserted in a batch for
each trip to the database. Specify a value >= 1 to
override the default value. If the specified value is less than 1,
this property assumes the default value. Though the maximum
value is unlimited, using very large batch sizes is not
recommended, as it results in a large memory footprint without
much increase in performance.
</description>
</property>
<property>
<name>oracle.hadoop.loader.connection.sessionTimezone</name>
<value>LOCAL</value>
<description>
This property is used to alter the session time zone for
database connections.  Valid values are:

[+|-] hh:mm      - hours and minutes before or after UTC
LOCAL            - the default timezone of the JVM
time_zone_region - a valid time zone region

This property also determines the default timezone when parsing
input data that will be loaded to database column types:
TIMESTAMP, TIMESTAMP WITH TIME ZONE and TIMESTAMP WITH LOCAL TIME ZONE
</description>
</property>

<!-- DEBUG properties
These properties should not compromise security or
expose customer data or Oracle proprietary information.
Remember these properties will be available to anyone.

Current NO DEBUG properties
-->
<!-- properties for OCIOutputFormat -->
<property>
<name>oracle.hadoop.loader.output.dirpathBufsize</name>
<value>131072</value>
<description>
This property is used to set the size, in bytes, of the direct path stream
buffer for OCIOutputFormat.  If needed, values are rounded up to the next
nearest multiple of 8k. The default is 128k.
</description>
</property>

<!--
This is currently only used by parallel dirpath output, but it's conceivable
that this could be used in a read scenario as well. That is why it does not
have an output prefix.
-->
<property>
<name>oracle.hadoop.loader.compressionFactors</name>
<value>BASIC=5.0,OLTP=5.0,QUERY_LOW=10.0,QUERY_HIGH=10.0,
ARCHIVE_LOW=10.0,ARCHIVE_HIGH=10.0</value>
<description>
This property is used to define the compression factor for different types
of compression. The format is a comma separated list of name=value pairs
where name is one of BASIC, OLTP, QUERY_LOW, QUERY_HIGH, ARCHIVE_LOW, or
ARCHIVE_HIGH.  Value is a decimal number.
</description>
</property>

<!-- properties for DelimitedTextOutputFormat -->
<property>
<name>oracle.hadoop.loader.output.fieldTerminator</name>
<value>,</value>
<description>
A single character to delimit fields for DelimitedTextOutputFormat.
Alternate representation: \uHHHH (where HHHH is the character's UTF-16
encoding).
</description>
</property>
<property>
<name>oracle.hadoop.loader.output.initialFieldEncloser</name>
<value></value>
<description>
When this value is set, fields are always enclosed between the
specified character and
${oracle.hadoop.loader.output.trailingFieldEncloser} (which defaults
to this property's value).

If this value is set, it must be either a single character, or \uHHHH
(where HHHH is the character's UTF-16 encoding).

A zero length value means no enclosers (default value).

Use this when some field may contain the fieldTerminator.
If some field may also contain the trailingFieldEncloser, then
the escapeEnclosers property should be set to true.
</description>
</property>
<property>
<name>oracle.hadoop.loader.output.trailingFieldEncloser</name>
<value></value>
<description>
When this value is set, fields are always enclosed between
${oracle.hadoop.loader.output.initialFieldEncloser} and the
specified character for this property.

If this property is not defined, the value of
${oracle.hadoop.loader.output.initialFieldEncloser} is used instead.

If this value is set, it must be either a single character, or \uHHHH
(where HHHH is the character's UTF-16 encoding).

Do not set this property if
${oracle.hadoop.loader.output.initialFieldEncloser} is not defined.

Use this when some field may contain the fieldTerminator.
If some field may also contain the trailingFieldEncloser,then
the escapeEnclosers property should be set to true.
</description>
</property>
<property>
<name>oracle.hadoop.loader.output.escapeEnclosers</name>
<value>false</value>
<description>
When this is set to true and both initial and trailing field enclosers
are set, fields will be scanned, and embedded trailing encloser
characters will be escaped. Use this option when some of the field
values may contain the trailing encloser character.
</description>
</property>

<!-- property for DataPumpInputFormat -->
<property>
<name>oracle.hadoop.loader.output.granuleSize</name>
<value>10240000</value>
<description>

Granule size (in bytes) used in the generated data pump files.
A granule determines the work load for a pq-slave when loading the
file through the ORACLE_DATAPUMP access driver.
</description>
</property>

<!-- common property for DelimitedTextInputFormat and RegexInputFormat -->
<property>
<name>oracle.hadoop.loader.input.fieldNames</name>
<value/>
<description>
Comma-separated list of names to assign to input fields.
The names are used to create the Avro schema for the record.
The strings must be valid JSON name strings.

If this property is not defined, the names F0,F1,F2,... will be used
(consistent with oracle.hadoop.loader.examples.CSVInputFormat).
</description>
</property>

<!-- properties for DelimitedTextInputFormat -->
<property>
<name>oracle.hadoop.loader.input.fieldTerminator</name>
<value>,</value>
<description>
A single character to delimit fields for DelimitedTextInputFormat.
Alternate representation: \uHHHH (where HHHH is the character's UTF-16
encoding).
</description>
</property>
<property>
<name>oracle.hadoop.loader.input.initialFieldEncloser</name>
<value></value>
<description>
When this value is set, fields are allowed to be enclosed
between the specified character and
${oracle.hadoop.loader.input.trailingFieldEncloser} (which defaults
to this property's value).

If this value is set, it must be either a single character, or \uHHHH
(where HHHH is the character's UTF-16 encoding).

A zero length value means no enclosers (default value).
</description>
</property>
<property>
<name>oracle.hadoop.loader.input.trailingFieldEncloser</name>
<value></value>
<description>
When this value is set, fields are allowed to be enclosed
between ${oracle.hadoop.loader.input.initialFieldEncloser}
and the specified character.

If this property is not defined, the value of
${oracle.hadoop.loader.input.initialFieldEncloser} is used instead.

If this value is set, it must be either a single character, or \uHHHH
(where HHHH is the character's UTF-16 encoding).

Do not set this property if
${oracle.hadoop.loader.input.initialFieldEncloser} is not defined.
</description>
</property>

<!-- properties for RegexInputFormat -->
<property>
<name>oracle.hadoop.loader.input.regexPattern</name>
<value/>
<description>
The pattern string for a regular expression as defined in
http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html.

The pattern must match the entire text line (the matching is applied
only once per line).

Same as org.apache.hadoop.hive.contrib.serde2.RegexSerDe's
"input.regex" property.
</description>
</property>
<property>
<name>oracle.hadoop.loader.input.regexCaseInsensitive</name>
<value>false</value>
<description>
Directs the pattern matching to be case insensitive.

Same as org.apache.hadoop.hive.contrib.serde2.RegexSerDe's
"input.regex.case.insensitive" property.
</description>
</property>

<!--Properties for tuning the sampler-->
<!-- set numThreads > 1 for large datasets -->
<property>
<name>oracle.hadoop.loader.sampler.numThreads</name>
<value>5</value>
<description>
Number of sampler threads.

This value should be set based on the processor and memory resources
available on the node where the Oracle Loader for Hadoop job is initiated.
A higher number of sampler threads implies higher concurrency in sampling.
Set this value to 1 to disable multi-threading in the sampler.
The default value is 5 threads.
</description>
</property>
<property>
<name>oracle.hadoop.loader.sampler.maxLoadFactor</name>
<value>0.05</value>
<description>
The maximum acceptable reducer load factor.
In a perfectly load balanced job, every reducer is assigned
an equal amount of work (or load).
Load factor is the percent overload per reducer
i.e. (assigned load - ideal load)%
For example: a value of 0.05, indicates that it is acceptable for
reducers to be assigned up to 5% more data than their ideal load.
If load balancing is successful, it guarantees this
maximum load factor at the specified confidence.
(see oracle.hadoop.loader.sampler.loadCI)
Default = 0.05, another common value is 0.1.
</description>
</property>
<property>
<name>oracle.hadoop.loader.sampler.loadCI</name>
<value>0.95</value>
<description>
The confidence level for the specified
maximum reducer load factor.
(See oracle.hadoop.loader.sampler.maxLoadFactor)
Default = 0.95, other common values = 0.90, 0.99
</description>
</property>
<property>
<name>oracle.hadoop.loader.sampler.minSplits</name>
<value>5</value>
<description>
The minimum number of splits that will be
read by the sampler. If the total number of splits
is lesser than this value, then the sampler will read
all splits. Splits may be read partially.
A non-positive value is equivalent to minSplits=1.
The default value is 5.
</description>
</property>
<property>
<name>oracle.hadoop.loader.sampler.hintMaxSplitSize</name>
<value>1048576</value>
<description>
The sampler sets Hadoop configuration parameter
mapred.max.split.size to this value before it calls the InputFormat's
getSplits() method.

The value of mapred.max.split.size is only set to this value for the
duration of sampling, it is not changed in the actual job
configuration. Some InputFormats (e.g. FileInputFormat) use the
maximum split size as a hint to determine the number of splits
returned by getSplits(). Smaller split sizes imply that more
chunks of data will be sampled at random (good). While large splits are
better for IO performance, they are not necessarily better for sampling.
Set this value to be small enough for good sampling performance,
but not any smaller: extremely small values can cause inefficient IO
performance and cause getSplits() to run out of memory by returning too
many splits.

The recommended minimum value for this property is 1048576 bytes (1 MB).
Note that org.apache.hadoop.mapreduce.lib.input.FileInputFormat will
always return splits of size at least FileInputFormat::getMinSplitSize(),
regardless of the value of this property.

This value can be increased for larger datasets (e.g. tens of terabytes)
or if the InputFormat's getSplits() method throws an OutOfMemoryError.
If the specified value is less than 1, this property is ignored.
The default value is 1048576 bytes (1 MB).
</description>
</property>
<property>
<name>oracle.hadoop.loader.sampler.hintNumMapTasks</name>
<value>100</value>
<description>
The sampler sets Hadoop configuration parameter
mapred.map.tasks to this value for the duration of sampling.
The value of mapred.map.tasks is not changed in the actual job
configuration. Some InputFormats (e.g. DBInputFormat) use the
number of map tasks parameter as a hint to determine the number of
splits returned by getSplits(). Higher values imply that more chunks
of data will be sampled at random (good). The default value is 100.
This value should typically be increased for large datasets (e.g. more
than a million rows), while keeping in mind that extremely large values
can cause the InputFormat's getSplits() method to run out of memory by
returning too many splits.

If the specified value is less than 1, this property is ignored.
The default value is 100.
</description>
</property>
<property>
<name>oracle.hadoop.loader.sampler.maxSamplesPct</name>
<value>0.01</value>
<description>
This property specifies the maximum data to sample, as a
percentage of the total amount of data. In general, the
sampler will stop sampling if any one of the following is true:
(1) it has collected the minimum number of samples
required for optimal load-balancing, or
(2) the percent of data sampled exceeds
oracle.hadoop.loader.sampler.maxSamplesPct, or
(3) the number of bytes sampled exceeds
oracle.hadoop.loader.sampler.maxHeapBytes.
If this parameter is set to a negative value,
condition (2) is not imposed.
The default value is 0.01 (1%).
</description>
</property>
<property>
<name>oracle.hadoop.loader.sampler.maxHeapBytes</name>
<value>-1</value>
<description>
This value specifies the maximum memory available to
the sampler in bytes. In general, the sampler will
stop sampling when any one of these conditions is true:
(1) it has collected the minimum number of samples
required for optimal load-balancing, or
(2) the percent of data sampled exceeds
oracle.hadoop.loader.sampler.maxSamplesPct, or
(3) the number of bytes sampled exceeds
oracle.hadoop.loader.sampler.maxHeapBytes.
If this parameter is set to a negative value,
condition (3) is not imposed.
Default = -1 (no memory restrictions on the sampler).
</description>
</property>

</configuration>

3.11 同梱されているソフトウェアのサードパーティ・ライセンス

Oracle Loader for Hadoopは、次のサードパーティ製品をインストールします。

- Apache Avro

- Apache Commons Mathematics Library

- Jackson JSON Processor

Oracle Loader for Hadoopには、Oracle 11gリリース2 (11.2)クライアント・ライブラリが含まれます。Oracle Database 11gリリース2 (11.2)に含まれるサードパーティ製品の詳細は、『Oracle Databaseライセンス情報』を参照してください。

特に断りがないかぎり、あるいは、サードパーティ・ライセンス(LGPLなど)の条項で求められている場合、Apache Licensed Codeに関連するすべてのステートメントを含めた、この項のライセンスとステートメントは、告知のみを目的とするものです。

3.11.1 Apache Licensed Code

The following is included as a notice in compliance with the terms of the Apache 2.0 License, and applies to all programs licensed under the Apache 2.0 license:

You may not use the identified files except in compliance with the Apache License, Version 2.0 (the "License.")

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

A copy of the license is also reproduced below.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and limitations under the License.

Apache License

Version 2.0, January 2004
http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity.For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.

"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship.For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner.For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.

2. Grant of Copyright License.Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.

3. Grant of Patent License.Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted.If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.

4. Redistribution.You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:

1. You must give any other recipients of the Work or Derivative Works a copy of this License; and

2. You must cause any modified files to carry prominent notices stating that You changed the files; and

3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and

4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear.The contents of the NOTICE file are for informational purposes only and do not modify the License.You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.

You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.

5. Submission of Contributions.Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions.Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.

6. Trademarks.This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty.Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.

8. Limitation of Liability.In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability.While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License.However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work

To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information.(Do not include the brackets!)The text should be enclosed in the appropriate comment syntax for the file format.We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions and limitations under the License.

この製品には、The Apache Software Foundation (http://www.apache.org/)によって開発されたソフトウェアが含まれています(次に記載)。

3.11.2 Apache Avro 1.6.3

Licensed under the Apache License, Version 2.0 (the "License"); you may not use Apache Avro except in compliance with the License.You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions and limitations under the License.

3.11.3 Apache Commons Mathematics Library 2.2

Copyright 2001-2011 The Apache Software Foundation

Licensed under the Apache License, Version 2.0 (the "License"); you may not use the Apache Commons Mathematics library except in compliance with the License.You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions and limitations under the License.

3.11.4 Jackson JSON 1.8.8

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this library except in compliance with the License.You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions and limitations under the License.

4 Oracle Data Integrator Application Adapter for Hadoop

この章では、Oracle Data Integrator (ODI) Application Adapter for Hadoopのナレッジ・モジュールの使用方法について説明します。この章の内容は次のとおりです。

- 概要

- トポロジの設定

- 統合プロジェクトの設定

- HiveモデルのリバースエンジニアリングからのOracle Data Integratorモデルの作成

- インタフェースの設計

関連項目:
Oracle Fusion Middleware Oracle Data Integratorアプリケーション・アダプタ・ガイド

4.1 概要

Apache Hadoopは、通常はリレーショナル以外のデータソースからのデータ、およびリレーショナル・データベースで処理できないボリュームのデータを処理するように設計されています。

Oracle Data Integrator (ODI) Application Adapter for Hadoopを使用すると、データ統合開発者は、Oracle Data IntegratorによってHadoop内でデータを簡単に統合して変換できます。アプリケーション・アダプタでは、使いやすく、使い慣れたツールとあらかじめ構成されているナレッジ・モジュール(KM)を介して次の機能が提供されます。

- ローカル・ファイルシステムとHDFSからHadoopへのデータのロード

- Hadoopでのデータの検証と変換

- 追加処理およびレポート生成を行うための処理済データのHadoopからOracle Databaseへのロード

ナレッジ・モジュール(KM)には、Oracle Data Integratorで必要な情報が含まれ、特定のテクノロジに対して特定のタスクを実行します。アプリケーション・アダプタは、一連のナレッジ・モジュールになります。したがって、Oracle Data Integrator Application Adapter for Hadoopは、Hadoopに格納されるデータにアクセスするための一連のナレッジ・モジュールになります。

4.1.1 概念

Hadoopでの通常の処理には、MapReduceジョブとしてプログラミングされたデータの検証や変換などがあります。MapReduceジョブの設計と実装には、専門的なプログラミングの知識が必要です。しかし、Oracle Data IntegratorとOracle Data Integrator Application Adapter for Hadoopを使用すると、MapReduceジョブを記述する必要はありません。Oracle Data Integratorでは、HiveとHiveQL (Hive Query Language: HQL)というSQLライクな言語を使用してMapReduceジョブを実装します。

ビッグ・データ処理のシナリオを実装する場合、最初のステップは、データをHadoopにロードすることです。データソースは、通常、ローカル・ファイルシステム、HDFS、Hive表または外部Hive表にあります。

データをロードすると、SQLの使用と同様にHiveQLを使用してデータを検証および変換できます。NULLや主キーのチェックなどのデータ検証およびフィルタ、集計、設定操作、表の導出などの変換を実行できます。また、カスタマイズした手続き型のスニペット(スクリプト)をデータの処理に使用することもできます。

データの集計、圧縮、または小規模データセットへの処理が終了したら、Oracle Databaseにデータをロードして他の処理や分析を行うことができます。Oracle Databaseへのロードを最適に行うには、Oracle Loader for Hadoopが推奨されます。

4.1.2 ナレッジ・モジュール

Oracle Data Integratorには、表4-1で説明するナレッジ・モジュール(KM)があり、Hadoopで使用できます。

表4-1 Oracle Data Integrator Application Adapter for Hadoopナレッジ・モジュール

KM名

説明

ソース

ターゲット

IKM File to Hive (Load Data)

ローカルおよびHDFSファイルからHive表にデータをロードします。Hiveのパーティション化とデータ移動の低減によってパフォーマンスを向上させるオプションが用意されています。

このナレッジ・モジュールでは、ワイルドカード(*、?)がサポートされます。

ファイルシステム

Hive

IKM Hive Control Append

切捨て/挿入(追加)モードでHiveターゲット表にデータを統合します。データを制御(検証)できます。無効なデータはエラー表に分離され、再利用できます。

Hive

Hive

IKM Hive Transform

PerlやPythonなどのカスタマイズしたスクリプトで変換した後、Hiveターゲット表にデータを統合します。

Hive

Hive

IKM File - Hive to Oracle (OLH)

Oracle Loader for HadoopまたはOracle SQL Connector for HDFS(あるいはその両方)を使用して、HDFSファイルまたはHiveソースからOracle Databaseターゲットにデータを統合します。

ファイルシステムまたはHive

Oracle Database

CKM Hive

データを制約に対して検証します。

該当なし

Hive

RKM Hive

Hive表をリバースエンジニアリングします。

Hiveメタデータ

該当なし

4.1.3 セキュリティ

Oracle Data Integratorのセキュリティ情報については、『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』を参照してください。

4.2 トポロジの設定

Oracle Data Integratorでトポロジを設定するには、ファイルシステムとHive情報の格納に使用されるデータ・サーバー、物理スキーマおよび論理スキーマを特定します。

この項で説明する項目は、次のとおりです。

- ファイル・データソースの設定

- Hiveデータソースの設定

- Hadoopジョブを実行するためのOracle Data Integratorエージェントの設定

- ローカル・エージェントでHadoopジョブを実行するためのOracle Data Integrator Studioの構成

4.2.1 ファイル・データソースの設定

Hadoopのコンテキストでは、HDFS (Hadoop分散ファイルシステム)のファイルとローカル・ファイル(HDFS外のファイル)は区別されます。

データソースを定義するには、次の手順を実行します。

1. ファイル・テクノロジ下にデータ・サーバー・オブジェクトを作成します。

2. アクセスされるディレクトリごとに物理スキーマ・オブジェクトを作成します。

3. アクセスされるディレクトリごとに論理スキーマ・オブジェクトを作成します。

4. 論理スキーマごとにモデルを作成します。

5. ファイルの種類およびワイルドカード名のパターンごとに1つ以上のデータストアを作成します。

6. HDFSファイルの場合、「JDBC URL」フィールドにHDFS名のノードを入力して、ファイル・テクノロジ下にデータ・サーバー・オブジェクトを作成します。次に例を示します。

hdfs://bda1node01.example.com:8020

注意:
HDFSファイルに専用のテクノロジは定義されません。

4.2.2 Hiveデータソースの設定

Hiveシステムに接続するために、Oracle Data Integratorで次の手順を行う必要があります。Oracle Data IntegratorではJDBCを使用してHiveに接続します。

前提条件

Hiveテクノロジが、標準のOracle Data Integratorテクノロジに含まれている必要があります。含まれていない場合、xml-referenceディレクトリからINSERT_UPDATEモードでテクノロジをインポートします。

Hive固有のフレックスフィールドをすべて追加する必要があります。11.1.1.6.0より前のリポジトリの場合、リポジトリのアップグレード処理の一環としてフレックスフィールドが追加されます。

Hiveデータソースを設定するには、次の手順を実行します。

1. 次の環境設定が設定されていることを確認し、その値に注目します。次に、通常の値を示します。ただし、インストールは異なる場合があります。

- $HIVE_HOME: /usr/lib/hive

- $HADOOP_HOME: /usr/lib/hadoop (core-site.xmlなどの構成ファイルを含む)

- $OSCH_HOME: /opt/oracle/orahdfs

2. ~/.odi/oracledi/userlib/additional_path.txtをテキスト・エディタで開き、表4-2に示すパスを追加します。変数名のかわりに、ステップ1で取得したフル・パスを入力します。
このステップで、ODI StudioのJARファイルへのアクセスが有効になります。

表4-2 JARファイルのパス

説明

CDH4のパス

CDH3のパス

HiveのJARファイル

$HIVE_HOME/lib/*.jar

$HIVE_HOME/*.jar

HadoopクライアントのJARファイル

$HADOOP_HOME/client/*.jar

$HADOOP_HOME/hadoop-*-core*.jar脚注 1

$HADOOP_HOME/hadoop-*-tools*.jar脚注 1

Hadoopの構成ディレクトリ

$HADOOP_HOME

$HADOOP_HOME

Oracle SQL Connector for HDFSのJARファイル(オプション)

$OSCH_HOME/jlib/*.jar

$OSCH_HOME/jlib/*.jar

脚注 1 アスタリスク(*)を完全なファイル名に置き換えます。

3. Hadoop構成ディレクトリがODIクラス・パス内にあることを確認します。
Hadoop構成ディレクトリには、core-default.xml、core-site.xmlおよびhdfs-site.xmlなどのファイルが含まれます。

4. Hiveテクノロジ下にデータ・サーバー・オブジェクトを作成します。

5. JDBC下で次の場所を設定します。
JDBCドライバ: org.apache.hadoop.hive.jdbc.HiveDriver

JDBC URL: たとえば、jdbc:hive://BDA:10000/defaultです。

6. フレックスフィールド下で次の設定を行います。
HiveメタストアURI: たとえば、thrift://BDA:10000です。

7. 物理デフォルト・スキーマを作成します。
Hive 0.7.0以降、スキーマやデータベースはサポートされません。デフォルトのみサポートされます。物理スキーマ定義の両方のスキーマ・フィールドにdefaultと入力します。

8. Hiveサーバーが稼働していることを確認します。

9. データ・サーバーへの接続をテストします。

10. 論理スキーマ・オブジェクトを作成します。

11. 論理スキーマに対して1つ以上のモデルを作成します。

12. グローバル・ナレッジ・モジュールとして、またはプロジェクトにRKM Hiveをインポートします。

13. 論理スキーマを指す、Hiveテクノロジ用の新規モデルを作成します。

14. RKM Hiveを使用してカスタム・リバースエンジニアリング操作を実行します。

このプロセスを終了すると、列、パーティション化およびクラスタ化の詳細がフレックスフィールド値として格納されたすべてのHive表が、Hive DataModelに含まれます。

4.2.3 Hadoopジョブを実行するためのOracle Data Integratorエージェントの設定

Oracle Data Integratorエージェントの設定後、Oracle Data Integrator Application Adapter for Hadoopで機能するようにエージェントを構成します。

注意:
多くのファイル名にはバージョン番号が含まれます。ファイル名にアスタリスク(*)が表示される場合、インストールを確認して完全なファイル名を入力します。

Oracle Data Integratorエージェントを構成するには、次の手順を実行します。

1. Oracle Data Integratorエージェント・コンピュータにHadoopをインストールします。HADOOP_HOME環境変数が設定されていることを確認します。
Oracle Big Data Applianceの場合、リモートHadoopクライアントを設定する手順については、『Oracle Big Data Applianceソフトウェア・ユーザーズ・ガイド』を参照してください。

2. Oracle Data Integratorエージェント・コンピュータにHiveをインストールします。HIVE_HOME環境変数が設定されていることを確認します。

3. Hadoop構成ディレクトリがODIクラス・パス内にあることを確認します。
Hadoop構成ディレクトリには、core-default.xml、core-site.xmlおよびhdfs-site.xmlなどのファイルが含まれます。

4. ODI_ADDITIONAL_CLASSPATHにパスを追加します。これにより、ODIエージェントがJARファイルにアクセスできます。Oracle SQL Connector for HDFSを使用しない場合、設定から$OSCH_HOMEを省略します。

注意:
これらのコマンドでは、$HADOOP_CONFは、Hadoop構成ファイルを含むディレクトリを指し示します。このディレクトリは、多くの場合、$HADOOP_HOMEと同じになります。

- CDH4の場合、コマンドを次のように使用します。

ODI_ADDITIONAL_CLASSPATH=$HIVE_HOME/lib/'*':$HADOOP_HOME/client/'*':$OSCH_HOME/jlib/'*':$HADOOP_CONF

- CDH3の場合、コマンドを次のように使用し、hadoop-*-core*.jarとhadoop-*-tools*.jarを完全なパス名に置き換えます。

ODI_ADDITIONAL_CLASSPATH=$HIVE_HOME/lib/'*':$HADOOP_HOME/hadoop-*-core*.jar:$HADOOP_HOME/hadoop-*-tools*.jar:$OSCH_HOME/jlib/'*':$HADOOP_CONF

5. Hive Regex SerDeが含まれるように環境変数 ODI_HIVE_SESSION_JARSを設定します。

ODI_HIVE_SESSION_JARS=$HIVE_HOME/lib/hive-contrib-*.jar

必要に応じて、カスタムSerDes JARファイルなどの他のJARファイルを含めます。これらのJARファイルは、各Hive JDBCセッションに追加されるため、各Hive MapReduceジョブに追加されます。

6. 環境変数HADOOP_CLASSPATHを次のように設定します。

HADOOP_CLASSPATH=$HIVE_HOME/lib/hive-metastore-*.jar:$HIVE_HOME/lib/libthrift.jar:$HIVE_HOME/lib/libfb*.jar:$HIVE_HOME/lib/hive-common-*.jar:$HIVE_HOME/lib/hive-exec-*.jar.

この設定によって、HadoopスクリプトでHive MapReduceジョブを起動できるようになります。

Oracle Loader for Hadoopを使用するには、次の手順を実行します。

1. Oracle Data Integratorエージェント・システムにOracle Loader for Hadoopをインストールします。「Oracle Loader for Hadoopのインストール」を参照してください。

2. Oracle Data Integratorエージェント・システムにOracle Databaseクライアントをインストールします。Oracle Databaseクライアントのバージョンについては、「Oracle Loader for Hadoopの設定」を参照してください。

3. 環境変数OLH_HOMEを設定します。

4. 環境変数ODI_OLH_JARSを設定します。
Oracle Loader for Hadoopに必要なすべてのJARファイルをリストする必要があります。「構成プロパティのXMLドキュメント」のoracle.hadoop.loader.libjarsプロパティを参照してください。

これは、JARファイルのカンマ区切りリストになり、読みやすいように書式設定されています。リストには、Oracle Data Integrator Application Adapter for Hadoopで必要なHive JARファイルが含まれます。インストールに有効なファイル名を入力します。

次に例を示します。

$HIVE_HOME/lib/hive-metastore-*.jar,
$HIVE_HOME/lib/libthrift.jar,
$HIVE_HOME/lib/libfb*.jar,
.
.
.

5. HADOOP_CLASSPATHにパスを次のように設定します。

$HADOOP_CLASSPATH=$OLH_HOME/jlib:$HADOOP_CLASSPATH

6. Hive Regex SerDeが含まれるように環境変数 ODI_HIVE_SESSION_JARSを設定します。

ODI_HIVE_SESSION_JARS=$HIVE_HOME/lib/hive-contrib-*.jar

必要に応じて、カスタムSerDes JARファイルなどの他のJARファイルを含めます。これらのJARファイルは、各Hive JDBCセッションに追加されるため、各Hive MapReduceジョブに追加されます。

7. Oracle Loader for Hadoopに必要なカスタム・ネイティブ・ライブラリを追加します。「構成プロパティのXMLドキュメント」のoracle.hadoop.loader.sharedLibsプロパティを参照してください。これはカンマ区切りリストになります。

8. Oracle SQL Connector for HDFS (OLH_OUTPUT_MODE=DP_OSCHまたはOSCH)を使用するには、まずインストールする必要があります。「Oracle SQL Connector for Hadoop Distributed File Systemの設定」を参照してください。

4.2.4 ローカル・エージェントでHadoopジョブを実行するためのOracle Data Integrator Studioの構成

Oracle Data Integrator Studioインストールのローカル・エージェントでHadoopジョブを実行するには、この前の項の構成手順を実行しますが、Oracle Data Integratorのドライバ・ディレクトリではなく、userlibディレクトリにJARファイルをコピーします。

4.3 統合プロジェクトの設定

プロジェクトの設定は標準の手順に従います。『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』を参照してください。

次のKMをOracle Data Integratorプロジェクトにインポートします。

- IKM File to Hive (Load Data)

- IKM Hive Control Append

- IKM Hive Transform

- IKM File - Hive to Oracle (OLH)

- CKM Hive

- RKM Hive

4.4 HiveモデルのリバースエンジニアリングからのOracle Data Integratorモデルの作成

この項で説明する項目は、次のとおりです。

- モデルの作成

- Hive表のリバースエンジニアリング

4.4.1 モデルの作成

Hiveをホストするテクノロジ、およびHive接続を構成したときに作成された論理スキーマに基づいてモデルを作成するには、『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』に記載されている標準の手順に従います。

4.4.2 Hive表のリバースエンジニアリング

RKM Hiveを使用して、Hive表とビューをリバースエンジニアリングします。 RKM Hiveを使用してHive表のカスタマイズされたリバースエンジニアリングを実行するには、『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』に記載されている通常の手順に従います。このトピックでは、Hive表に固有の情報を示します。

リバースエンジニアリング・プロセスでは、対応するHive表またはビューに対するデータストアが作成されます。データストアは、統合インタフェースでソースまたはターゲットとして使用できます。

RKM Hive

RKM Hiveでは、次のメタデータ要素がリバースされます。

- Oracle Data IntegratorデータストアとしてのHive表とビュー
「マスク」フィールドでリバース・マスクを指定して、リバースする表とビューを選択します。「リバース」タブの「マスク」フィールドで、名前に基づいてリバースエンジニアリング・オブジェクトがフィルタ処理されます。「マスク」フィールドは空にできません。少なくともパーセント記号(%)を含める必要があります。

- データ型を持つOracle Data Integrator列としてのHive列

- バケット、パーティション化、クラスタおよびソート列に関する情報は、Oracle Data Integratorデータストアの各フレックスフィールドまたは列メタデータで設定されます。

表4-3に、RKM Hiveのオプションを示します。

表4-3 RKM Hiveのオプション

オプション

説明

USE_LOG

中間結果を記録するかどうか

LOG_FILE_NAME

ログ・ファイルのパスとファイル名。デフォルト・パスはユーザー・ホームで、デフォルト・ファイル名はreverse.logです。

表4-4に、作成されたフレックスフィールドを示します。

表4-4 リバースエンジニアリングされたHive表およびビュー用のフレックスフィールド

オブジェクト

フレックスフィールド名

フレックスフィールド・コード

フレックスフィールド・タイプ

説明

データストア

Hiveバケット

HIVE_BUCKETS

文字列

クラスタ化に使用されるバケットの数

列

Hiveパーティション列

HIVE_PARTITION_COLUMN

数値

パーティション化列はすべて"1"とマークされます。パーティション情報は、次のものから取得されます。

- マップされたソース列

- ターゲット列に指定された定数値

- ファイル名フラグメント

列

Hiveクラスタ列

HIVE_CLUSTER_COLUMN

数値

クラスタ列はすべて"1"とマークされます。

列

Hiveソート列

HIVE_SORT_COLUMN

数値

ソート列はすべて"1"とマークされます。

4.5 インタフェースの設計

Hive表をリバースエンジニアリングして構成すると、次のインタフェース構成から選択できます。

- ファイルからHiveへのデータのロード

- Hive内のデータの検証と変換

- HiveおよびHDFSからOracle Databaseへのデータのロード

4.5.1 ファイルからHiveへのデータのロード

ローカル・ファイルシステムまたはHDFSシステムからHive表にデータをロードするには、次の手順を実行します。

1. ローカル・ファイルとHDFSファイルのデータストアを作成します。
ローカル・ファイルのデータソースのリバースエンジニアリングと構成の詳細は、『Oracle Fusion Middleware Oracle Data Integrator接続およびナレッジ・モジュール・ガイド』を参照してください。

2. ファイル・データストアをソースとし、対応するHive表をターゲットとして使用してインタフェースを作成します。インタフェースの「フロー」タブで指定されたIKM File to Hive (Load Data)ナレッジ・モジュールを使用します。この統合ナレッジ・モジュールでは、既存のデータを置き換えるか、これに追加して、フラット・ファイルからHiveにデータをロードします。

IKM File to Hive

IKM File to Hive (Load Data)では、次のものがサポートされます。

- 1つ以上の入力ファイル。複数のソース・ファイルをロードするには、ファイル・データストアのリソース名にアスタリスクまたは疑問符をワイルドカード文字として入力します(webshop_*.logなど)。

- ファイル形式:

- 固定長

- デリミタ付き

- カスタマイズされた形式

- ロード・オプション:

- 即時または遅延ロード

- 上書きまたは追加

- Hive外部表

表4-5に、IKM File to Hive (Load Data)のオプションを示します。詳細は、ナレッジ・モジュールを参照してください。

表4-5 IKM File to Hiveのオプション

オプション

説明

CREATE_TARG_TABLE

ターゲット表を作成します。

TRUNCATE

ターゲット表のデータを切り捨てます。

FILE_IS_LOCAL

ファイルがローカル・ファイルシステムにあるか、HDFSにあるか

EXTERNAL_TABLE

外部管理Hive表を使用します。

USE_STAGING_TABLE

Hiveステージング表を使用します。

ソースとターゲットが一致しない場合、またはパーティション列値がデータファイルの一部の場合、このオプションを選択します。

パーティション化値がファイル名フラグメントまたはターゲット・マッピングの定数で指定される場合、この値をfalseに設定します。

DELETE_TEMPORARY_OBJECTS

インタフェースの実行後、一時オブジェクトを削除します。

DEFER_TARGET_LOAD

最終ターゲットにデータを今ロードするか、後でロードするか

OVERRIDE_ROW_FORMAT

カスタム・ファイル形式を処理するための解析式を指定し、ソースからターゲットのマッピングを実行します。

STOP_ON_FILE_NOT_FOUND

ソース・ファイルが見つからない場合に停止するかどうか

4.5.2 Hive内のデータの検証と変換

Hiveにデータをロードすると、次のナレッジ・モジュールを使用してデータを検証および変換できます。

4.5.2.1 IKM Hive Control Append

このナレッジ・モジュールは、データを検証および制御し、そのデータを切捨て/挿入(追加)モードでHiveターゲット表に統合します。無効なデータはエラー表に分離され、再利用できます。IKM Hive Control Appendは、このナレッジ・モジュールまたはIKM Hive Transformのいずれかを使用するインライン・ビュー・インタフェースをサポートします。

表4-6にオプションを示します。詳細は、ナレッジ・モジュールを参照してください。

表4-6 IKM Hive Control Appendのオプション

オプション

説明

FLOW_CONTROL

入力データを検証するかどうか

RECYCLE_ERRORS

エラー表からデータを再統合するかどうか

STATIC_CONTROL

ロード後にデータを検証するかどうか

CREATE_TARG_TABLE

ターゲット表を作成するかどうか

DELETE_TEMPORARY_OBJECTS

実行後に一時オブジェクトを削除するかどうか

TRUNCATE

ターゲット表のデータを切り捨てるかどうか

4.5.2.2 CKM Hive

このナレッジ・モジュールでは、Hive表のデータの完全性がチェックされます。Hiveデータストアの制約の妥当性を検証し、無効なレコードをエラー表に回します。CKM Hiveは静的制御およびフロー制御に使用できます。また、格納されているデータに対してこれらの制約を定義する必要もあります。

表4-7に、この確認ナレッジ・モジュールのオプションを示します。詳細は、ナレッジ・モジュールを参照してください。

表4-7 CKM Hiveのオプション

オプション

説明

DROP_ERROR_TABLE

実行の前にエラー表を削除するかどうか

4.5.2.3 IKM Hive Transform

このナレッジ・モジュールは変換を行います。シェル・スクリプトを使用してデータを変換してから、置換モードでHiveターゲット表にデータを統合します。ナレッジ・モジュールはインライン・ビュー・インタフェースをサポートし、IKM Hive Control Appendのインライン・ビューとして使用されます。

変換スクリプトで、ソース・データストアで定義されている順に入力列を読み取る必要があります。マップされたソース列のみが変換に送られます。変換スクリプトで、ターゲット・データストアで定義されている順に出力列を提供する必要があります。

表4-8に、この統合ナレッジ・モジュールのオプションを示します。詳細は、ナレッジ・モジュールを参照してください。

表4-8 IKM Hive Transformのオプション

オプション

説明

CREATE_TARG_TABLE

ターゲット表を作成するかどうか

DELETE_TEMPORARY_OBJECTS

実行後に一時オブジェクトを削除するかどうか

TRANSFORM_SCRIPT_NAME

スクリプト・ファイル名

TRANSFORM_SCRIPT

スクリプトの内容

PRE_TRANSFORM_DISTRIBUTE

ナレッジ・モジュールが変換スクリプトの適用前のデータを分散できるソース列名のカンマ区切りリスト(オプション)を指定します。

PRE_TRANSFORM_SORT

ナレッジ・モジュールが変換スクリプトの適用前のデータをソートできるソース列名のカンマ区切りリスト(オプション)を指定します。

POST_TRANSFORM_DISTRIBUTE

ナレッジ・モジュールが変換スクリプトの適用前のデータを分散できるターゲット列名のカンマ区切りリスト(オプション)を指定します。

POST_TRANSFORM_SORT

ナレッジ・モジュールが変換スクリプトの適用前のデータをソートできるターゲット列名のカンマ区切りリスト(オプション)を指定します。

4.5.3 HiveおよびHDFSからOracle Databaseへのデータのロード

IKM File-Hive to Oracle (OLH)では、Oracle Loader for Hadoopを使用して、HDFSファイルまたはHiveソースからOracle Databaseターゲットにデータを統合します。ナレッジ・モジュールは、インタフェース構成と選択したオプションを使用して、適切なOracle Databaseターゲット・インスタンスを生成します。HiveとHadoopのバージョンは、Oracle Loader for Hadoopの要件に従う必要があります。

関連項目:

- HadoopとHiveの必要なバージョンについては、「Oracle Loader for Hadoopの設定」

- 必要な環境変数の設定については、「Hadoopジョブを実行するためのOracle Data Integratorエージェントの設定」

表4-9に、この統合ナレッジ・モジュールのオプションを示します。詳細は、ナレッジ・モジュールを参照してください。

表4-9 IKM File - Hive to Oracle (OLH)

オプション

説明

OLH_OUTPUT_MODE

データの転送に対してJDBC、OCI、データ・ポンプのいずれかを指定します。

CREATE_TARG_TABLE

ターゲット表を作成するかどうか

REJECT_LIMIT

Oracle Loader for HadoopおよびEXTTABの最大エラー数。

USE_HIVE_STAGING_TABLE

抽出前にソース・データを実体化するかどうか

USE_ORACLE_STAGING_TABLE

Oracle Databaseステージング表を使用するかどうか

EXT_TAB_DIR_LOCATION

Oracle Data Pump転送に使用される共有ファイル・パス。

TEMP_DIR

一時ファイルのローカル・パス。

MAPRED_OUTPUT_BASE_DIR

Oracle Loader for Hadoop出力ファイル用のHDFSディレクトリ。

FLOW_TABLE_OPTIONS

Oracle Databaseステージング表が使用される場合のフロー(ステージ)表の作成オプション。

DELETE_TEMPORARY_OBJECTS

実行後に一時オブジェクトを削除するかどうか

OVERRIDE_INPUTFORMAT

カスタム・ファイル形式を処理するように設定します。

EXTRA_OLH_CONF_PROPERTIES

Oracle Loader for Hadoop構成ファイル・プロパティ(オプション)。

TRUNCATE

ターゲット表のデータを切り捨てるかどうか

DELETE_ALL

ターゲット表のデータをすべて削除するかどうか

5 Oracle R Connector for Hadoop

この章では、ビッグ・データに対するRのサポートについて説明します。この章の内容は次のとおりです。

- Oracle R Connector for Hadoopについて

- HDFSファイルへのアクセス

- Hiveへのアクセス

- Oracle Databaseへのアクセス

- Oracle R Connector for Hadoopの分析関数

- ORCH mapred.configクラス

- Oracle R Connector for Hadoopの例とデモ

- Oracle R Connector for Hadoopのセキュリティ上の注意

5.1 Oracle R Connector for Hadoopについて

Oracle R Connector for Hadoopは、次の機能を提供するRパッケージの集合です。

- Hive表、Apache Hadoop計算インフラストラクチャ、ローカルR環境およびOracle Database表を操作するインタフェース

- Hadoop MapReduceジョブとしてRまたはJavaで記述される予測分析技術、HDFSファイルのデータに適用可能

このパッケージは、他のRパッケージと同様にインストールしてロードします。簡単なR関数を使用して、次のようなタスクを実行できます。

- Hive対応透過層を使用したHDFSデータへのアクセスとデータの変換

- マッパーとリデューサを記述するためのR言語の使用

- Rメモリー、ローカル・ファイルシステム、HDFS、HiveおよびOracle Database間でのデータのコピー

- Hadoop MapReduceジョブとして実行し、それらの場所に結果を返すRプログラムのスケジュール設定

Oracle R Connector for Hadoopでいくつかの分析アルゴリズムを使用できます。具体的には、線形回帰、予測用ニューラル・ネットワーク、低ランクの行列因数分解を使用した行列補完、クラスタリング、非負行列因子分解を使用できます。これらはJavaまたはRのいずれかで記述されます。

Oracle R Connector for Hadoopを使用するには、MapReduceプログラミング、Rプログラミングおよび統計手法に精通しておく必要があります。

Oracle R Connector for HadoopのAPI

Oracle R Connector for Hadoopでは、次の接頭辞の関数を使用して、ローカルRクライアントからApache Hadoopへのアクセスを提供します。

- hadoop: Hadoop MapReduceへのインタフェースを提供する関数を特定します。

- hdfs: HDFSへのインタフェースを提供する関数を特定します。

- orch: 様々な関数を特定します。orchはORCH関数の一般的な接頭辞です。

- ore: Hiveデータストアへのインタフェースを提供する関数を特定します。

Oracle R Connector for Hadoopは、主なオブジェクト・タイプとしてデータ・フレームを使用しますが、HDFSとのデータ交換を行うためにベクトルや行列でも機能できます。APIは、Rの数字、整数および文字のデータ型をサポートします。

APIのすべてがORCHライブラリに含まれます。関数は、第6章にアルファベット順で示します。

関連項目:
RプロジェクトのWebサイト(http://www.r-project.org/)

5.2 HDFSファイルへのアクセス

HDFSに格納されるデータにOracle R Connector for Hadoopがアクセスするには、入力ファイルが次の要件に従う必要があります。

- MapReduceジョブの入力ファイルはすべて、1つの論理ファイルの一環として1つのディレクトリに格納される必要があります。有効なHDFSディレクトリ名とファイル名の拡張子が受け入れられます。

- 該当ディレクトリ内の、アンダースコア(_)で始まる名前のファイルは無視されます。

- 入力ファイルは、次のようにカンマ区切り(CSV)形式にします。

- key := string | ""

- value := string[,value]

- line := [key\t]value

- string := char[string]

- char := regexp([^,\n])

入力ファイル形式の例

次に、受け入れられるCSV入力ファイルの例を示します。

- キーを使用するCSVファイル:

"1\tHello,world"
"2\tHi,there"

- キーを使用しないCSVファイル:

"Hello,world"
"Hi,there"

- NULLキーを使用するCSVファイル:

"\tHello,world"
"\tHi,there"

5.3 Hiveへのアクセス

Hiveは、HiveQLと呼ばれる問合せ言語(SQLとよく似ている)によって、代替のストレージおよび取得メカニズムをHDFSファイルに提供します。Hiveでは、分散処理にMapReduceが使用されます。ただし、データは構造化され、データ検出をサポートする追加のメタデータがあります。Oracle R Connector for HadoopではHiveQLのデータ準備と分析機能が使用されますが、R言語構文も使用できます。

関連項目:
Apache HiveのWebサイト(http://hive.apache.org)

5.3.1 HiveのORE関数

接頭辞がoreのR関数(ore.connectなど)を使用して、Hiveへの接続とオブジェクトの管理を行うことができます。Oracle R Enterpriseも使用する場合、これらの関数を認識します。Oracle R Enterpriseのore関数は、Oracle Databaseでオブジェクトを作成して管理し、Oracle R Connector for Hadoopのore関数は、Hiveデータベースでオブジェクトを作成して管理します。一度に1つのデータベース(HiveまたはOracle Databaseのいずれか)に接続できますが、同時に両方のデータベースに接続することはできません。

Oracle R Connector for Hadoopでは次のORE関数がサポートされます。

as.ore
as.ore.character
as.ore.frame
as.ore.integer
as.ore.logical
as.ore.numeric
as.ore.vector
is.ore
is.ore.character
is.ore.frame
is.ore.integer
is.ore.logical
is.ore.numeric
is.ore.vector
ore.create
ore.drop
ore.get
ore.pull
ore.push
ore.recode

このリリースでは、ore.factor、ore.listまたはore.objectはサポートされません。

OREStatsの次の集計関数もサポートされます。

aggregate
fivenum
IQR
median
quantile
sd
var*

*ベクトルの場合のみ

5.3.2 Hiveでサポートされる一般的なR関数

Oracle R Connector for Hadoopは、次のメソッドを含む標準汎用R関数もオーバーロードしてHiveオブジェクトを操作します。

文字メソッド

casefold、chartr、gsub、nchar、substr、substring、tolower、toupper

このリリースでは、greplやsubはサポートされません。

フレーム・メソッド

- attach、show

- [, $, $<-, [[, [[<-

- サブセット関数: head、tail

- メタデータ関数: dim、length、NROW、nrow、NCOL、ncol、names、names<-、colnames、colnames<-

- 変換関数: as.data.frame、as.env、as.list

- 算術演算子: +、-、*、^、%%、%/%、/

- Compare、Logic、xor、!

- テスト関数: is.finite、is.infinite、is.na、is.nan

- 数学的変換: abs、acos、asin、atan、ceiling、cos、exp、expm1、floor、log、log10、log1p、log2、logb、round、sign、sin、sqrt、tan、trunc

- 基礎統計: colMeans、colSums、rowMeans、rowSums、Summary、summary、unique

- by、merge

- unlist、rbind、cbind、data.frame、eval

このリリースでは、dimnames、interaction、max.col、row.names、row.names<-、scale、split、subset、transform、withまたはwithinはサポートされません。

論理メソッド

ifelse、Logic、xor、!

行列メソッド

サポートされません。

数値メソッド

- 算術演算子: +、-、*、^、%%、%/%、/

- テスト関数: is.finite、is.infinite、is.nan

- abs、acos、asin、atan、ceiling、cos、exp、expm1、floor、log、log1p、log2、log10、logb、mean、round、sign、sin、sqrt、Summary、summary、tan、trunc、zapsmall

このリリースでは、atan2、besselI、besselK、besselJ、besselY、diff、factorial、lfactorial、pmax、pminまたはtabulateはサポートされません。

ベクトル・メソッド

- show、length、c

- テスト関数: is.vector、is.nan

- 変換関数: as.vector、as.character、as.numeric、as.integer、as.logical

- [, [<-, |

- by、Compare、head、%in%、paste、sort、table、tail、tapply、unique

このリリースでは、interaction、lengthb、rankまたはsplitはサポートされません。

例5-1に、簡単なデータ準備とデータ処理を示します。詳細は、「Hiveデータ型のサポート」を参照してください。

例5-1 Rを使用したHive表のデータの処理

# Connect to Hive
ore.connect(type="HIVE")

# Attach the current envt. into search path of R
ore.attach()

# create a Hive table by pushing the numeric columns of the iris data set
IRIS_TABLE <- ore.push(iris[1:4])

# Create bins based on Petal Length
IRIS_TABLE$PetalBins = ifelse(IRIS_TABLE$Petal.Length < 2.0, "SMALL PETALS",
+                        ifelse(IRIS_TABLE$Petal.Length < 4.0, "MEDIUM PETALS",
+                        ifelse(IRIS_TABLE$Petal.Length < 6.0,
+                               "MEDIUM LARGE PETALS", "LARGE PETALS")))

#PetalBins is now a derived column of the HIVE object
> names(IRIS_TABLE)
[1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width"  "PetalBins"

# Based on the bins, generate summary statistics for each group
aggregate(IRIS_TABLE$Petal.Length, by = list(PetalBins = IRIS_TABLE$PetalBins),
+           FUN = summary)
1        LARGE PETALS    6 6.025000 6.200000 6.354545 6.612500  6.9    0
2 MEDIUM LARGE PETALS    4 4.418750 4.820000 4.888462 5.275000  5.9    0
3       MEDIUM PETALS    3 3.262500 3.550000 3.581818 3.808333  3.9    0
4        SMALL PETALS    1 1.311538 1.407692 1.462000 1.507143  1.9    0
Warning message:
ORE object has no unique key - using random order

5.3.3 Hiveデータ型のサポート

Oracle R Connector for Hadoopは、tinyint、smallint、bigint、int、floatおよびdoubleなどの文字列や数値のデータ型の列を含むHive表にアクセスできます。次の複雑なデータ型はサポートされません。

array
binary
map
struct
timestamp
union

サポートされないデータ型を含むHive表にアクセスしようとすると、エラー・メッセージが表示されます。表にアクセスするには、サポートされるデータ型に列を変換する必要があります。

サポートされるデータ型への列の変換するには、次の手順を実行します。

1. Hiveコマンド・インタフェースを開きます。

$ hive
hive>

2. サポートされないデータ型の列を特定します。

hive> describe table_name;

3. 列のデータを表示します。

hive> select column_name from table_name;

4. サポートされるデータ型のみを使用して、変換されたデータの表を作成します。

5. 適切な変換ツールを使用して、データを新しい表にコピーします。

例5-2に配列の変換を示します。例5-3と例5-4に、タイムスタンプ・データの変換を示します。

例5-2 文字列の列への配列の変換

R> ore.sync(table="t1")
Warning message:
table t1 contains unsupported data types
.
.
.
hive> describe t1;
OK
col1   int
col2   array<string>

hive> select * from t1;
OK
1      ["a","b","c"]
2      ["d","e","f"]
3      ["g","h","i"]

hive> create table t2 (c1 string, c2 string, c2 string);
hive> insert into table t2 select col2[0], col2[1], col2[2] from t1;
.
.
.
R> ore.sync(table="t2")
R> ore.ls()
[1] "t2"
R> t2$c1
[1] "a" "d" "g"

例5-3では、timestampデータ型の文字列への自動変換が使用されます。データは、tstmpという列があるt5という表に格納されます。

例5-3 タイムスタンプ列の変換

hive> select * from t5;

hive> create table t6 (timestmp string);
hive> insert into table t6 SELECT tstmp from t5;

例5-4では、Hiveのget_json_object関数を使用して、JSON表からOracle R Connector for Hadoopで使用する個別の表に、関連する2つの列を抽出します。

例5-4 JSONファイルのタイムスタンプ列の変換

hive> select * from t3;
OK
{"custId":1305981,"movieId":null,"genreId":null,"time":"2010-12-30:23:59:32","recommended":null,"activity":9}

hive> create table t4 (custid int, time string);

hive> insert into table t4 SELECT cast(get_json_object(c1, '$.custId') as int), cast(get_json_object(c1, '$.time') as string) from t3;

5.3.4 Hiveアクセスの使用上の注意

Hiveコマンド言語インタフェース(CLI)は問合せの実行に使用され、Linuxクライアントのサポートを提供します。JDBCやODBCはサポートされません。

ore.create関数は、Hive表をテキスト・ファイルのみで作成します。ただし、Oracle R Connector for Hadoopは、テキスト・ファイルまたはシーケンス・ファイルのいずれかで格納されるHive表にアクセスできます。

ore.exec関数を使用して、RコンソールからHiveコマンドを実行できます。デモの場合、hive_sequencefileデモを実行します。

Oracle R Connector for Hadoopは、デフォルトのHiveデータベースのみの表とビューにアクセスできます。他のデータベースのオブジェクトに対する読取りアクセス権を許可するには、デフォルトのデータベースでそのオブジェクトを公開する必要があります。たとえば、ビューを作成できます。

Oracle R Connector for Hadoopには、Hiveでの順序付けの概念がありません。Hiveで存続するRフレームがHiveから抜け出してメモリーに入ると、そのフレームの順序は同じになりません。Oracle R Connector for Hadoopは、順序付けが重要ではない大規模なHDFSデータセットのデータのクリーンアップとフィルタ処理のサポートを主な目的として設計されています。順序付けられていないHiveフレームを操作する場合、次の警告メッセージが表示されます。

Warning messages:
1: ORE object has no unique key - using random order
2: ORE object has no unique key - using random order

これらの警告を抑制するには、次のようにRセッションでore.warn.orderオプションを設定します。

R> options(ore.warn.order = FALSE)

5.3.5 例: Oracle R Connector for HadoopへのHive表のロード

表6-1に、分析目的でRデータ・フレームにHive表をロードする例を示します。この例では、次のOracle R Connector for Hadoop関数が使用されます。

hdfs.attach
ore.attach
ore.connect
ore.create
ore.hiveOptions
ore.sync

例5-5 Hive表のロード

# Connect to HIVE metastore and sync the HIVE input table into the R session.
ore.connect(type="HIVE")
ore.sync(table="datatab")
ore.attach()

# The "datatab" object is a Hive table with columns named custid, movieid, activity, and rating.
# Perform filtering to remove missing (NA) values from custid and movieid columns
# Project out three columns: custid, movieid and rating
t1 <- datatab[!is.na(datatab$custid) &
!is.na(datatab$movieid) &
datatab$activity==1, c("custid","movieid", "rating")]

# Set HIVE field delimiters to ','. By default, it is Ctrl+a for text files but
# ORCH 2.0 supports only ',' as a file separator.
ore.hiveOptions(delim=',')

# Create another Hive table called "datatab1" after the transformations above.
ore.create (t1, table="datatab1")

# Use the HDFS directory, where the table data for datatab1 is stored, to attach
# it to ORCH framework. By default, this location is "/user/hive/warehouse"
dfs.id <- hdfs.attach("/user/hive/warehouse/datatab1")

# dfs.id can now be used with all hdfs.*, orch.* and hadoop.* APIs of ORCH for further processing and analytics.

5.4 Oracle Databaseへのアクセス

Oracle R Connector for Hadoopは、基本レベルのデータベース・アクセスを提供します。データベース表の内容をHDFSに移動したり、HDFS分析の結果をデータベースに戻したりすることができます。

その後、Oracle R Enterpriseという個別の製品を使用して、この小規模データセットに対してさらに分析を実行できます。この製品を使用すると、R言語を使用して、データベースの表、ビューおよびその他のデータ・オブジェクトに統計分析を実行できます。Business IntelligenceおよびIn-Database分析のサポートを含む、データベース・オブジェクトへの透過的なアクセス権があります。

Oracle Databaseに格納されるデータへのアクセスは、常にDBAから付与されるアクセス権に制限されます。

Oracle R Enterpriseは、Oracle Database Enterprise EditionへのOracle Database Advanced Analyticsオプションに含まれています。Oracle Big Data Connectorのいずれかではありません。

関連項目:
Oracle R Enterpriseユーザーズ・ガイド

5.4.1 Oracle Databaseアクセスの使用上の注意

Oracle R Connector for Hadoopは、Sqoopを使用して、HDFSとOracle Database間でデータを移動します。Sqoopは、Oracle R Connector for Hadoopに対して次のような複数の制限を設けます。

- BINARY_FLOAT列またはBINARY_DOUBLE列を含むOracle表はインポートできません。回避策として、これらの列の型をNUMBERに変換するビューを作成できます。

- 列名はすべて大文字にする必要があります。

5.4.2 Oracle R EnterpriseでOracle R Connector for Hadoopを使用する場合のシナリオ

次のシナリオで、Oracle R Connector for HadoopとOracle R Enterpriseを使用するケースを確認してください。

Oracle R Connector for Hadoopを使用すると、アクセス権を持つファイルをHDFS上で検索して、そのうち1つのファイルのデータに対してR計算を実行できます。また、ローカル・ファイルシステムのテキスト・ファイルに格納されているデータを計算用にHDFSにアップロードし、DBMS_SCHEDULERを使用してRスクリプトをHadoopクラスタで実行するようスケジュールして、結果をPC上のローカル・ファイルにダウンロードできます。

Oracle R Enterpriseを使用すると、Rインタフェースを開いてOracle Databaseに接続し、データベースの権限に基づいて使用可能になる表とビューを操作できます。行の除外、導出された列の追加、新しい列の投影および視覚的で統計的な分析を行うことができます。

Oracle R Connector for Hadoopを使用すると、Rで記述されたCPU負荷の高い計算の場合、MapReduceジョブをHadoopにデプロイできます。計算には、HDFS (Oracle R Enterpriseを含む)またはOracle Databaseに格納されているデータを使用できます。計算の結果をOracle DatabaseやRコンソールに返し、視覚化したり、追加処理を行うことができます。

5.5 Oracle R Connector for Hadoopの分析関数

表5-1に分析関数を示します。詳細は、Rのヘルプを使用してください。

表5-1 分析関数の説明

関数

説明

orch.evaluate

orch.lmfで生成される適合度を評価します。この情報は、モデル・パラメータのチューニングで役立ちます。

orch.export.fit

orch.lmf.jellyfishまたはorch.nmfに指定された宛先にモデル(WおよびH因子行列)をエクスポートします。orch.mahout.lmf.alsには使用されません。

orch.lm

tall-and-skinny QR (TSQR)因数分解と並列分散を使用して線形モデルを調整します。この関数は、 Oracle R Enterpriseのore.lm関数と同じ統計パラメータを計算します。

orch.lmf

jellyfishアルゴリズム、またはMahout alternating least squares with weighted regularization (ALS-WR)アルゴリズムを使用して、低ランクの行列因数分解モデルを調整します。

orch.neural

入力と出力の間の複雑な非線形の関係をモデル化したり、データのパターンを見つけたりするニューラル・ネットワークを提供します。

orch.nmf

jellyfishアルゴリズムを使用して非負行列因子分解モデルを作成する主なエントリ・ポイントを提供します。この関数は、入力をメモリーに収める必要がないため、RのNMFパッケージよりもかなり大規模なデータセットを操作できます。

orch.nmf.NMFalgo

RのNMFパッケージ・フレームワークをカスタム・アルゴリズムとして挿入します。この関数は、ベンチマーク・テストに使用されます。

orch.recommend

入力したorch.mahout.lmf.aslモデルに基づき、格付けが予想される各ユーザーに推奨される上位n個の項目を計算します。

predict.orch.lm

orch.lmで計算される適合度に基づき、今後の結果を予測します。

print.orch.lm

orch.lmf関数で返されるモデルを出力します。

print.summary.orch.lm

orch.lmで計算される適合度の要約を出力します。

summary.orch.lm

orch.lmで計算される適合度の要約を準備します。

5.6 ORCH mapred.configクラス

hadoop.exec関数とhadoop.run関数には、結果のMapReduceジョブを構成するためのオプションの引数configがあります。この引数は、mapred.configクラスのインスタンスになります。

mapred.configクラスには次のスロットがあります。

hdfs.access

マッパー、リデューサおよびコンバイナでHDFS.*関数にアクセスできるようにするにはTRUEに設定し、アクセスを制限するにはFALSE (デフォルト)に設定します。

job.name

ジョブの進捗状況をさらに簡単に監視できるようにするジョブの記述名。

map.input

マッパーの入力データ型キーワード: data.frame、listまたはvector (デフォルト)。

map.output

マッパーからデータの出力構造を定義するサンプルRデータ・フレーム・オブジェクト。マッパーによって入力データ形式が変わる場合のみ必要です。その後、リデューサでは、マッパーで生成されたデータの入力ストリームを正確に解析するサンプル・データ・フレームが必要になります。

マッパーが、受信したレコードと完全に同じレコードを出力する場合、このオプションを省略できます。

map.split

使用するマッパー関数がマッパーから受け取る行数。

- 0は、Hadoopで指定されるすべての行を特定のマッパーのマッパー関数に送信します。この設定は、各マッパーのデータのかなりの部分がRメモリーに収まることがわかっている場合のみ使用します。収まらない場合、Rプロセスが失敗してメモリー割当てエラーが生じます。

- 1は、一度に1行のみをマッパーに送信します(デフォルト)。マッパーのパフォーマンスを改善するにはこの値を増やします。これにより、マッパー関数の起動数が減少します。これは、関数が小規模の場合に特に重要です。

- nは、一度に少なくともn行をマッパーに送信します。この構文では、nは1よりも大きな整数になります。一部のアルゴリズムでは、関数に対して最低限の行数が必要です。

map.tasks

実行するマッパーの数。マッパーを連続して実行するには1を指定し、並列で実行するには1よりも大きな整数を指定します。値を指定しない場合、マッパーの数は、クラスタ、作業負荷およびHadoop構成の容量で決まります。

map.valkey

マッパーのデータ値としてキーを複製するにはTRUE、キーをキーとしてのみ使用するにはFALSE (デフォルト)に設定します。

min.split.size

HDFSファイルをマッパーに送る前に分割するための下方境界を制御します。このオプションは、Hadoopのmapred.min.split.sizeオプションの値を反映し、バイト単位で設定されます。

reduce.input

リデューサの入力データ型キーワード: data.frameまたはlist (デフォルト)。

reduce.output

リデューサからデータの出力構造を定義するサンプルRデータ・フレーム・オブジェクト。これはオプションのパラメータです。

サンプル・データ・フレームは、出力HDFSオブジェクトのメタデータの生成に使用されます。サンプリングと解析のステップをなくすことで、ジョブの実行時間を短縮します。また、列名とその他のメタデータを指定できるため、出力データ形式も改善されます。サンプル・データ・フレームを指定しない場合、出力HDFSファイルはサンプリングされ、メタデータが自動で生成されます。

reduce.split

リデューサに対して同時に指定されるデータ値の数。「map.split」の値を参照してください。リデューサは、同時にすべての値を受け取ることを予測するため、reduce.splitを0 (ゼロ)以外の値に設定した場合、リデューサで一部のデータセットを処理する必要があります。

reduce.tasks

実行するリデューサの数。リデューサを連続して実行するには1を指定し、並列で実行するには1よりも大きな整数を指定します。値を指定しない場合、リデューサの数は、クラスタ、作業負荷およびHadoop構成の容量で決まります。

reduce.valkey

リデューサのデータ値としてキーを複製するにはTRUE、キーをキーとしてのみ使用するにはFALSE (デフォルト)に設定します。

verbose

診断情報を生成するにはTRUE、それ以外はFALSEに設定します。

5.7 Oracle R Connector for Hadoopの例とデモ

ORCHパッケージには、Oracle R Connector for Hadoopを使用してHadoopクラスタで実行するRプログラムの調整に役立つサンプル・コードが含まれます。このトピックでは、これらの例と実演について説明します。

- デモの使用方法

- 例の使用方法

5.7.1 デモの使用方法

Oracle R Connector for Hadoopには、様々なデモが用意されています。これらを実行する手順を次に説明します。

エラーが発生したら、作業領域イメージを保存せずにRを終了し、新しいセッションを開始してください。また、ローカル・ファイル・システムおよびHDFSファイル・システムに作成された一時ファイルを削除する必要もあります。

# rm -r /tmp/orch*
# hadoop fs -rm -r /tmp/orch*

Rプログラムのデモ

hdfs_cpmv.R

HDFSのファイルとディレクトリのコピー、移動および削除を示します。

このプログラムでは、次のORCH関数が使用されます。

hdfs.cd
hdfs.cp
hdfs.exists
hdfs.ls
hdfs.mkdir
hdfs.mv
hdfs.put
hdfs.pwd
hdfs.rmdir
hdfs.root
hdfs.setroot

このデモを実行するには、次のコマンドを使用します。

R> demo("hdfs_cpmv", package="ORCH")

hdfs_datatrans.R

HDFSとローカル・ファイルシステム間、およびHDFSとOracle Database間でのデータ転送を示します。

注意:
このデモでは、Oracle R EnterpriseクライアントがOracle Big Data Applianceに、Oracle R EnterpriseサーバーがOracle Databaseホストにそれぞれインストールされている必要があります。
このデモを完了するには、Oracle R Connector for HadoopおよびOracle R Enterpriseを使用してOracle Databaseに接続する必要があります。詳細は、「orch.connect」およびore.connectのヘルプを参照してください。

このプログラムでは、次のORCH関数が使用されます。

hdfs.cd
hdfs.describe
hdfs.download
hdfs.get
hdfs.pull
hdfs.pwd
hdfs.rm
hdfs.root
hdfs.setroot
hdfs.size
hdfs.upload
orch.connected
ore.drop脚注 1
ore.is.connected脚注 1

このデモを実行するには、次のコマンドを使用して、ここで示したore.connectおよびorch.connectのパラメータを実際のOracle Databaseにあわせて置き換えます。

R> ore.connect("RQUSER", "orcl", "localhost", "welcome1")
Loading required package: ROracle
Loading required package: DBI
R> orch.connect("localhost", "RQUSER", "orcl", "welcome1", secure=F)
Connecting ORCH to RDBMS via [sqoop]
Host: localhost
Port: 1521
SID:  orcl
User: RQUSER
Connected.
[1] TRUE
R> demo("hdfs_datatrans", package="ORCH")

hdfs_dir.R

HDFSディレクトリに関連する関数の使用を示します。

このプログラムでは、次のORCH関数が使用されます。

hdfs.cd
hdfs.ls
hdfs.mkdir
hdfs.pwd
hdfs.rmdir
hdfs.root
hdfs.setroot

このデモを実行するには、次のコマンドを使用します。

R> demo("hdfs_dir", package="ORCH")

hdfs_putget.R

Rデータ・フレームとHDFS間でのデータの転送方法を示します。

このプログラムでは、次のORCH関数が使用されます。

hdfs.attach
hdfs.describe
hdfs.exists
hdfs.get
hdfs.put
hdfs.pwd
hdfs.rm
hdfs.root
hdfs.sample
hdfs.setroot

このデモを実行するには、次のコマンドを使用します。

R> demo("hdfs_putget", package="ORCH")

hive_aggregate.R

Irisデータセットの選択内容をHiveに移動し、種類(要約、平均、最小、最大、標準偏差、中央値および四分位範囲(IQR))ごとにこれらの集計を実行します。

このプログラムでは、次のORCH関数を使用してHive表を設定します。これらの関数は、すべてのHiveデモ・プログラムで使用され、Rヘルプで説明されています。

ore.attach
ore.connect
ore.push

このデモを実行するには、次のコマンドを使用します。

R> demo("hive_aggregate", package="ORCH")

hive_analysis.R

基本分析とデータ処理操作を示します。

このデモを実行するには、次のコマンドを使用します。

R> demo("hive_analysis", package="ORCH")

hive_basic.R

このデモは、基本のR関数を使用して、行数(nrow)、列数(length)、最初の5行(head)、列のクラスとデータ型(classとis.*)、および各列の値の文字数(nchar)といった、Hive表に関する情報を取得します。

このプログラムを実行するには、次のコマンドを使用します。

R> demo("hive_basic", package="ORCH")

hive_binning.R

Irisデータセットの花弁のサイズに基づき、Hiveに瓶を作成します。

このプログラムを実行するには、次のコマンドを使用します。

R> demo("hive_binning", package="ORCH")

hive_columnfns.R

Irisデータセットを使用して、複数の列関数(min、max、sd、mean、fivenum、var、IQR、quantile、log、log2、log10、absおよびsqrtなど)の使用を示します。

このプログラムを実行するには、次のコマンドを使用します。

R> demo("hive_columnfns", package="ORCH")

hive_nulls.R

AIRQUALITYデータセットを使用して、RとHiveでのnullの処理に関する違いを示します。

このプログラムでは、Rヘルプで説明されている次のORCH関数が使用されます。

ore.attach
ore.connect
ore.na.extract
ore.push

このプログラムを実行するには、次のコマンドを使用します。

R> demo("hive_nulls", package="ORCH")

hive_pushpull.R

HiveとクライアントRデスクトップ間でのIrisデータセット分割の処理を示します。

このプログラムでは、Rヘルプで説明されている次のORCH関数が使用されます。

ore.attach
ore.connect
ore.pull
ore.push

このプログラムを実行するには、次のコマンドを使用します。

R> demo("hive_pushpull", package="ORCH")

hive_sequencefile.R

carsデータセットを使用して、シーケンス・ファイルとして格納されるHive表の作成方法と使用方法を示します。

このプログラムでは、Rヘルプで説明されている次のORCH関数が使用されます。

ore.attach
ore.connect
ore.create
ore.exec
ore.sync
ore.drop

このプログラムを実行するには、次のコマンドを使用します。

R> demo("hive_sequencefile", package="ORCH")

mapred_basic.R

Rで記述されたマッパーとリデューサの簡単な例を示します。この例ではcarsデータセットが使用されます。

このプログラムでは、次のORCH関数が使用されます。

hadoop.run
hdfs.get
hdfs.put
hdfs.rm
hdfs.setroot
orch.keyval

このプログラムを実行するには、次のコマンドを使用します。

R> demo("mapred_basic", package="ORCH")

mapred_modelbuild.R

並列モデルの構築でマッパーとリデューサを実行し、HDFSに描画を並列で保存して、グラフを表示します。ここではirisデータセットが使用されます。

このプログラムでは、次のORCH関数が使用されます。

hadoop.run
hdfs.download
hdfs.exists
hdfs.get
hdfs.id
hdfs.put
hdfs.rm
hdfs.rmdir
hdfs.root
hdfs.setroot
hdfs.upload
orch.export
orch.pack
orch.unpack

このプログラムを実行するには、次のコマンドを使用します。

R> demo("mapred_modelbuild", package="ORCH")

orch_lm.R

orch.lmアルゴリズムを使用して線形モデルを調整し、そのモデルとRのlmアルゴリズムを比較します。ここではirisデータセットが使用されます。

このプログラムでは、次のORCH関数が使用されます。

hdfs.cd
hdfs.get
hdfs.put
hdfs.pwd
hdfs.rm
hdfs.root
hdfs.setroot
orch.lm脚注 1
predict.orch.lm脚注 1

このプログラムを実行するには、次のコマンドを使用します。

R> demo("orch_lm", package="ORCH")

orch_lmf_jellyfish.R

jellyfishアルゴリズムを使用して、低ランクの行列因数分解モデルを調整します。

このプログラムでは、次のORCH関数が使用されます。

hdfs.cd
hdfs.get
hdfs.mkdir
hdfs.pwd
hdfs.rmdir
hdfs.root
hdfs.setroot
orch.evaluate脚注 1
orch.export.fit脚注 1
orch.lmf脚注 1

このプログラムを実行するには、次のコマンドを使用します。

R> demo("orch_lmf_jellyfish", package="ORCH")

orch_lmf_mahout_als.R

Mahout ALS-WRアルゴリズムを使用して、低ランクの行列因数分解モデルを調整します。

このプログラムでは、次のORCH関数が使用されます。

hdfs.cd
hdfs.mkdir
hdfs.pwd
hdfs.rmdir
hdfs.root
orch.evaluate脚注 1
orch.lmf脚注 1
orch.recommend脚注 1

このプログラムを実行するには、次のコマンドを使用します。

R> demo("orch_lmf_mahout_als", package="ORCH")

orch_neural.R

Oracle R Connector for Hadoopニューラル・ネットワーク・アルゴリズムを使用してモデルを構築します。ここではirisデータセットが使用されます。

このプログラムでは、次のORCH関数が使用されます。

hdfs.cd
hdfs.put
hdfs.pwd
hdfs.rm
hdfs.root
hdfs.sample
hdfs.setroot
orch.neural脚注 1

このプログラムを実行するには、次のコマンドを使用します。

R> demo("orch_neural", package="ORCH")

orch_nmf.R

非負行列因子分解モデルを作成するRのNMFパッケージのフレームワークとorch.nmf関数の統合を示します。

このデモでは、NMFパッケージで提供されるGolubデータセットが使用されます。

このプログラムでは、次のORCH関数が使用されます。

hdfs.cd
hdfs.mkdir
hdfs.pwd
hdfs.rmdir
hdfs.root
hdfs.setroot
orch.nmf.NMFalgo脚注 1

このプログラムには、複数のRパッケージ(NMF、Biobase、BiocGenericsおよびRColorBrewer)が必要で、それらはまだインストールされていない可能性があります。ここでは、そのインストール手順を説明します。

注意:
依存パッケージを更新するかどうか尋ねられたら、常に「Update/None」と応答してください。インストールされるRパッケージはサポートされているバージョンです。これらを更新すると、Oracle Big Data Applianceソフトウェアのチェックが失敗し、ルーチン・メンテナンス時に問題が発生します。新しいパッケージをインストールしたら、必ずbdacheckswユーティリティを実行してください。詳細は、『Oracle Big Data Applianceオーナーズ・ガイド』のbdacheckswユーティリティに関する項を参照してください。
Hadoopクライアントを使用している場合は、Oracle Big Data Applianceではなく、そのクライアントにパッケージをインストールします。

NMFのインストール手順:

1. 次の場所にあるCRANアーカイブからNMFをダウンロードします。
http://cran.r-project.org/src/contrib/Archive/NMF/NMF_0.5.06.tar.gz

2. 標準のインストール方法でNMFをインストールします。

R> install.packages("/full_path/NMF_0.5.06.tar.gz", REPOS=null)

BioConductorプロジェクトからのBiobaseおよびBiocGenericsのインストール手順:

1. 次のようにbiocLiteパッケージを実行します。

R> source("http://bioconductor.org/biocLite.R")

2. Biobaseパッケージをインストールします。

R> biocLite("Biobase")

3. BiocGenericsパッケージをインストールします。

R> biocLite("BiocGenerics")

RColorBrewerのインストール手順:

- 次のように標準の方法で、CRANからパッケージをインストールします。

R> install.packages("RColorBrewer")

orch_nmfデモの実行手順:

1. 必須パッケージをロードします(このセッションでまだロードされていない場合)。

R> library("NMF")
R> library("Biobase")
R> library("BiocGenerics")
R> library("RColorBrewer")

2. デモを実行します。

R> demo("orch_nmf", package="ORCH")

demo-bagged.clust.R

ランダムに生成された値を使用したbaggedクラスタリングの例を示します。マッパーは、データの一部に対してK平均法クラスタリング分析を実行し、リデューサのセントロイドを生成します。リデューサは、セントロイドを階層クラスドに組み込み、HDFSにhclustオブジェクトを格納します。

このプログラムでは、次のORCH関数が使用されます。

hadoop.exec
hdfs.put
is.hdfs.id
orch.export
orch.keyval
orch.pack
orch.unpack

このプログラムを実行するには、必ずrootを/tmpに設定してから、ファイルを実行します。

R> hdfs.setroot("/tmp")
[1] "/tmp"
R> source("/usr/lib64/R/library/ORCHcore/demos/demo-bagged.clust.R")

Call:
c("hclust", "d", "single")

Cluster method   : single
Distance         : euclidean
Number of objects: 6

demo-kmeans.R

K平均法クラスタリングを実行します。

このプログラムでは、次のORCH関数が使用されます。

hadoop.exec
hdfs.get
orch.export
orch.keyval
orch.pack
orch.unpack

このプログラムを実行するには、必ずrootを/tmpに設定してから、ファイルを実行します。

R> hdfs.setroot("/tmp")
[1] "/tmp"
R> source("/usr/lib64/R/library/ORCHcore/demos/demo-kmeans.R")
centers
x           y
1  0.3094056  1.32792762
2  1.7374920 -0.06730981
3 -0.6271576 -1.20558920
4  0.2668979 -0.98279426
5  0.4961453  1.11632868
6 -1.7328809 -1.26335598
removing NaNs if any
final centroids
x           y
1  0.666782828  2.36620810
2  1.658441962  0.33922811
3 -0.627157587 -1.20558920
4 -0.007995672 -0.03166983
5  1.334578589  1.41213532
6 -1.732880933 -1.26335598

5.7.2 例の使用方法

例では、Oracle R Connector for HadoopのAPIの使用方法を示します。これらの例は、インストール・アーカイブ・ファイルから抽出後、テキスト・エディタで表示できます。これらはORCH2.0/ORCHcore/examplesディレクトリにあります。次に、例の実行手順を説明します。

Rプログラムの例

example-filter1.R

キーと値のペアの使用方法を示します。マッパー関数は、距離の値が30よりも大きな車をcarsデータセットから選択し、リデューサ関数は、速度ごとの距離の平均を計算します。

このプログラムでは、次のORCH関数が使用されます。

hadoop.run
hdfs.get
hdfs.put
orch.keyval

このプログラムを実行するには、必ずrootを/tmpに設定してから、ファイルを実行します。

R> hdfs.setroot("/tmp")
[1] "/tmp"
R> source("/usr/lib64/R/library/ORCHcore/examples/example-filter1.R")
Running cars filtering and mean example #1:
val1     val2
1    10 34.00000
2    13 38.00000
3    14 58.66667
4    15 54.00000
5    16 36.00000
6    17 40.66667
7    18 64.50000
8    19 50.00000
9    20 50.40000
10   22 66.00000
11   23 54.00000
12   24 93.75000
13   25 85.00000

example-filter2.R

値の使用方法のみを示します。マッパー関数は、距離が30よりも大きく速度が14よりも大きな車をcarsデータセットから選択し、リデューサ関数は、速度と距離の平均を1つの値ペアで計算します。

このプログラムでは、次のORCH関数が使用されます。

hadoop.run
hdfs.get
hdfs.put
orch.keyval

このプログラムを実行するには、必ずrootを/tmpに設定してから、ファイルを実行します。

R> hdfs.setroot("/tmp")
[1] "/tmp"
R> source("/usr/lib64/R/library/ORCHcore/examples/example-filter2.R")
Running cars filtering and mean example #2:
val1  val2
1 59.52 19.72

example-filter3.R

HDFSへのローカル・ファイルのロード方法を示します。マッパー関数とリデューサ関数は、example-filter2.Rと同じです。

このプログラムでは、次のORCH関数が使用されます。

hadoop.run
hdfs.download
hdfs.upload
orch.keyval

このプログラムを実行するには、必ずrootを/tmpに設定してから、ファイルを実行します。

R> hdfs.setroot("/tmp")
[1] "/tmp"
R> source("/usr/lib64/R/library/ORCHcore/examples/example-filter3.R")
Running cars filtering and mean example #3:
[1] "\t59.52,19.72"

example-group.apply.R

並列モデルの構築方法とグラフの生成方法を示します。マッパーは、irisデータセットの花弁の長さに基づきデータをパーティション化し、リデューサは基本のR統計とグラフィック関数を使用して、データを線形モデルに調整してグラフを描画します。

このプログラムでは、次のORCH関数が使用されます。

hadoop.run
hdfs.download
hdfs.exists
hdfs.get
hdfs.id
hdfs.mkdir
hdfs.put
hdfs.rmdir
hdfs.upload
orch.pack
orch.export
orch.unpack

このプログラムを実行するには、必ずrootを/tmpに設定してから、ファイルを実行します。

R> hdfs.setroot("/tmp")
[1] "/tmp"
R> source("/usr/lib64/R/library/ORCHcore/examples/example-group.apply.R")
Running groupapply example.
[[1]]
[[1]]$predict
.
.
.
[3]
[[3]]$predict
2      210        3        4        5        6        7        8
4.883662 5.130816 4.854156 5.163097 4.109921 4.915944 4.233498 4.886437
9       10       11       12       13       14       15       16
4.789593 4.545214 4.136653 4.574721 4.945451 4.359849 4.013077 4.730579
17       18       19       20       21       22       23       24
4.827423 4.480651 4.792367 4.386581 4.666016 5.007239 5.227660 4.607002
25       26       27       28       29       30       31       32
4.701072 4.236272 4.701072 5.039521 4.604228 4.171709 4.109921 4.015851
33       34       35       36       37       38       39       40
4.574721 4.201216 4.171709 4.139428 4.233498 4.542439 4.233498 5.733065
41       42       43       44       45       46       47       48
4.859705 5.851093 5.074577 5.574432 6.160034 4.115470 5.692460 5.321730
49       50       51       52       53       54       55       56
6.289160 5.386293 5.230435 5.665728 4.891986 5.330054 5.606714 5.198153
57       58       59       60       61       62       63       64
6.315892 6.409962 4.607002 5.915656 4.830198 6.127753 5.074577 5.603939
65       66       67       68       69       70       71       72
5.630671 5.012788 4.951000 5.418574 5.442532 5.848318 6.251329 5.512644
73       74       75       76       77       78       79       80
4.792367 4.574721 6.409962 5.638995 5.136365 4.889212 5.727516 5.886149
81       82       83       84       85       86       87       88
5.915656 4.859705 5.853867 5.980218 5.792079 5.168646 5.386293 5.483137
89
4.827423

[[3]]$pngfile
[1] "/user/oracle/pngfiles/3"

[1] "/tmp/orch6e295a5a5da9"

このプログラムでは、/tmpディレクトリに3つのグラフィック・ファイルが生成されます。図5-1に最後の内容を示します。

図5-1 example-group.apply.Rの出力例(fit-3.png)

「図5-1 example-group.apply.Rの出力例(fit-3.png)」の説明

example-kmeans.R

K平均法クラスタリング関数を定義し、クラスタリング・テストのランダム・ポイントを生成します。結果は出力されるかグラフで描画されます。

このプログラムでは、次のORCH関数が使用されます。

hadoop.exec
hdfs.get
hdfs.put
orch.export

このプログラムを実行するには、必ずrootを/tmpに設定してから、ファイルを実行します。

R> hdfs.setroot("/tmp")
[1] "/tmp"
R> source("/usr/lib64/R/library/ORCHcore/examples/example-kmeans.R")
Running k-means example.
val1      val2
1 1.005255389 1.9247858
2 0.008390976 2.5178661
3 1.999845464 0.4918541
4 0.480725254 0.4872837
5 1.677254045 2.6600670

example-lm.R

複数のマッパーと、すべての結果をマージする1つのリデューサの定義方法を示します。プログラムでは、irisデータセットを使用して線形回帰を計算します。

このプログラムでは、次のORCH関数が使用されます。

hadoop.run
hdfs.get
hdfs.put
orch.export
orch.pack
orch.unpack

このプログラムを実行するには、必ずrootを/tmpに設定してから、ファイルを実行します。

R> hdfs.setroot("/tmp")
[1] "/tmp"
R> source("/usr/lib64/R/library/ORCHcore/examples/example-lm.R")
Running linear model example.
Model rank 3, yy 3.0233000000E+02, nRows 150
Model coefficients
-0.2456051 0.2040508 0.5355216

example-logreg.R

carsデータセットで一次元のロジスティック回帰を実行します。

このプログラムでは、次のORCH関数が使用されます。

hadoop.run
hdfs.put
orch.export

このプログラムを実行するには、必ずrootを/tmpに設定してから、ファイルを実行します。

R> hdfs.setroot("/tmp")
[1] "/tmp"
R> source("/usr/lib64/R/library/ORCHcore/examples/example-logreg.R")
Running logistic regression.
[1] 1924.1

example-map.df.R

レコードの数が無制限のマッパーを、同時入力でデータ・フレームとして実行する方法を示します。マッパーは、距離が30よりも大きな車をcarsデータセットから選択し、距離の平均を計算します。リデューサは結果をマージします。

このプログラムでは、次のORCH関数が使用されます。

hadoop.run
hdfs.get
hdfs.put

このプログラムを実行するには、必ずrootを/tmpに設定してから、ファイルを実行します。

R> hdfs.setroot("/tmp")
[1] "/tmp"
R> source("/usr/lib64/R/library/ORCHcore/examples/example-map.df.R"))
Running example of data.frame mapper input:
val1     val2
1 17.66667 50.16667
2 13.25000 47.25000

example-map.list.R

レコードの数が無制限のマッパーを、同時入力でリストとして実行する方法を示します。マッパーは、距離が30よりも大きな車をcarsデータセットから選択し、距離の平均を計算します。リデューサは結果をマージします。

このプログラムでは、次のORCH関数が使用されます。

hadoop.run
hdfs.get
hdfs.put

このプログラムを実行するには、必ずrootを/tmpに設定してから、ファイルを実行します。

R> hdfs.setroot("/tmp")
[1] "/tmp"
R> source("/usr/lib64/R/library/ORCHcore/examples/example-map.list.R"
Running example of list mapper input:
val1 val2
1 15.9   49

example-model.plot.R

HDFSを使用したモデルとグラフの作成方法を示します。マッパーは、irisデータセットのキーと値のペアをリデューサに提供します。リデューサは、データセットから抽出されたデータで線形モデルを作成し、結果を描画して3つのHDFSファイルに保存します。

このプログラムでは、次のORCH関数が使用されます。

hadoop.run
hdfs.download
hdfs.exists
hdfs.get
hdfs.id
hdfs.mkdir
hdfs.put
hdfs.rmdir
hdfs.upload
orch.export
orch.pack

このプログラムを実行するには、必ずrootを/tmpに設定してから、ファイルを実行します。

R> hdfs.setroot("/tmp")
[1] "/tmp"
R> source("/usr/lib64/R/library/ORCHcore/examples/example-model.plot.R"
Running model building and graph example.
[[1]]
[[1]]$predict
.
.
.
[[3]]$predict
2      210        3        4        5        6        7        8
5.423893 4.955698 5.938086 5.302979 5.517894 6.302640 4.264954 6.032087
9       10       11       12       13       14       15       16
5.594622 6.080090 5.483347 5.393163 5.719353 4.900061 5.042065 5.462257
17       18       19       20       21       22       23       24
5.448801 6.392824 6.410097 5.032427 5.826811 4.827150 6.358277 5.302979
25       26       27       28       29       30       31       32
5.646442 5.959176 5.230068 5.157157 5.427710 5.924630 6.122271 6.504099
33       34       35       36       37       38       39       40
5.444983 5.251159 5.088064 6.410097 5.406619 5.375890 5.084247 5.792264
41       42       43       44       45       46       47       48
5.698262 5.826811 4.955698 5.753900 5.715536 5.680989 5.320252 5.483347
49       50
5.316435 5.011336

[[3]]$pngfile
[1] "/user/oracle/pngfiles/virginica"

[1] "/tmp/orch6e29190de160"

3つのグラフィック・ファイルが生成されます。図5-2に最後の内容を示します。

図5-2 example-model.plot.Rの出力例(fit-virginica.png)

「図5-2 example-model.plot.Rの出力例(fit-virginica.png)」の説明

example-model.prep.R

複数のマップ・タスク間でのデータの分散方法を示します。マッパーは、irisデータセットの一部の入力データからデータ・フレームを生成します。リデューサは、データ・フレームを1つの出力データセットにマージします。

このプログラムでは、次のORCH関数が使用されます。

hadoop.exec
hdfs.get
hdfs.put
orch.export
orch.keyvals

このプログラムを実行するには、必ずrootを/tmpに設定してから、ファイルを実行します。

R> hdfs.setroot("/tmp")
[1] "/tmp"
R> source("/usr/lib64/R/library/ORCHcore/examples/example-model.prep.R")
v1    v2         v3         v4
1   5.1  4.90   4.055200 0.33647224
2   4.9  4.20   4.055200 0.33647224
3   4.7  4.16   3.669297 0.26236426
.
.
.
299 6.2 18.36 221.406416 1.68639895
300 5.9 15.30 164.021907 1.62924054

example-rlm.R

簡単なRプログラムを、HadoopクラスタでMapReduceジョブとして実行可能なプログラムに変換する方法を示します。この例では、プログラムは、基本のR関数を使用してcarsデータセットに関する計算を実行し、線形モデルをグラフに描画します。

このプログラムでは、次のORCH関数が使用されます。

hadoop.run
orch.keyvals
orch.unpack

このプログラムを実行するには、必ずrootを/tmpに設定してから、ファイルを実行します。

R> hdfs.setroot("/tmp")
[1] "/tmp"
R> source("/usr/lib64/R/library/ORCHcore/examples/example-rlm.R"
[1] "--- Client lm:"

Call:
lm(formula = speed ~ dist, data = cars)

Residuals:
Min      1Q  Median      3Q     Max
-7.5293 -2.1550  0.3615  2.4377  6.4179

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept)  8.28391    0.87438   9.474 1.44e-12 ***
dist         0.16557    0.01749   9.464 1.49e-12 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.156 on 48 degrees of freedom
Multiple R-squared: 0.6511,     Adjusted R-squared: 0.6438
F-statistic: 89.57 on 1 and 48 DF,  p-value: 1.49e-12

[Ctrl]キーを押しながら[C]キーを押してRプロンプトを表示し、グラフィック・ウィンドウを閉じます。

R> dev.off()

図5-3に、プログラムによって生成される4つのグラフを示します。

図5-3 Example-rlm.Rの出力

「図5-3 Example-rlm.Rの出力」の説明

example-split.map.R

マッパーでのデータの分割方法を示します。最初のジョブでは、リスト・モードでマッパーを実行し、マッパーでリストを分割します。次のジョブでは、マッパーでデータ・フレームを分割します。どちらのジョブでもcarsデータセットが使用されます。

このプログラムでは、次のORCH関数が使用されます。

hadoop.run
hdfs.get
hdfs.put
orch.keyval

このプログラムを実行するには、必ずrootを/tmpに設定してから、ファイルを実行します。

R> hdfs.setroot("/tmp")
[1] "/tmp"
R> source("/usr/lib64/R/library/ORCHcore/examples/example-split.map.R")
Running example of list splitting in mapper
key count splits
1  NA    50      6
Running example of data.frame splitting in mapper
key count splits
1  NA    50      8

example-split.reduce.R

リデューサでcarsデータセットのデータを分割する方法を示します。

このプログラムでは、次のORCH関数が使用されます。

hadoop.run
hdfs.get
hdfs.put
orch.keyval

このプログラムを実行するには、必ずrootを/tmpに設定してから、ファイルを実行します。

R> hdfs.setroot("/tmp")
[1] "/tmp"
R> source("/usr/lib64/R/library/ORCHcore/examples/example-split.reduce.R")
Running example of data.frame reducer input
^C   key count
1    1     9
2    1     9
3    1     9
.
.
.
20   1     9
21   1     5

example-sum.R

MapReduceジョブでの合計演算の実行方法を示します。最初のジョブでは数値のベクトルを合計し、2番目のジョブではデータ・フレームのすべての列を合計します。

このプログラムでは、次のORCH関数が使用されます。

hadoop.run
orch.keyval

このプログラムを実行するには、必ずrootを/tmpに設定してから、ファイルを実行します。

R> hdfs.setroot("/tmp")
[1] "/tmp"
R> source("/usr/lib64/R/library/ORCHcore/examples/example-sum.R"
val2
1    6
val2 val3
1  770 2149

example-teragen.matrix.R

Hadoopでプログラムをテストするために大規模なデータセットを行列に生成する方法を示します。マッパーはランダム・データのサンプルを生成し、リデューサはそのサンプルをマージします。

このプログラムでは、次のORCH関数が使用されます。

hadoop.run
hdfs.put
orch.export
orch.keyvals

このプログラムを実行するには、必ずrootを/tmpに設定してから、ファイルを実行します。出力はありません。

R> hdfs.setroot("/tmp")
[1] "/tmp"
R> source("/usr/lib64/R/library/ORCHcore/examples/example-teragem.matrix.R"
Running TeraGen-PCA example:
R>

example-teragen.xy.R

Hadoopでプログラムをテストするために大規模なデータセットをデータ・フレームに生成する方法を示します。マッパーはランダム・データのサンプルを生成し、リデューサはそのサンプルをマージします。

このプログラムでは、次のORCH関数が使用されます。

hadoop.run
hdfs.put
orch.export
orch.keyvals

このプログラムを実行するには、必ずrootを/tmpに設定してから、ファイルを実行します。出力はありません。

R> hdfs.setroot("/tmp")
[1] "/tmp"
R> source("/usr/lib64/R/library/ORCHcore/examples/example-teragen2.xy.R")
Running TeraGen2 example.R>

example-teragen2.xy.R

Hadoopでプログラムをテストするために大規模なデータセットをデータ・フレームに生成する方法を示します。1つのマッパーはランダム・データの小規模サンプルを生成し、リデューサはそのサンプルをマージします。

このプログラムでは、次のORCH関数が使用されます。

hadoop.run
hdfs.put
orch.export
orch.keyvals

このプログラムを実行するには、必ずrootを/tmpに設定してから、ファイルを実行します。出力はありません。

R> hdfs.setroot("/tmp")
[1] "/tmp"
R> source("/usr/lib64/R/library/ORCHcore/examples/example-teragem2.xy.R"
Running TeraGen2 example.
R>

example-terasort.R

ランダムに生成された値のセットに関するTeraSortジョブの例を示します。

このプログラムでは、次のORCH関数が使用されます。

hadoop.run

このプログラムを実行するには、必ずrootを/tmpに設定してから、ファイルを実行します。

R> hdfs.setroot("/tmp")
[1] "/tmp"
R> source("/usr/lib64/R/library/ORCHcore/examples/example-terasort.R"
Running TeraSort example:
val1
1 -0.001467344
2 -0.004471376
3 -0.005928546
4 -0.007001193
5 -0.010587280
6 -0.011636190

5.8 Oracle R Connector for Hadoopのセキュリティ上の注意

Oracle R Connector for Hadoopでは、Sqoopユーティリティを起動してOracle Databaseに接続し、データの抽出または結果の格納を行います。

Sqoopは、HDFSまたはHiveと構造化データベースとの間でデータのインポートとエクスポートを行うHadoopのコマンドライン・ユーティリティです。Sqoopという名前は、"SQL to Hadoop"に由来します。Oracle R Connector for Hadoopでのデータベース・ユーザー・パスワードの格納方法とSqoopへの送信方法について、次に説明します。

Oracle R Connector for Hadoopでは、毎回パスワードを再入力する必要のないモードでユーザーがデータベース接続を確立した場合にのみユーザー・パスワードを格納します。パスワードは暗号化されてメモリーに格納されます。「orch.connect」を参照してください。

Oracle R Connector for Hadoopでは、Sqoop用の構成ファイルを生成し、Sqoopのローカルでの起動に使用します。ファイルには、ユーザーへの要求または暗号化されたメモリー内表現から取得されたユーザーのデータベース・パスワードが含まれます。ファイルは、ローカル・ユーザー・アクセス権限のみ持ちます。ファイルが作成され、権限が明示的に設定された後、ファイルが書込み用に開かれ、データが挿入されます。

Sqoopでは、構成ファイルを使用して特定のデータベース・ジョブ用にカスタムJARファイルを動的に生成し、JARファイルをHadoopクライアント・ソフトウェアに渡します。パスワードは、コンパイルされたJARファイル内に格納されます。プレーン・テキストには格納されません。

JARファイルは、ネットワーク接続を介してHadoopクラスタに転送されます。ネットワーク接続と転送プロトコルは、Hadoopに固有です(ポート5900など)。

構成ファイルは、SqoopでJARファイルのコンパイルが終了し、Hadoopジョブが起動されたら、削除されます。

脚注の説明
脚注 1: 使用情報については、Rのhelp関数を使用します。

6 ORCHライブラリ・リファレンス

この章では、ORCHライブラリの関数について説明します。この章の内容は次のとおりです。

- アルファベット順の関数

- カテゴリ別の関数

6.1 アルファベット順の関数

Hiveのore関数と分析関数については、Rのヘルプを使用してください。

R> help("function_name")

orch関数のヘルプ(Rd)ファイルはありません。これらの関数についてはこの章で説明します。

as.ore
as.ore.character
as.ore.frame
as.ore.integer
as.ore.logical
as.ore.numeric
as.ore.vector
hadoop.exec
hadoop.run
hdfs.attach
hdfs.cd
hdfs.cp
hdfs.describe
hdfs.download
hdfs.exists
hdfs.get
hdfs.head
hdfs.id
hdfs.ls
hdfs.mkdir
hdfs.mv
hdfs.parts
hdfs.pull
hdfs.push
hdfs.put
hdfs.pwd
hdfs.rm
hdfs.rmdir
hdfs.root
hdfs.sample
hdfs.setroot
hdfs.size
hdfs.tail
hdfs.upload
is.hdfs.id
is.ore
is.ore.character
is.ore.frame
is.ore.integer
is.ore.logical
is.ore.numeric
is.ore.vector
ore.create
ore.drop
ore.get
ore.pull
ore.push
ore.recode
orch.connect
orch.connected
orch.dbcon
orch.dbg.lasterr
orch.dbg.off
orch.dbg.on
orch.dbg.output
orch.dbinfo
orch.disconnect
orch.dryrun
orch.evaluate
orch.export
orch.export.fit
orch.keyval
orch.keyvals
orch.lm
orch.lmf
orch.neural
orch.nmf
orch.nmf.NMFalgo
orch.pack
orch.reconnect
orch.temp.path
orch.unpack
orch.version
predict.orch.lm
print.orch.lm
print.summary.orch.lm
summary.orch.lm

6.2 カテゴリ別の関数

関数は、次のカテゴリに大別できます。

- 接続

- データのコピー

- ファイルの調査

- MapReduce関数の記述

- デバッグ・スクリプト

- Hiveデータの使用方法

- 分析関数の記述

6.2.1 接続

orch.connect
orch.connected
orch.dbcon
orch.dbinfo
orch.disconnect
orch.reconnect

6.2.2 データのコピー

hdfs.attach
hdfs.cp
hdfs.download
hdfs.get
hdfs.mv
hdfs.pull
hdfs.push
hdfs.put
hdfs.upload
orch.export
orch.pack
orch.unpack

6.2.3 ファイルの調査

hdfs.cd
hdfs.describe
hdfs.exists
hdfs.head
hdfs.id
hdfs.ls
hdfs.mkdir
hdfs.parts
hdfs.pwd
hdfs.rm
hdfs.rmdir
hdfs.root
hdfs.sample
hdfs.setroot
hdfs.size
hdfs.tail
is.hdfs.id
orch.temp.path

6.2.4 MapReduce関数の記述

hadoop.exec
hadoop.run
orch.dryrun
orch.keyval
orch.keyvals

6.2.5 デバッグ・スクリプト

orch.dbg.lasterr
orch.dbg.off
orch.dbg.on
orch.dbg.output
orch.version

6.2.6 Hiveデータの使用方法

「HiveのORE関数」を参照してください。

6.2.7 分析関数の記述

「Oracle R Connector for Hadoopの分析関数」を参照してください。

hadoop.exec

Hadoopエンジンを起動し、実行用にマッパー、リデューサおよびコンバイナR関数を送信します。まず、データをHDFSにロードする必要があります。

使用方法

hadoop.exec(
dfs.id,
mapper,
reducer,
combiner,
export,
init,
final,
job.name,
config)

引数

dfs.id

処理するデータを含む、HDFS内のファイルの名前。ファイル名には、現在のパスに絶対的または相対的なパスを使用できます。

mapper

R言語で記述されたマッパー関数の名前。

reducer

R言語で記述されたリデューサ関数の名前(オプション)。

combiner

このリリースではサポートされません。

export

マッパー、リデューサまたはコンバイナ関数によって参照されている、現在のR環境からエクスポートされるRオブジェクトの名前(オプション)。

init

マッパー関数の開始前に一度実行される関数(オプション)。

final

リデューサ関数の完了後に一度実行される関数(オプション)。

job.name

自動生成されるジョブ名のかわりに、MapReduceジョブの進捗状況の追跡に使用可能な記述名(オプション)。

config

MapReduceジョブの構成パラメータを設定します(オプション)。

この引数は、mapred.configクラスのインスタンスであるため、次の形式になります。

config = new("mapred.config", param1, param2,...)

このクラスの説明については、「ORCH mapred.configクラス」を参照してください。

使用上の注意

Oracle R Connector for Hadoopでは、マッパーのみのジョブはサポートされません。orch.keyvalsをリデューサの本文として使用します。orch.keyvalsの例を参照してください。

この関数は、hadoop.run関数よりもさらに正確にデータ・フローを制御します。複数のマッパーとリデューサをパイプラインでつなぐ場合、結果がHDFS内に保持されるため、hadoop.execを使用する必要があります。結果はHDFSファイルに格納されます。

戻り値

HDFS内のデータ・オブジェクト識別子

関連項目

「hadoop.run」、「orch.dryrun」、「orch.keyvals」

例

このサンプル・スクリプトでは、hdfs.attachを使用して、ontime_Rという小規模なサンプル・データ・ファイルのオブジェクト識別子をHDFSで取得します。

MapReduc関数は、サンフランシスコ国際空港(SFO)に到着する定時運行数をカウントします。

dfs <- hdfs.attach('ontime_R')
res <- NULL
res <- hadoop.exec(
dfs,
mapper = function(key, ontime) {
if (key == 'SFO') {
keyval(key, ontime)
}
},
reducer = function(key, vals) {
sumAD <- 0
count <- 0
for (x in vals) {
if (!is.na(x$ARRDELAY)) {sumAD <- sumAD + x$ARRDELAY; count <- count + 1}
}
res <- sumAD / count
keyval(key, res)
}
)

スクリプトの実行後、res変数は、/user/oracle/xq/orch3d0b8218というHDFSファイルで、結果の場所を特定します。

R> res
[1] "/user/oracle/xq/orch3d0b8218"
attr(,"dfs.id")
[1] TRUE
R> print(hdfs.get(res))
val1     val2
1 SFO 27.05804

このコード・フラグメントはexample-kmeans.Rから抽出されます。エクスポート・オプションでは、HDFSファイルからエクスポートされるncenters生成データセットの場所を特定します。configオプションでは、k-means.1のMapReduceジョブ名と、データ・フレームのマッパー出力形式が提供されます。

mapf <- data.frame(key=0, val1=0, val2=0)
dfs.points <- hdfs.put(points)
dfs.centers <- hadoop.exec(
dfs.id = dfs.points,
mapper = function(k,v) {
keyval(sample(1:ncenters,1), v)
},
reducer = function(k,vv) {
vv <- sapply(vv, unlist)
keyval(NULL, c(mean(vv[1,]), mean(vv[2,])))
},
export = orch.export(ncenters),
config = new("mapred.config",
job.name = "k-means.1",
map.output = mapf)

hadoop.run

Hadoopエンジンを起動し、実行用にマッパー、リデューサおよびコンバイナR関数を送信します。データがまだHDFSに格納されていない場合、hadoop.runは、まずデータをHDFSにコピーします。

使用方法

hadoop.run(
data,
mapper,
reducer,
combiner,
export,
init,
final,
job.name,
config)

引数

data

データ・フレーム、Oracle R Enterpriseフレーム(ore.frame)、HDFSファイル名。

mapper

R言語で記述されたマッパー関数の名前。

reducer

R言語で記述されたリデューサ関数の名前(オプション)。

combiner

このリリースではサポートされません。

export

エクスポートされるRオブジェクトの名前。

init

マッパー関数の開始前に一度実行される関数(オプション)。

final

リデューサ関数の完了後に一度実行される関数(オプション)。

job.name

自動生成されるジョブ名のかわりに、ジョブの進捗状況の追跡に使用可能な記述名(オプション)。

config

MapReduceジョブの構成パラメータを設定します(オプション)。

この引数は、mapred.configクラスのインスタンスであるため、次の形式になります。

config = new("mapred.config", param1, param2,...

このクラスの説明については、「ORCH mapred.configクラス」を参照してください。

使用上の注意

Oracle R Connector for Hadoopでは、マッパーのみのジョブはサポートされません。orch.keyvalsをリデューサの本文として使用します。orch.keyvalsの例を参照してください。

hadoop.run関数は、HDFSから入力データのソースへ結果を返します。たとえば、HDFS入力データの結果はHDFSに保持され、ore.frame入力データの結果はOracle Databaseにコピーされます。

戻り値

入力データと同じ形式のオブジェクト

関連項目

「hadoop.exec」、「orch.dryrun」、「orch.keyvals」

例

このサンプル・スクリプトでは、hdfs.attachを使用して、ontime_Rという小規模なサンプル・データ・ファイルのオブジェクト識別子をHDFSで取得します。

MapReduc関数は、サンフランシスコ国際空港(SFO)に到着する定時運行数をカウントします。

dfs <- hdfs.attach('ontime_R')
res <- NULL
res <- hadoop.run(
dfs,
mapper = function(key, ontime) {
if (key == 'SFO') {
keyval(key, ontime)
}
},
reducer = function(key, vals) {
sumAD <- 0
count <- 0
for (x in vals) {
if (!is.na(x$ARRDELAY)) {sumAD <- sumAD + x$ARRDELAY; count <- count + 1}
}
res <- sumAD / count
keyval(key, res)
}
)

スクリプトの実行後、結果の場所は、res変数によって/user/oracle/xq/orch3d0b8218というHDFSファイルで特定されます。

R> res
[1] "/user/oracle/xq/orch3d0b8218"
attr(,"dfs.id")
[1] TRUE
R> print(hdfs.get(res))
val1     val2
1 SFO 27.05804

次に例を示します。

hadoop.run(x,
mapper = function(k,v) {
orch.keyval(k, v+1) # increment all values
},
reducer = function(k, vv) {
orch.keyvals(k, vv) # pass-through
}

hdfs.attach

HDFSの非構造化データ・ファイルのデータを、Oracle R Connector for Hadoopフレームワークにコピーします。デフォルトでは、HDFSのデータ・ファイルはコネクタで表示されません。ただし、データファイルの名前がわかっている場合、この関数を使用して名前をOracle R Connector for Hadoopネームスペースにアタッチします。

使用方法

hdfs.attach(
dfs.name,
force)

引数

dfs.name

HDFS内のファイルの名前。

force

関数がファイルの構造と各列のデータ型を検出するかどうかを制御します。

カンマ区切り(CSV)ファイルの場合はFALSE (デフォルト)。ファイルに列の名前とデータ型を識別するメタデータがない場合、関数がデータをサンプリングしてデータ型(数値または文字列)を導出します。その後、適切なメタデータを使用してファイルを再作成します。

CVS以外のファイル(バイナリ・ファイルなど)の場合はTRUE。この設定により、関数はメタデータを検出しようとしません。かわりに、ファイルを単にアタッチします。

使用上の注意

この関数を使用して、データ・フレームのアタッチと同様にCSVファイルをR環境にアタッチします。

Oracle R Connector for Hadoopでは、アタッチされたCVS以外のファイルの処理はサポートしません。ただし、CSV以外のファイルをアタッチし、そのファイルをローカル・コンピュータにダウンロードして必要に応じて使用できます。あるいは、Hadoopアプリケーションへの入力として使用するためにファイルをアタッチできます。

Hadoopコマンドライン・インタフェースには継承される制限があるため、大規模な入力HDFSファイルを処理する場合、この関数の速度が遅くなる可能性があります。

戻り値

HDFS内のファイルのオブジェクトID。操作が失敗した場合はNULL。

関連項目

「hdfs.download」

例

次の例では、dfsという変数にontime_RのオブジェクトIDを格納し、その値を表示します。

R> dfs <- hdfs.attach('ontime_R')
R> dfs
[1] "/user/oracle/xq/ontime_R"
attr(,"dfs.id")
[1] TRUE

hdfs.cd

デフォルトのHDFSパスを設定します。

使用方法

hdfs.cd(dfs.path)

引数

dfs.path

現在のパスに絶対的または相対的なパス。

戻り値

パスが正常に変更される場合はTRUE。操作が失敗した場合はFALSE。

例

次の例では、現在のディレクトリを/user/oracleから/user/oracle/sampleに変更します。

R> hdfs.cd("sample")
[1] "/user/oracle/sample"

hdfs.cp

HDFSファイルを別の場所にコピーします。

使用方法

hdfs.cp(
dfs.src,
dfs.dst,
force)

引数

dfs.src

コピーするソース・ファイルの名前。ファイル名には、現在のパスに絶対的または相対的なパスを使用できます。

dfs.dst

コピーされたファイルの名前。ファイル名には、現在のパスに絶対的または相対的なパスを使用できます。

force

既存のファイルを上書きする場合はTRUEに設定し、エラー・メッセージを表示するにはFALSE (デフォルト)に設定します。

戻り値

コピーが成功した場合はNULL。失敗した場合はFALSE。

例

次の例では、親ディレクトリにあるweblogというファイルをコピーして、既存のweblogファイルを上書きします。

R> hdfs.cp("weblog", "..", force=T)

hdfs.describe

HDFS内のファイルに関連付けられたメタデータを返します。

使用方法

hdfs.describe(
dfs.id)

引数

dfs.id

HDFS内のファイルの名前。ファイル名には、現在のパスに絶対的または相対的なパスを使用できます。

戻り値

メタデータを含むデータ・フレーム。メタデータがHDFSで利用できない場合はNULL。

例

次の例では、ontime_DBというHDFSファイルに関する情報を提供します。

R> hdfs.describe('ontime_DB')
name
1          path
2        origin
3         class
4         types
5           dim
6         names
7       has.key
8    key.column
9      null.key
10 has.rownames
11         size
12        parts

1                           values
2                        ontime_DB
3                          unknown
.
.
.

hdfs.download

HDFSからローカル・ファイルシステムにファイルをコピーします。

使用方法

hdfs.download(
dfs.id,
filename,
overwrite)

引数

dfs.id

HDFS内のファイルの名前。ファイル名には、現在のパスに絶対的または相対的なパスを使用できます。

filename

データのコピー先のローカル・ファイルシステム内のファイルの名前。

overwrite

操作で既存のローカル・ファイルを上書きするかどうかを制御します。filenameを上書きする場合はTRUE、エラーを表示する場合はFALSE (デフォルト)に設定します。

使用上の注意

この関数は、HDFSからファイルをコピーする最も高速で簡単な方法を提供します。複数の部分を1つのファイルにマージする場合以外はデータの変換は行われません。ローカル・ファイルには、HDFSファイルと完全に同じデータが含まれます。

戻り値

ローカル・ファイル名。コピーが失敗した場合はNULL。

例

次の例では、現在のHDFSディレクトリ内のファイル・リストを表示して、ontime2000.DBをローカル・ファイルシステムに/home/oracle/ontime2000.datとしてコピーします。

R> hdfs.ls()
[1] "ontime2000_DB" "ontime_DB"     "ontime_File"   "ontime_R"      "testdata.dat"
R> tmpfile <- hdfs.download("ontime2000_DB", "/home/oracle/ontime2000.dat", overwrite=F)
R> tmpfile
[1] "/home/oracle/ontime2000.dat"

hdfs.exists

ファイルがHDFSに存在することを確認します。

使用方法

hdfs.exists(
dfs.id)

引数

dfs.id

HDFS内のファイルの名前。ファイル名には、現在のパスに絶対的または相対的なパスを使用できます。

使用上の注意

この関数がTRUEを返す場合、データをアタッチして、そのデータをhadoop.run関数で使用できます。この関数を使用してHDFS識別子を検証し、データが存在することを確認することもできます。

戻り値

識別子が有効でデータが存在する場合はTRUE。オブジェクトが見つからない場合はFALSE。

関連項目

「is.hdfs.id」

例

次の例は、ontime_Rファイルが存在することを示しています。

R> hdfs.exists("ontime_R")
[1] TRUE

hdfs.get

HDFSからローカルR環境のデータ・フレームにデータをコピーします。R環境でデータが生成されると、すべてのメタデータが抽出され、列名やデータ型などのすべての属性がリストアされます。R環境でデータが生成されない場合、val1やval2などの汎用属性が割り当てられます。

使用方法

hdfs.get(
dfs.id,
sep)

引数

dfs.id

HDFS内のファイルの名前。ファイル名には、現在のパスに絶対的または相対的なパスを使用できます。

sep

ファイル内のフィールドの区切りに使用される記号。カンマ(,)がデフォルトの区切りになります。

使用上の注意

HDFSファイルがメモリー内Rデータ・フレームに収まるサイズの場合、hdfs.pull関数のかわりにこの関数を使用してファイルをコピーできます。Sqoopが使用されないことでhdfs.pullでは生じるオーバーヘッドが生じないため、hdfs.get関数の方が高速です。

戻り値

エクスポートされたデータセットを指すローカルR環境のメモリー内data.frameオブジェクト。操作が失敗した場合はNULL。

例

次の例では、resというデータ・フレームの内容を返します。

R> print(hdfs.get(res))
val1      val2
1   AA 1361.4643
2   AS  515.8000
3   CO 2507.2857
4   DL 1601.6154
5   HP  549.4286
6   NW 2009.7273
7   TW 1906.0000
8   UA 1134.0821
9   US 2387.5000
10  WN  541.1538

hdfs.head

HDFS内のファイルの先頭から、指定した数の行をコピーします。

使用方法

hdfs.head(
dfs.id,
n)

引数

dfs.id

HDFS内のファイルの名前。ファイル名には、現在のパスに絶対的または相対的なパスを使用できます。

n

ファイルから取得する行数。デフォルトは10です。

戻り値

ファイルの最初のn行。

関連項目

「hdfs.tail」

例

次の例では、ontime_Rの最初の2行を返します。

R> hdfs.head('ontime_R', 2)
[1] "\"\",\"YEAR\",\"MONTH\",\"MONTH2\",\"DAYOFMONTH\",\"DAYOFMONTH2\",\"DAYOFWEEK\",\"DEPTIME\",\"CRSDEPTIME\",\"ARRTIME\",\"CRSARRTIME\",\"UNIQUECARRIER\",\"FLIGHTNUM\",\"TAILNUM\",\"ACTUALELAPSEDTIME\",\"CRSELAPSEDTIME\",\"AIRTIME\",\"ARRDELAY\",\"DEPDELAY\",\"ORIGIN\",\"DEST\",\"DISTANCE\",\"TAXIIN\",\"TAXIOUT\",\"CANCELLED\",\"CANCELLATIONCODE\",\"DIVERTED\""
[2] "\"1\",1994,8,\"M08\",2,\"D02\",2,840,840,1126,1130,\"NW\",878,NA,106,110,NA,-4,0,\"MEM\",\"TPA\",656,NA,NA,0,NA,\"0\""

hdfs.id

HDFSパス名をRのdfs.idオブジェクトに変換します。

使用方法

hdfs.id(
dfs.x,
force)

引数

dfs.x

HDFSファイル名に解決する文字列またはテキスト表現。

force

ファイルが存在する必要がない場合はTRUE、ファイルが存在するようにするにはFALSEに設定します。

戻り値

文字列がHDFSファイル名に一致する場合はTRUE。該当の名前でファイルが見つからない場合はNULL。

例

次の例では、/user/oracle/demoのdfs.idオブジェクトを作成します。

R> hdfs.id('/user/oracle/demo')
[1] "user/oracle/demo"
attr(,"dfs.id")
[1] TRUE

次の例では、最初の失敗後、/user/oracle/newdemoという存在しないディレクトリのidというdfs.idオブジェクトを作成します。

R> id<-hdfs.id('/user/oracle/newdemo')
DBG: 16:11:38 [ER] "/user/oracle/newdemo" is not found
R> id<-hdfs.id('/user/oracle/newdemo', force=T)
R> id
[1] "user/oracle/newdemo"
attr(,"dfs.id")
[1] TRUE

hdfs.ls

指定されたパス内のデータを含む全HDFSディレクトリの名前のリスト。

使用方法

hdfs.ls(dfs.path)

引数

dfs.path

現在のデフォルト・パスに対する相対パス。デフォルト・パスは現在の作業ディレクトリです。

戻り値

HDFS内のデータ・オブジェクト名のリスト。指定されたパスが無効な場合はNULL。

関連項目

「hdfs.cd」

例

次の例では、現在のディレクトリ内のサブディレクトリをリストします。

R> hdfs.ls()
[1] "ontime_DB"   "ontime_FILE"   "ontime_R"

次の例では、親ディレクトリ内のディレクトリをリストします。

R> hdfs.ls("..")
[1] "demo"   "input"   "output"   "sample"   "xq"

次の例では、指定されたパスがHDFS内にないため、NULLを返します。

R> hdfs.ls("/bin")
NULL

hdfs.mkdir

現在の作業ディレクトリに相対的なサブディレクトリをHDFS内に作成します。

使用方法

hdfs.mkdir(
dfs.name,
cd)

引数

dfs.name

新しいディレクトリの名前。

cd

現在の作業ディレクトリを新しいサブディレクトリに変更する場合はTRUE、現在の作業ディレクトリのままにする場合はFALSE (デフォルト)。

戻り値

文字列による新しいディレクトリのフル・パス。ディレクトリが作成されなかった場合はNULL。

例

次の例では、/user/oracle/sampleディレクトリを作成します。

R> hdfs.mkdir('sample', cd=T)
[1] "/user/oracle/sample"
attr(,"dfs.path")
[1] TRUE

hdfs.mv

HDFSファイルを別の場所に移動します。

使用方法

hdfs.mv(
dfs.src,
dfs.dst,
force)

引数

dfs.src

移動するソース・ファイルの名前。ファイル名には、現在のパスに絶対的または相対的なパスを使用できます。

dfs.dst

移動したファイルの名前。ファイル名には、現在のパスに絶対的または相対的なパスを使用できます。

force

移動先の既存のファイルを上書きする場合はTRUE、操作を取り消してエラー・メッセージを表示するにはFALSE (デフォルト)に設定します。

戻り値

コピーが成功した場合はNULL。失敗した場合はFALSE。

例

次の例では、weblogというファイルをデモ・サブディレクトリに移動して、既存のweblogファイルを上書きします。

R> hdfs.mv("weblog", "./demo", force=T)

hdfs.parts

HDFS内のファイルを構成する部分の数を返します。

使用方法

hdfs.parts(
dfs.id)

引数

dfs.id

HDFS内のファイルの名前。ファイル名には、現在のパスに絶対的または相対的なパスを使用できます。

使用上の注意

HDFSでは、大規模なファイルを部分に分割します。これは、MapReduceジョブの並列化の基礎となります。HDFSファイルの部分が多いほど、多くのマッパーを並列で実行することができます。

戻り値

オブジェクトを構成する部分の数。オブジェクトがHDFS内に存在しない場合は0。

例

次の例は、HDFS内のontime_Rファイルが1つの部分で構成されていることを示しています。

R> hdfs.parts("ontime_R")
[1] 1

hdfs.pull

HDFSからOracle Databaseにデータをコピーします。

この操作は、Oracle Databaseによる認証が必要です。「orch.connect」を参照してください。

使用方法

hdfs.pull(
dfs.id,
sep,
db.name,
overwrite,
driver)

引数

dfs.id

HDFS内のファイルの名前。ファイル名には、現在のパスに絶対的または相対的なパスを使用できます。

sep

ファイル内のフィールドの区切りに使用される記号(オプション)。カンマ(,)がデフォルトの区切りになります。

db.name

Oracle Database内の表の名前。

overwrite

db.nameで同じ名前の表が上書きされるかどうかを制御します。表を上書きする場合はTRUE、エラーを表示する場合はFALSE (デフォルト)に設定します。

driver

データのコピーに使用されるドライバ(Sqoop (デフォルト)またはOracle Loader for Hadoopを使用するolh)を特定します。ドライバとして使用する前にOracle Loader for Hadoopを設定する必要があります。使用上の注意と、「Oracle Loader for Hadoopの設定」を参照してください。

使用上の注意

Oracle Database Advanced Analyticsオプションでは、Oracle R Enterpriseを使用して、Oracle Databaseへのロード後のデータを分析できます。

ドライバの選択

Sqoopは同期的であるため、大規模なデータセットのコピーに時間がかかる場合があります。コピーが完了すると、プロンプトが再度表示され、Rが使用できるようになります。

Oracle Loader for HadoopはSqoopよりもかなり高速であるため、できればOracle Loader for Hadoopをドライバとして使用してください。

OLHドライバに関する問題の修正

Oracle Loader for Hadoopを使用できる場合、ORCHライブラリのロード中に次のメッセージが表示されます。

OLH 2.0.0 is up

このメッセージが表示されない場合、Oracle Loader for Hadoopは適切にインストールされません。次の環境変数が正しく設定されていることを確認します。

- OLH_HOME: インストール・ディレクトリに設定します。

- HADOOP_CLASSPATH: $OLH_HOME/jlib/*を含めます。

- CLASSPATH: $OLH_HOME/jlib/*を含めます。

hdfs.pullが失敗してHADOOP_CLASSPATHが正しく設定される場合、Oracle Loader for HadoopのバージョンはCDHのバージョンに対して正しくない可能性があります。Oracle Loader for Hadoopのログ・ファイルを確認します。

関連項目:
インストール手順については、「Oracle Loader for Hadoopの設定」

戻り値

HDFSからロードされたデータを含むデータベース表を指すore.frameオブジェクト。操作が失敗した場合はNULL。

関連項目

ore.frameオブジェクトの説明については、Oracle R Enterpriseユーザーズ・ガイド

hdfs.push

Oracle DatabaseからHDFSにデータをコピーします。

この操作は、Oracle Databaseによる認証が必要です。「orch.connect」を参照してください。

使用方法

hdfs.push(
x,
key,
dfs.name,
overwrite,
driver,
split.by)

引数

x

プッシュするOracle Database内のデータを含むore.frameオブジェクト。

key

キー列の索引または名前。

dfs.name

HDFS内のオブジェクトの一意の名前。

overwrite

dfs.nameが同じ名前のオブジェクトを上書きできるようにする場合はTRUE。エラーを表示する場合はFALSE (デフォルト)。

driver

データのコピーに使用されるドライバを識別します。サポート対象のドライバはSqoopのみであるため、この引数は現在無視されます。

split.by

データのパーティション化に使用する列(必須)。

使用上の注意

この操作は同期的であるため、大規模なデータセットのコピーに時間がかかる場合があります。コピーが完了すると、プロンプトが再度表示され、Rが使用できるようになります。

ore.frameオブジェクトは、データベース表を指すOracle R Enterpriseメタデータ・オブジェクトです。これは、Rのdata.frameオブジェクトに相当します。

split.by引数を省略する場合、hdfs.pushは、データの一部のみをHDFSにインポートします。

戻り値

データセットを含むファイルのフル・パス。操作が失敗した場合はNULL。

関連項目

Oracle R Enterpriseユーザーズ・ガイド

例

次の例では、年が2000と等しいONTIME_Sデータベース表の行を含むontime_s2000というore.frameオブジェクトを作成します。その後、hdfs.pushはontime_s2000を使用してHDFSに/user/oracle/xq/ontime2000_DBを作成します。

R> ontime_s2000 <- ONTIME_S[ONTIME_S$YEAR == 2000,]
R> class(ontime_s2000)
[1] "ore.frame"
attr(,"package")
[1] "OREbase"
R> ontime2000.dfs <- hdfs.push(ontime_s2000, key='DEST', dfs.name='ontime2000_DB', 'split.by='YEAR')
R> ontime2000.dfs
[1] "/user/oracle/xq/ontime2000_DB"
attr(,"dfs.id")
[1] TRUE

hdfs.put

Rのメモリー内オブジェクト(data.frame)からHDFSにデータをコピーします。列名やデータ型などのすべてのデータ属性が、データとともにメタデータとして格納されます。

使用方法

hdfs.put(
data,
key,
dfs.name,
overwrite,
rownames)

引数

data

HDFSにコピーされるローカルR環境のore.frameオブジェクト。

key

キー列の索引または名前。

dfs.name

新規ファイルの一意の名前。

overwrite

dfs.nameで同じ名前のファイルが上書きされるかどうかを制御します。ファイルを上書きする場合はTRUE、エラーを表示する場合はFALSEに設定します。

rownames

ファイルの各行の先頭に通し番号を追加するにはTRUE、それ以外はFALSEに設定します。

使用上の注意

hdfs.pushのかわりにhdfs.putを使用して、データベース表などの ore.frameオブジェクトからHDFSにデータをコピーできます。表はRメモリーに収まるサイズである必要があります。そうでない場合、関数は失敗します。hdfs.put関数は、まず、すべての表データをローカルRメモリーに読み込み、その後、HDFSに転送します。小規模な表の場合、Sqoopが使用されないことでhdfs.pushでは生じるオーバーヘッドが生じないため、hdfs.pushよりもこの関数の方が高速です。

戻り値

新規ファイルのオブジェクトID。操作が失敗した場合はNULL。

例

次の例では、datデータ・フレームの内容で/user/oracle/xq/testdata.datというファイルを作成します。

R> myfile <- hdfs.put(dat, key='DEST', dfs.name='testdata.dat')
R> print(myfile)
[1] "/user/oracle/xq/testdata.dat"
attr(,"dfs.id")
[1] TRUE

hdfs.pwd

HDFS内の現在の作業ディレクトリを識別します。

使用方法

hdfs.pwd()

戻り値

現在の作業ディレクトリ。R環境がHDFSに接続できない場合はNULL。

例

次の例は、/user/oracleが現在の作業ディレクトリであることを示しています。

R> hdfs.pwd()
[1] "/user/oracle/"

hdfs.rm

HDFSからファイルまたはディレクトリを削除します。

使用方法

hdfs.rm(
dfs.id,
force)

引数

dfs.id

HDFS内のファイルまたはディレクトリの名前。名前には、現在のパスに絶対的または相対的なパスを使用できます。

force

ファイルを含むディレクトリを削除するかどうかを制御します。ディレクトリとそのファイルをすべて削除するにはTRUE、操作を取り消すにはFALSE (デフォルト)に設定します。

使用上の注意

この操作の後、このデータを指すHadoop内のすべてのオブジェクト識別子が無効になります。

戻り値

データが削除される場合はTRUE。操作が失敗した場合はFALSE。

例

次の例では、現在の作業HDFSディレクトリ内のdata1.logというファイルを削除します。

R> hdfs.rm("data1.log")
[1] TRUE

hdfs.rmdir

HDFS内のディレクトリを削除します。

使用方法

hdfs.rmdir(
dfs.name,
force)

引数

dfs.name

削除するHDFS内のディレクトリの名前。ディレクトリは、現在の作業ディレクトリの絶対パスか相対パスになります。

force

ファイルを含むディレクトリを削除するかどうかを制御します。ディレクトリとそのファイルをすべて削除するにはTRUE、操作を取り消すにはFALSE (デフォルト)に設定します。

使用上の注意

この関数は、ディレクトリに格納されているすべてのデータ・オブジェクトを削除します。これによって、HDFS内のすべての関連するオブジェクト識別子が無効になります。

戻り値

データが正常に削除される場合はTRUE。操作が失敗する場合はFALSE。

例

R> hdfs.rmdir("mydata")
[1] TRUE

hdfs.root

HDFSのrootディレクトリを返します。

使用方法

hdfs.root()

戻り値

HDFSのrootディレクトリのフル・パスを含むデータ・フレーム

使用上の注意

HDFSのデフォルトのrootは/に設定されます。ユーザーにはこのディレクトリへの書込み権限はありません。HDFSのrootを、書込み権限のあるパスに変更するには、hdfs.setroot関数を使用します。

関連項目

「hdfs.setroot」

例

次の例では、/user/oracleをHDFSのrootディレクトリに特定します。

R> hdfs.root()
[1] "/user/oracle"

hdfs.sample

HadoopファイルからRメモリー内オブジェクトにデータのランダム・サンプルをコピーします。この関数を使用して、最終的にはHadoopクラスタ上のHDFSデータセット全体で実行するR計算の開発用に、元のHDFSデータの小規模なサンプルをコピーします。

使用方法

hdfs.sample(
dfs.id,
lines,
sep)

引数

dfs.id

HDFS内のファイルの名前。ファイル名には、現在のパスに絶対的または相対的なパスを使用できます。

lines

サンプルとして返す行の数。デフォルト値は1000行です。

sep

Hadoopファイル内のフィールドの区切りに使用される記号。カンマ(,)がデフォルトの区切りになります。

使用上の注意

R環境でデータが生成されると、列名とデータ型を含むすべてのメタデータが抽出され、すべての属性がリストアされます。R環境でデータが生成されない場合、val1やval2などの汎用属性名が割り当てられます。

Hadoopコマンドライン・インタフェースには継承される制限があるため、大規模な入力HDFSファイルを処理する場合、この関数の速度が遅くなる可能性があります。

戻り値

サンプル・データセットを含むdata.frameオブジェクト。操作が失敗した場合はNULL。

例

次の例では、ontime_Rファイルの最初の3行を表示します。

R> hdfs.sample("ontime_R", lines=3)
YEAR MONTH MONTH2 DAYOFMONTH DAYOFMONTH2 DAYOFWEEK DEPTIME...
1 2000    12     NA         31          NA         7     1730...
2 2000    12     NA         31          NA         7     1752...
3 2000    12     NA         31          NA         7     1803...

hdfs.setroot

HDFSのrootディレクトリを設定します。

使用方法

hdfs.setroot(dfs.root)

引数

dfs.root

現在のrootディレクトリとして設定するHDFS内のフル・パス。この引数を省略する場合、使用するHDFSホーム・ディレクトリがrootとして使用されます。

使用上の注意

hdfs.rootを使用して現在のrootディレクトリを表示します。

Oracle R Connector for Hadoopを使用するすべてのHDFSパスおよび操作は、HDFSの現在のrootに相対的です。rootディレクトリの上の現在の作業ディレクトリは変更できません。ユーザーは、HDFSのデフォルトのrootディレクトリであるHDFS /ディレクトリに書き込むことはできません。

戻り値

新たに設定されたHDFS rootディレクトリのフル・パス。エラーによって新しいrootディレクトリが設定できなかった場合はNULL。

例

次の例では、HDFSのrootディレクトリを/user/oracleから/user/oracle/demoに変更します。

R> hdfs.root()
[1] "/user/oracle"
R> hdfs.setroot("/user/oracle/demo")
R> hdfs.root()
[1] "/user/oracle/demo"

hdfs.size

HDFS内のファイルのサイズを返します。

使用方法

hdfs.size(
dfs.id,
units)

引数

dfs.id

HDFS内のファイルの名前。ファイル名には、現在のパスに絶対的または相対的なパスを使用できます。

units

戻り値の測定単位を指定します。

- KB (キロバイト)

- MB (メガバイト)

- GB (ギガバイト)

- TB (テラバイト)

- PB (ペタバイト)

引数を省略するか、未知の値を入力した場合、単位はデフォルトでバイトに設定されます。

使用上の注意

このインタフェースを使用して、たとえば、HDFSファイル全体の内容をローカルRメモリーまたはローカル・ファイルにコピーするか、またはR計算のプロトタイプを作成し、データのサンプリングのみを行えるかを判断します。

戻り値

オブジェクトのサイズ。オブジェクトがHDFS内に存在しない場合は0。

例

次の例では、ontime_Rのファイル・サイズ999,839バイトを返します。

R> hdfs.size("ontime_R")
[1] 999839

hdfs.tail

HDFS内のファイルの末尾から、指定された数の行をコピーします。

使用方法

hdfs.tail(
dfs.id,
n)

引数

dfs.id

HDFS内のファイルの名前。ファイル名には、現在のパスに絶対的または相対的なパスを使用できます。

n

ファイルから取得する行数。

戻り値

ファイルの最後のn行。

関連項目

「hdfs.head」

例

次の例では、ontime_Rの最後の3行を返します。

R> hdfs.tail('ontime_R', 3)
[1] "\"219930\",1994,8,\"M08\",1,\"D01\",1,1947,1945,2038,2048,\"US\",1073,NA,51,63,NA,-10,2,\"PIT\",\"LAN\",275,NA,NA,0,NA,\"0\""
[2] "\"219931\",1994,8,\"M08\",2,\"D02\",2,802,805,948,950,\"AA\",1726,NA,106,105,NA,-2,-3,\"DFW\",\"BNA\",631,NA,NA,0,NA,\"0\""
[3] "\"219932\",1994,8,\"M08\",2,\"D02\",2,829,832,1015,1011,\"US\",1191,NA,166,159,NA,4,-3,\"BWI\",\"MSY\",998,NA,NA,0,NA,\"0\""

hdfs.upload

ローカル・ファイルシステムからHDFSにファイルをコピーします。

使用方法

hdfs.upload(
filename,
dfs.name,
overwrite,
split.size,
header)

引数

filename

ローカル・ファイルシステム内のファイルの名前。

dfs.name

HDFS内の新規ディレクトリの名前。

overwrite

dfs.nameで同じ名前のディレクトリが上書きされるかどうかを制御します。ディレクトリを上書きする場合はTRUE、エラーを表示する場合はFALSE (デフォルト)に設定します。

split.size

Hadoopファイルの各部分の最大バイト数(オプション)。

header

ローカル・ファイルの最初の行が、列名を含むヘッダーかどうかを示します。ヘッダーがある場合はTRUE、ない場合はFALSE (デフォルト)に設定します。

ヘッダーによって、MapReduce Rスクリプト内で列名を取り出し、データ・フィールドを索引ではなく、名前で参照できます。

使用上の注意

この関数は、HDFSにファイルをコピーする最も高速で簡単な方法を提供します。ファイルがsplit.sizeより大きい場合、Hadoopによって2つ以上の部分に分割されます。新しいHadoopファイルは一意のオブジェクトIDを取得し、各部分の名前はpart-0000xになります。Hadoopによって、ファイルのメタデータが自動的に作成されます。

戻り値

ロードされたデータのHDFSオブジェクトID。コピーが失敗した場合はNULL。

関連項目

「hdfs.download」、「hdfs.get」、「hdfs.put」

例

次の例では、ontime_s2000.datというファイルをHDFSにアップロードし、ファイルの場所を示します。このファイルは、ontime.dfs_Fileという変数に格納されます。

R> ontime.dfs_File <- hdfs.upload('ontime_s2000.dat', dfs.name='ontime_File')
R> print(ontime.dfs_File)
[1] "/user/oracle/xq/ontime_File"

is.hdfs.id

Rオブジェクトに有効なHDFSファイル識別子が含まれるかどうかを示します。

使用方法

is.hdfs.id(x)

引数

x

Rオブジェクトの名前。

戻り値

xが有効なHDFS識別子の場合はTRUE。xが有効な識別子でない場合はFALSE。

関連項目

「hdfs.attach」、「hdfs.id」

例

次の例は、hdfs.attachによって返された有効なHDFS識別子がdfsに含まれることを示しています。

R> dfs <- hdfs.attach('ontime_R')
R> is.hdfs.id(dfs)
[1] TRUE
R> print(dfs)
[1] "/user/oracle/xq/ontime_R"
attr(,"dfs.id")
[1] TRUE

次の例は、文字列として渡された有効なファイル名が有効なファイル識別子として認識されないことを示しています。

R> is.hdfs.id('/user/oracle/xq/ontime_R')
[1] FALSE

orch.connect

Oracle Databaseへの接続を確立します。

使用方法

orch.connect(
host,
user,
sid,
passwd,
port,
secure,
driver,
silent)

引数

host

Oracle Databaseが稼働しているサーバーのホスト名またはIPアドレス。

user

データベース・ユーザー名。

sid

Oracle DatabaseインスタンスのシステムID (SID)。

passwd

データベース・ユーザーのパスワード。パスワードを省略すると、プロンプトが表示されます。

port

Oracle Databaseリスナーのポート番号。デフォルト値は1521です。

secure

Oracle Databaseに対する認証の設定:

- TRUE: 接続のたびにデータベース・パスワードを入力する必要があります(デフォルト)。

- FALSE: セッション中のデータベース・パスワードの入力は1回のみで構いません。暗号化されたパスワードがメモリーに保持され、以降の接続試行時に使用されます。

driver

Oracle Databaseへの接続に使用するドライバ(オプション)。Sqoopがデフォルトのドライバになります。

silent

ホスト、ユーザー、パスワード、ポートおよびSIDの値がない場合のプロンプトを抑制するにはTRUE、プロンプトを表示するにはFALSE (デフォルト)。

使用上の注意

この関数は、アナリストがOracle Databaseに格納されているデータにアクセスする必要がある場合、または結果をデータベースに返す必要がある場合に使用します。

Oracle R Enterprise用Oracle Database Advanced AnalyticsライセンスおよびOracle Databaseへの接続を使用して、データベース表に格納されているデータを直接操作したり、処理されたデータ・フレームをHadoopのR計算に渡すことができます。

orch.dbcon関数で返される接続オブジェクトを使用して、Oracle Databaseに再接続できます。

戻り値

接続が成功して確認された場合はNULL。接続の試行に失敗した場合はFALSE。

関連項目

「orch.dbcon」、「orch.disconnect」

例

次の例では、ORCHライブラリをインストールして、ローカル・システムのOracle Databaseに接続します。

R> library(ORCH)
Loading required package: OREbase

Attaching package: OREbase

The following object(s) are masked from package:base:

cbind, data.frame, eval, interaction, order, paste, pmax, pmin,
rbind, table

Loading required package: OREstats
Loading required package: MASS
Loading required package: ORCHcore
Oracle R Connector for Hadoop 2.0
Hadoop 2.0.0-cdh4.1.2 is up
Sqoop 1.4.1-cdh4.1.2 is up
OLH 2.0.0 is up

R> orch.connect("localhost", "RQUSER", "orcl")
Connecting ORCH to RDBMS via [sqoop]
Host: localhost
Port: 1521
SID: orcl
User: RQUSER
Enter password for [RQUSER]: password
Connected.
[1] TRUE

注意:
ORCHのロード時にメッセージ「p with Hadoop MapReduce」が表示された場合は、HADOOP_HOME環境変数をクリアします。「Hadoopへのソフトウェアのインストール」を参照してください。

次の例では、接続オブジェクトを使用してOracle Databaseに再接続します。

R> conn<-orch.dbcon()
R> orch.disconnect()
Disconnected from a database.

R> orch.connect(conn)
Connecting ORCH to RDBMS via [sqoop]
Host: localhost
Port: 1521
SID: orcl
User: RQUSER
Enter password for [RQUSER]: password
Connected
[1] TRUE

orch.connected

Oracle R Connector for HadoopがOracle Databaseに接続するかどうかを確認します。

使用方法

orch.connected()

戻り値

Oracle R Connector for HadoopがOracle Databaseに接続できる場合はTRUE。接続できない場合はFALSE。

例

次の例は、Oracle R Connector for HadoopがOracle Databaseに接続できない場合を示しています。

R> orch.connected()[1] TRUE

orch.dbcon

認証資格証明を除く、Oracle Databaseへの現在の接続の接続オブジェクトを返します。

使用方法

orch.dbcon()

戻り値

Oracle Databaseの接続設定を含むデータ・フレーム

使用上の注意

orch.dbconで返される接続オブジェクトを使用して、orch.connectでOracle Databaseに再接続します。

関連項目

「orch.connect」

例

次の例は、orch.dbconで返される接続オブジェクトを使用してOracle Databaseに再接続する方法を示しています。

R> orch.connect('localhost', 'RQUSER', 'orcl')
Connecting ORCH to RDBMS via [sqoop]
Host: localhost
Port: 1521
SID: orcl
User: RQUSER
Enter password for [RQUSER]: password
Connected
[1] TRUE

R> conn<-orch.dbcon()
R> orch.disconnect()
Disconnected from a database.

R> orch.connect(conn)
Connecting ORCH to RDBMS via [sqoop]
Host: localhost
Port: 1521
SID: orcl
User: RQUSER
Enter password for [RQUSER]: password
Connected
[1] TRUE

次に、前述の例のorch.dbconで返される接続オブジェクトを示します。

R> conn
Object of class "orch.dbcon"
data frame with 0 columns and 0 rows
Slot "ok":
[1] TRUE

Slot "host":
[1] "localhost"

Slot "port":
[1] 1521

Slot "sid"
[1] "orcl"

Slot "user":
[1] "RQUSER"

Slot "passwd":
[1] ""

Slot "secure":
[1] TRUE

Slot "drv":
[1] "sqoop"

orch.dbg.lasterr

最後のエラー・メッセージを返します。

使用方法

orch.dbg.lasterr()

戻り値

最後のエラー・メッセージ。

例

次の例では、Hadoopインストールに関する問題を示す最後のエラー・メッセージを返します。

R> orch.dbg.lasterr()
[1] "split column must be specified"

orch.dbg.off

デバッグ・モードを無効にします。

使用方法

orch.dbg.off()

戻り値

FALSE

関連項目

「orch.dbg.on」

例

次の例では、デバッグを無効にします。

R> orch.dbg.off()

orch.dbg.on

デバッグ・モードを有効にします。

使用方法

orch.dbg.on(severity)

引数

severity

表示されるエラー・メッセージのタイプを識別します。表6-1に示す数字または大文字と小文字を区別しないキーワードで重大度を識別できます。

表6-1 デバッグの重大度レベル

キーワード

数字

説明

all

11

すべてのメッセージを返します。

critical

1

重大なエラーのみを返します。

error

2

すべてのエラーを返します。

warning

3

すべての警告を返します。

戻り値

重大度レベル

関連項目

「orch.dbg.output」、「orch.dbg.off」

例

次の例では、すべてのエラーに対するデバッグを有効にします。

R> severe<-orch.dbg.on(severity<-2)
R> severe
[1] "ERROR" "2"

orch.dbg.output

デバッガからの出力を管理します。

使用方法

orch.dbg.output(con)

引数

con

デバッグ情報が送信されるストリーム(stderr()、stdout()またはファイル名)を識別します。

使用上の注意

出力をリダイレクトする前に、まずデバッグ・モードを有効にする必要があります。

戻り値

現在のストリーム

関連項目

「orch.dbg.on」

例

次の例では、デバッグ・モードを有効にして、デバッグ情報をstderrに送信します。orch.dbg.output関数は、stderrの説明を返します。

R> orch.dbg.on('all')
R> err<-orch.dbg.output(stderr())
17:32:11 [SY] debug output set to "stderr"
R> print(err)
description          class     mode      text    opened    can read    can write
"stderr"     "terminal"      "w"    "text"   "opened"       "no"        "yes"

次の例では、出力をdebug.logというファイルにリダイレクトします。

R> err<-orch.dbg.output('debug.log')
17:37:45 [SY] debug output set to "debug.log"
R> print(err)
[1] "debug.log"

orch.dbinfo

現在の接続に関する情報を表示します。

使用方法

orch.dbinfo(dbcon)

引数

dbcon

Oracle Database接続オブジェクト。

戻り値

NULL

関連項目

「orch.dbcon」

例

次の例では、connという接続オブジェクトに格納される情報を表示します。

R> orch.dbinfo(conn)
Connected to a database via [sqoop]
Host: localhost
Port: 1521
SID:  orcl
User: RQUSER

orch.disconnect

ローカルRセッションをOracle Databaseから切断します。

使用方法

orch.disconnect(
silent,
dbcon)

引数

silent

すべてのメッセージを抑制するにはTRUE、メッセージを表示するにはFALSE (デフォルト)に設定します。

dbcon

接続の詳細を表示するにはTRUE、この情報を抑制するにはFALSE (デフォルト)に設定します。

使用上の注意

Oracle Databaseに接続せずに機能するorch関数はありません。

戻り値

dbconがTRUEの場合はOracle Database接続オブジェクト。それ以外はNULL。

関連項目

「orch.connect」

例

次の例では、ローカルRセッションをOracle Databaseから切断します。

R> orch.disconnect()
Disconnected from a database.

次の例では、ローカルRセッションをOracle Databaseから切断し、返された接続オブジェクトを表示します。

R> oid<-orch.disconnect(silent=TRUE, dbcon=TRUE)
R> oid
Object of class "orch.dbcon"
data frame with 0 columns and 0 rows
slow "ok":
[1] TRUE

Slot "host":
[1] "localhost"

Slow "port":
[1] 1521

Slot "sid":
[1] orcl

Slot "user":
[1] RQUSER

Slot "passwd":
[1] ""

Slot "secure":
[1] TRUE

Slot "drv":
[1] "sqoop"

orch.dryrun

ローカル・ホストとHadoopクラスタ間で実行プラットフォームを切り替えます。ドライ・ランにRコードの変更は必要ありません。

使用方法

orch.dryrun(onoff)

引数

onoff

MapReduceプログラムをローカルで実行するにはTRUE、Hadoopクラスタでプログラムを実行するにはFALSEに設定します。

使用上の注意

orch.dryrun関数を使用すると、Hadoopクラスタで大規模データセットを使用してMapReduceプログラムを実行する前に、ラップトップで小規模データセットを使用してプログラムをローカルに実行できます。マッパーとリデューサは、HDFSからの行ストリームで連続的に実行されます。ドライ・ランにHadoopクラスタは必要ありません。

戻り値

orch.dryrunの現在の設定

関連項目

「hadoop.exec」、「hadoop.run」

例

次の例では、orch.dryrunの値をFALSEからTRUEに変更します。

R> orch.dryrun()
[1] FALSE
R> orch.dryrun(onoff<-T)
R> orch.dryrun()
[1] TRUE

orch.export

ユーザーのローカルRセッションのRオブジェクトをHadoop実行環境で利用できるようにするため、これらのオブジェクトをMapReduceジョブで参照できます。

使用方法

orch.export(...)

引数

. . .

名前または明示的な定義による、カンマ区切りリストの1つ以上の変数、データ・フレームまたはその他のメモリー内オブジェクト。

使用上の注意

この関数を使用すると、hadoop.exec関数とhadoop.run関数で使用するローカル変数を準備できます。mapper、reducer、combiner、initおよびfinalの各引数は、エクスポートされた変数を参照できます。

戻り値

リスト・オブジェクト

関連項目

「hadoop.exec」、「hadoop.run」

例

次のコード・フラグメントは、hadoop.run関数のexport引数で使用されるorch.exportを示しています。

hadoop.run(x,
export = orch.export(a=1, b=2),
mapper = function(k,v) {
x <- a + b
orch.keyval(key=NULL, val=x)
}
)

次に、同様のコード・フラグメントを示します。ただし、変数がhadoop.run関数の外部で定義される点を除きます。

a=1
b=2
hadoop.run(x,
export = orch.export(a, b),
.
.
.
)

orch.keyval

MapReduceジョブのキーと値のペアを出力します。

使用方法

orch.keyval(
key,
value)

引数

key

スカラー値。

value

スカラー、リスト、データ・フレームまたはベクトルなどのデータ構造。

使用上の注意

この関数は、hadoop.execおよびhadoop.runの引数mapper、reducerまたはcombinerでのみ使用できます。orch.keyval関数はORCHクライアントのAPIで公開されないため、他のどこからも呼び出すことができません。

戻り値

(key, value)構造

関連項目

「orch.pack」

例

次のコード・フラグメントでは、orch.keyvalを使用してマッパー関数を作成します。

hadoop.run(data,
mapper = function(k,v) {
orch.keyval(k,v)
})

orch.keyvals

MapReduceジョブのキーと値の一連のペアを出力します。

使用方法

orch.keyvals(
key,
value)

引数

key

スカラー値。

value

スカラー、リスト、データ・フレームまたはベクトルなどのデータ構造。

使用上の注意

この関数は、hadoop.execおよびhadoop.runの引数mapper、reducerまたはcombinerでのみ使用できます。orch.keyvals関数はORCHクライアントのAPIで公開されないため、他のどこからも呼び出すことができません。

関連項目

「orch.keyval」、「orch.pack」

戻り値

(key, value)構造

例

次のコード・フラグメントでは、orch.keyvalを使用してマッパー関数を作成し、orch.keyvalsを使用してリデューサ関数を作成します。

hadoop.run(data,
mapper(k,v) {
if (v$value > 10) {
orch.keyval(k, v)
}
else {
NULL
}
},
reducer(k,vals) {
orch.keyvals(k,vals)
}
)

次のコード・フラグメントは、前述の例のorch.keyvalsと同じリデュース操作を実行する、forループ内のorch.keyvalを示しています。

reducer(k,vals) {
out <- list()
for (v in vals) {
out <- list(out, orch.keyval(k,vals))
}
out
}

orch.pack

マッパーまたはリデューサがキーと値のペアの値として記述する必要がある、1つ以上のメモリー内Rオブジェクトを圧縮します。

使用方法

orch.pack(...)

引数

. . .

カンマ区切りリストの1つ以上の変数、データ・フレームまたは他のメモリー内オブジェクト。

使用上の注意

スカラー以外のオブジェクトや複雑なRオブジェクト(データ・フレームやRクラスなど)を渡す場合、マッパー関数とリデューサ関数間でこの関数を使用する必要があります。スカラーやその他の簡単なオブジェクトでは使用する必要はありません。orch.packを使用して、出力値ごとにデータ形式、データセットおよび変数名を変更できます。

orch.packは、HDFSへの結果データセットの格納にも使用する必要があります。圧縮されたデータセットは、HDFSファイルに格納されても破損しません。

orch.pack関数の後に必ずorch.unpack関数を使用して、データを使用可能な形式にリストアする必要があります。

戻り値

特殊文字を使用しない、長い文字列の圧縮された文字列型データ

関連項目

「hadoop.exec」、「hadoop.run」、「orch.keyval」、「orch.unpack」

例

次のコード・フラグメントでは、orch.packを使用していくつかのRオブジェクトの内容をシリアライズされたストリームに圧縮してから、orch.keyvalを使用してキーと値のペアを作成します。

orch.keyval(NULL, orch.pack(
r = r,
qy = qy,
yy = yy,
nRows = nRows))

orch.reconnect

orch.disconnectで以前に返された資格証明を使用してOracle Databaseに再接続します。

注意:
orch.reconnect関数は、リリース1.1で非推奨になったため、リリース2.0ではサポートされません。orch.connectを使用して、orch.dbconで返される接続オブジェクトで再接続します。

使用方法

orch.reconnect(dbcon)

引数

dbcon

orch.disconnectで以前に返された資格証明。

使用上の注意

Oracle R Connector for Hadoopでは、すべての資格証明と接続属性を保持し、以前に切断されたセッションへの再接続を可能にします。元の接続のorch.connectセキュリティ設定によっては、パスワードを求められる場合があります。再接続後、Oracle DatabaseとHDFSとの間のデータ転送操作を続けることができます。

再接続では様々な接続性チェックが必要ないため、セッションの再接続は、新規の接続を開くより高速です。

戻り値

接続の再確立が成功して確認された場合はTRUE。接続の試行に失敗した場合はFALSE。

関連項目

「orch.connect」

例

R> orch.reconnect(oid)
Connecting ORCH to RDBMS via [sqoop]
Host: localhost
Port: 1521
SID:  orcl
User: RQUSER
Enter password for [RQUSER]: password
Connected
[1] TRUE

orch.temp.path

一時データが格納されるパスを設定します。

使用方法

orch.temp.path(path)

引数

path

既存のHDFSディレクトリのフル・パス。

戻り値

現在の一時パス

例

次の例では、現在の一時ディレクトリとして/tmpを返します。

R> orch.temp.path()
[1] "/tmp"

orch.unpack

前述のorch.packの呼出しで圧縮されたRオブジェクトをリストアします。

使用方法

orch.unpack(...)

引数

. . .

圧縮されたオブジェクトの名前。

使用上の注意

この関数は、通常、マッパー関数またはリデューサ関数の先頭で使用され、入力を取得して準備します。ただし、MapReduceジョブの結果を展開する場合にRコンソールなどの外部でも使用できます。

次のデータ・フローについて考えます。

ORCHクライアントからマッパー、コンバイナ、リデューサ、ORCHクライアントへのデータ・フロー。

あるステージでデータが圧縮される場合、そのデータは次のステージで展開される必要があります。

戻り値

非圧縮リスト型データ。このデータには任意の数と任意のタイプの変数を含めることができます。

関連項目

「orch.pack」

例

次のコード・フラグメントでは、orch.packの例で圧縮されたデータをリストアします。

reducer = function(key, vals) {
x    <-orch.unpack(vals[[1]])
r    <-x$qy
yy   <- x$yy
nRow <- x$nRows
.
.
.
}

orch.version

ORCHパッケージのバージョンを識別します。

使用方法

orch.version()

戻り値

ORCHパッケージのバージョン番号

例

次の例は、ORCHバージョン番号が2.0であることを示しています。

R> orch.version()
[1] "2.0"

索引

A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X

A

アクセス・ドライバ

「ドライバ」を参照

アクセス権限, Oracle Database, 1.4.4 ODIのadditional_path.txtファイル, 4.2.2 Hiveの集計関数, 5.3.1 ALTER SESSIONコマンド, 2.8 Apache Hadoopディストリビューション, 1.2.2, 1.4.1, 1.4.1, 1.5.1, 1.5.1, 1.7.1.1, 3.3.2 Apacheライセンス, 3.11.1, 3.11.2, 3.11.3, 3.11.4 ORCHのAPI, 5.1 APPENDヒント, 2.8 as.ore.*関数, 5.3.1 Avroライセンス, 3.11.2

B

bagged.clust.Rデモ, 5.7.1

Oracle Loader for Hadoopのロード・バランシング, 3.5

bashrc構成ファイル, 1.7.1.1

bitops Rパッケージ, 6.2.7, 6.2.7

C

cdコマンド

RからのHDFSでの実行, 6.2.7

CDH3ディストリビューション, 1.5.1 Hiveの文字メソッド, 5.3.2 CKM Hive, 4.1.2, 4.5.2.2 クライアント・ライブラリ, 1.5.2 クライアント

Hadoopの構成, 1.4.2, 1.7.3.2

コンバイナ

Rでのキーと値のペアの生成, 6.2.7, 6.2.7

Rからの実行, 6.2.7, 6.2.7

Rでの圧縮, 6.2.7 構成設定

Hadoopクライアント, 1.4.2, 1.7.3.2

Oracle Data Integratorエージェント, 4.2.3

Oracle Data Integratorインタフェース, 4.5

Oracle Data Integrator Studio, 4.2.4

Oracle Loader for Hadoop, 3.5.5

R MapReduceジョブ, 5.6

Sqoopユーティリティ, 1.7.1.2

Hadoopクライアントの構成, 1.4.2, 1.7.3.2 RからのOracle Databaseへの接続, 6.2.1 接続オブジェクト

Oracle Databaseへの再接続, 6.2.7

ORCHでの変換関数, 5.3.1 データのコピー

Rを使用してOracle DatabaseからHDFS, 6.2.7, 6.2.7

Rを使用してHDFSからOracle Database, 6.2.7

HDFSからRデータ・フレーム, 6.2.7

Rを使用してローカル・ファイルからHDFS, 6.2.7

ファイルのコピー

Rを使用してHDFSからLinux, 6.2.7

cpコマンド

RからのHDFSでの実行, 6.2.7

CREATE SESSION権限, 1.4.4 CREATE TABLE権限, 1.4.4 CREATE_TARG_TABLEオプション, 4.5.1, 4.5.2.1, 4.5.2.3, 4.5.3 CSVファイル, 3.1, 3.3.3, 3.6.2, 6.2.7

D

Rでのデータ圧縮, 6.2.7

Rでのデータ解凍, 6.2.7

データ・ファイル

Rからのアクセス, 6.2.7

Rを使用したデータベース・オブジェクトのコピー, 6.2.7

Rを使用したOracle Databaseへのコピー, 6.2.7

Rを使用したHDFSからの削除, 6.2.7

Rからのサイズの取得, 6.2.7

Rからのサンプリング, 6.2.7

ローカルのアップロード, 6.2.7

「ファイル」、「HDFSファイル」も参照

データ・フレーム

HDFSデータのコピー, 6.2.7

マッパー出力形式の例, 6.2.7

プログラムの例, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2

Oracle R Enterprise, 6.2.7

マッパーへの入力, 6.2.7

データの完全性のチェック, 4.5.2.2 データ・ポンプ・ファイル, 2.2

生成, 3.3.4

データ・ポンプ形式, 3.1 データソース

Oracle Data Integratorへの定義, 4.2.1

データ変換, 4.5.2.3 データ型

Oracle Loader for Hadoop, 3.8.1

Oracle Data Integratorでのデータ検証, 4.1.2, 4.5.2.3 データベース

Rを使用したデータのコピー, 6.2.7

データベース・クライアントのインストール, 4.2.3 データベース接続

Rを使用した切断, 6.2.7

Rからの接続, 6.2.7, 6.2.7, 6.2.7

Rからの問合せ, 6.2.7

Rからの再接続, 6.2.7

データベース・ディレクトリ

Oracle SQL Connector for HDFS, 1.4.3

データベース・オブジェクト

Rを使用したHDFSへのコピー, 6.2.7

データベース・パッチ, 1.4.1, 1.5.1, 1.5.1, 2.2 データベース権限, 1.4.4 データベース・システム, MapReduceジョブを実行するための構成, 1.4.2 データ・サーバー・オブジェクト

Oracle Data Integratorへの作成, 4.2.1

Rでのデバッグ

最後のエラーの表示, 6.2.7

バージョンの識別, 6.2.7

出力のリダイレクト, 6.2.7

無効化, 6.2.7

有効化, 6.2.7

Rでの解凍, 6.2.7 DEFER_TARGET_LOADオプション, 4.5.1 DELETE_ALLオプション, 4.5.3 DELETE_TEMPORARY_OBJECTSオプション, 4.5.1, 4.5.2.1, 4.5.2.3, 4.5.3 デリミタ付きテキスト・ファイル形式

Oracle Loader for Hadoop, 3.3.3

DelimitedTextInputFormatクラス, 3.2.1.2, 3.6.1

Oracle Loader for Hadoop, 3.2.1.2, 3.2.1.2

DelimitedTextOutputFormatクラス, 3.6.1, 3.6.2 ORCHのデモ・コード, 5.7.1 describeコマンド

Rを使用したHDFSでの実行, 6.2.7

dfs.idオブジェクト

Rでの取得, 6.2.7

ディレクトリ

Oracle Data Integratorからのアクセスが可能, 4.2.1

Rを使用したHDFSでの作成, 6.2.7

現在のHDFS, 6.2.7

Oracle Loader for Hadoop出力, 4.5.3

Hadoopホーム, 1.4.2

HDFSでのリスト, 6.2.7

ODI Application Adapter for Hadoopホーム, 1.6.3

Oracle SQL Connector for HDFSホーム, 1.4.3

Rコネクタの例, 5.7.2

Rを使用した削除, 6.2.7

Sqoopホーム, 1.7.1.2

「データベース・ディレクトリ」、「rootディレクトリ」も参照

disable_directory_link_checkアクセス・パラメータ, 2.4.2 ソフトウェアのダウンロード, 1.3, 1.4.1, 1.6.1, 1.7.1.1, 1.7.1.2, 1.7.1.4, 1.7.3.4 ドライバ

JDBC, 1.7.1.2, 3.3.1, 4.2.2

Oracle Data Integratorエージェント, 4.2.3

ORACLE_DATAPUMP, 3.1, 3.3.4, 3.3.4

ORACLE_LOADER, 2.2, 2.2, 3.1

DROP_ERROR_TABLEオプション, 4.5.2.2 Rでのドライ・ランの実行, 6.2.7

E

Something is terribly wrong...エラー, 1.7.1.1

ORCHのコード例

説明, 5.7.2

Rでのexists関数, 6.2.7 HadoopへのRオブジェクトのエクスポート, 6.2.7 EXT_TAB_DIR_LOCATIONオプション, 4.5.3 外部表

概要, 2.2

EXTERNAL VARIABLE DATAアクセス・パラメータ, 2.4.2 EXTERNAL_TABLEオプション, 4.5.1 ExternalTableコマンド

パス設定, 2.3.2

構文, 2.3.3

EXTRA_OLH_CONF_PROPERTIESオプション, 4.5.3

F

Oracle Data Integratorのファイル形式, 4.5.1

ファイル識別子

Rでの検証, 6.2.7

Rでのファイル・サンプリング, 6.2.7, 6.2.7 ファイル・サイズ

Rを使用した取得, 6.2.7

ファイル・ソース

Oracle Data Integratorへの定義, 4.2.1

File to Hive KM, 4.1.2, 4.5.1 FILE_IS_LOCALオプション, 4.5.1 File-Hive to Oracle (OLH) KM, 4.1.2, 4.5.3 ファイル

HDFSからのダウンロード, 6.2.7

Rを使用したHDFSメタデータの取得, 6.2.7

RからのHDFSでの存在のテスト, 6.2.7

ローカルからHDFSへのアップロード, 6.2.7

「データ・ファイル」、「HDFSファイル」も参照

filter1.Rの例, 5.7.2 filter2.Rの例, 5.7.2 filter3.Rの例, 5.7.2 フレックスフィールド, 4.2.2, 4.4.2 FLOW_CONTROLオプション, 4.5.2.1 FLOW_TABLE_OPTIONSオプション, 4.5.3 Hiveのフレーム・メソッド, 5.3.2

G

group.apply.Rの例, 5.7.2

H

Hadoopクライアント

構成, 1.4.2, 1.7.3.2

インストール, 1.4.2

hadoop fsコマンド, 1.4.2 HADOOP_CLASSPATH

Oracle Data Integrator, 4.2.3, 4.2.3

Oracle Loader for Hadoop, 1.5.2

HADOOP_CLASSPATH環境変数

Oracle SQL Connector for HDFS, 2.3.2

HADOOP_HOME

Oracle Data Integrator, 4.2.3

Oracle SQL Connector for HDFS, 1.4.2

HADOOP_HOME環境変数, 1.7.1.1 HADOOP_LIBEXEC_DIR環境変数, 1.7.1.1 hadoop.exec関数, 5.6

config引数, 5.6

例, 5.7.1, 5.7.1, 5.7.2, 5.7.2, 6.2.7

構文の説明, 6.2.7

hadoop.run関数, 5.6

config引数, 5.6

例, 5.7.1, 5.7.1, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 6.2.7

構文の説明, 6.2.7

HDFSクライアント

「Hadoopクライアント」を参照

HDFSコマンド

Rからの発行, 6.2.3

HDFSデータ

Rでのコピー, 6.2.2

HDFSディレクトリ

Rを使用したrootの取得, 6.2.7

Rでの変更, 6.2.7

Rを使用したrootの変更, 6.2.7

dfs.idオブジェクトの作成, 6.2.7

Rでの作成, 6.2.7

Rを使用した削除, 6.2.7, 6.2.7

Rでの現在の識別, 6.2.7

Rでのリスト, 6.2.7

HDFSファイル識別子

Rでの取得, 6.2.7

Rでの検証, 6.2.7

HDFSファイル名

Rでのdfs.idオブジェクトへの変換, 6.2.7

HDFSファイル

Rからのアクセス, 6.2.7

Oracle Databaseからのデータのコピー, 6.2.7

Rを使用したデータベースからのデータのコピー, 6.2.7

Oracle Databaseへのデータのコピー, 6.2.7

Rへのデータのコピー, 6.2.7

Rを使用したデータベース・オブジェクトからのコピー, 6.2.7

Hiveへのコピー, 4.5.1

Rを使用したOracle Databaseへのコピー, 6.2.7

Rを使用したコピー, 6.2.7

Rを使用した削除, 6.2.7

ローカル・システムへのダウンロード, 6.2.7

Oracle Databaseへのデータのロード, 3.2.1

Rからの移動, 6.2.7

部分の数, 6.2.7

Rからのサイズの取得, 6.2.7

Oracle R Connector for Hadoopの制限, 5.2

Rからのサンプリング, 6.2.7

RからのHDFSでの存在のテスト, 6.2.7

ローカルのアップロード, 6.2.7

HDFSメタデータ

Rを使用した取得, 6.2.7

HDFSパス

Rでの変更, 6.2.7

HDFSのrootディレクトリ

Rからの変更, 6.2.7

Rを使用した取得, 6.2.7

hdfs_datatrans Rデモ, 5.7.1 hdfs_dir Rデモ, 5.7.1 hdfs_putget Rデモ, 5.7.1 hdfs_stream Bashシェル・スクリプト, 1.4.3 hdfs.attach関数

例, 5.7.1, 6.2.7, 6.2.7, 6.2.7

構文の説明, 6.2.7

hdfs.cd関数

例, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1

構文の説明, 6.2.7

hdfs.cp関数

例, 5.7.1

構文の説明, 6.2.7

hdfs.cpmv Rデモ, 5.7.1 hdfs.describe関数

例, 5.7.1, 5.7.1

構文の例, 6.2.7

hdfs.download関数

例, 5.7.1, 5.7.1, 5.7.2, 5.7.2, 5.7.2

構文の説明, 6.2.7

hdfs.exists関数

例, 5.7.1, 5.7.1, 5.7.1, 5.7.2, 5.7.2

構文の説明, 6.2.7

hdfs.get関数

例, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2

構文の説明, 6.2.7

hdfs.head関数

構文の説明, 6.2.7

hdfs.id関数

例, 5.7.1, 5.7.2, 5.7.2

構文の説明, 6.2.7

hdfs.ls関数

例, 5.7.1, 5.7.1

構文の説明, 6.2.7

hdfs.mkdir関数

例, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.2, 5.7.2

構文の説明, 6.2.7

hdfs.mv関数

例, 5.7.1

構文の説明, 6.2.7

hdfs.parts関数

構文の説明, 6.2.7

hdfs.pull関数

例, 5.7.1

構文の説明, 6.2.7

hdfs.push関数

構文の説明, 6.2.7

hdfs.put関数

例, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2

構文の説明, 6.2.7

hdfs.pwd関数

例, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1

構文の説明, 6.2.7

hdfs.rm関数

例, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1

構文の例, 6.2.7

hdfs.rmdir関数

例, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.2, 5.7.2

構文の説明, 6.2.7

hdfs.root関数

例, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1

構文の説明, 6.2.7

hdfs.sample関数

例, 5.7.1, 5.7.1

構文の説明, 6.2.7

hdfs.setroot関数

例, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1, 5.7.1

構文の説明, 6.2.7

hdfs.size関数

例, 5.7.1

構文の説明, 6.2.7

hdfs.tail関数

構文の説明, 6.2.7

hdfs.upload関数

例, 5.7.1, 5.7.1, 5.7.2, 5.7.2, 5.7.2

構文の説明, 6.2.7

問合せの最適化のヒント, 2.8 RからのHiveへのアクセス, 5.3 Hiveアプリケーション・アダプタ, 4.1.2, 4.5.2.2 Hive Control Append KM, 4.1.2, 4.5.2.1 Oracle Data IntegratorのHiveデータソース, 4.2.2 Hiveデータ型, サポート, 5.3.3 Oracle Loader for HadoopのHiveデータベース, 1.5.1 Hiveディストリビューション, 1.5.1 Hiveフレックスフィールド, 4.4.2 Hive Query Language (HiveQL), 4.1.1 Hive表

Oracle Databaseへのデータのコピー, 3.2.1.1

(Oracle Data Integrator)へのデータのロード, 4.5.1

リバースエンジニアリング, 4.1.2, 4.4.2

Oracle Data Integratorでのリバースエンジニアリング, 4.4.2

Hive Transform KM, 4.1.2, 4.5.2.3 hive_aggregate Rデモ, 5.7.1 hive_analysis Rデモ, 5.7.1 hive_basic Rデモ, 5.7.1 hive_binning Rデモ, 5.7.1 hive_columnfns Rデモ, 5.7.1 HIVE_HOME, Oracle Data Integrator, 4.2.3 hive_nulls Rデモ, 5.7.1 hive_pushpull Rデモ, 5.7.1 hive_sequencefile Rデモ, 5.7.1 HiveToAvroInputFormatクラス, 1.5.1, 3.2.1.1

I

IKM File to Hive, 4.1.2, 4.5.1, 4.5.1

IKM File-Hive to Oracle (OLH), 4.1.2, 4.5.3

IKM Hive Control Append, 4.1.2, 4.5.2.1, 4.5.2.1, 4.5.2.3

IKM Hive Transform, 4.1.2, 4.5.2.1, 4.5.2.3

IndexedRecord, 3.2.2.1

InputFormatクラス

Oracle Loader for Hadoop, 3.2.1.2, 3.2.1.2

INSERT_UPDATEモード, 4.2.2 インストール

Apache Hadoop, 1.4.2

CDH, 1.4.2

Hadoopクライアント, 1.4.2

Oracle Data Integrator Application Adapter for Hadoop, 1.6

Oracle Loader for Hadoop, 1.5

Oracle R Connector for Hadoop, 1.7

Oracle SQL Connector for HDFS, 1.4

Sqoopユーティリティ, 1.7.1.2

Instant Clientライブラリ, 1.5.2 インタフェース構成

Oracle Data Integrator, 4.5

is.hdfs.id関数

例, 5.7.1

構文の説明, 6.2.7

is.ore.*関数, 5.3.1

J

JAVA_LIBRARY_PATH環境変数

Oracle Loader for Hadoop, 3.3.2

JDBCドライバ, 1.7.1.2, 3.3.1, 4.2.2

「ドライバ」を参照

jellyfish Rデモ, 5.7.1 ジョブ名

Rでの指定, 5.6, 6.2.7, 6.2.7, 6.2.7

K

keyval関数

「orch.keyval」を参照

キーと値のペア

Rオブジェクトからの生成, 6.2.7, 6.2.7

kmeans.Rデモ, 5.7.1 kmeans.Rの例, 5.7.2 ナレッジ・モジュール

説明, 4.1.2

CKM、IKMおよびRKMのエントリも参照

L

LD_LIBRARY_PATH環境変数

Oracle Loader for Hadoop, 3.3.2

ライセンス, サードパーティ, 3.11 線形モデルRデモ, 5.7.1 LMF jellyfish Rデモ, 5.7.1 LMF mahout ALS-WRデモ, 5.7.1 lm.Rの例, 5.7.2 ロード・バランシング

Oracle Loader for Hadoop, 3.5, 3.5.2.1

loadCI, 3.5.2.1 ローダー・マップXMLスキーマ定義, 3.9 loaderMapドキュメント, 3.2.2 Hiveへのデータ・ファイルのロード, 4.5.1 Oracle Data Integratorのロード・オプション, 4.5.1 ローカル・ファイル

Hiveへのコピー, 4.5.1

HDFSからのダウンロード, 6.2.7

LOG_FILE_NAMEオプション, 4.4.2 Hiveの論理メソッド, 5.3.2 logreg.Rの例, 5.7.2

M

mahout ALS-WRデモ, 5.7.1

map.df.Rの例, 5.7.2

map.list.Rの例, 5.7.2

マッパー

構成設定, 5.6

例, 5.7.2

Rでのキーと値のペアの生成, 6.2.7, 6.2.7

Rからの実行, 6.2.7, 6.2.7

mapred_basic Rデモ, 5.7.1 mapred_modelBuild Rデモ, 5.7.1 MAPRED_OUTPUT_BASE_DIRオプション, 4.5.3 mapred.configクラス

構文の説明, 5.6

使用方法, 6.2.7, 6.2.7, 6.2.7

MapReduce関数, 6.2.4

Rでの記述

Oracle R Connector for Hadoop, 6.2.4

MapReduceジョブ

Rでの構成, 5.6

Rオブジェクトのエクスポート, 6.2.7

Rからの実行, 6.2.7, 6.2.7

MapReduceプログラム

Rでのデータ圧縮, 6.2.7

Rでのデータ解凍, 6.2.7

Hiveの行列メソッド, 5.3.2 maxLoadFactorプロパティ, 3.5.2.1 mkdirコマンド

Rでの実行, 6.2.7

model.plot.Rの例, 5.7.2 model.prep.Rの例, 5.7.2 mvコマンド

Rからの実行, 6.2.7

N

ニューラル・ネットワークRデモ, 5.7.1

NMF Rデモ, 5.7.1

Hiveの数値メソッド, 5.3.2

O

OCIダイレクト・パス

「Oracle OCIダイレクト・パス出力形式」を参照

ODI_ADDITIONAL_CLASSPATH環境変数, 4.2.3 ODI_HIVE_SESSION_JARS, Oracle Data Integrator, 4.2.3, 4.2.3 ODI_OLH_JARS, Oracle Data Integrator, 4.2.3 OLH_HOME環境変数, 1.5.2, 4.2.3 OLH_OUTPUT_MODEオプション, 4.5.3 オペレーティング・システムのユーザー権限, 1.4.3 Oracle Data Integratorエージェント

構成, 4.2.3

ドライバ, 4.2.3

Oracle Data Integrator Application Adapter

説明, 4.1

Oracle Data Integrator Application Adapter for Hadoop

モデルの作成, 4.4.1

データソース, 4.2.1

フレックスフィールド, 4.4.2

インストール, 1.6

ロード・オプション, 4.5.1

セキュリティ, 4.1.3

プロジェクトの設定, 4.3

トポロジの設定, 4.2

Oracle Data Integrator付属CD, 1.6.3 Oracle Data Integrator Studioの構成, 4.2.4 Oracle Database

Rからの接続, 6.2.1

HDFSからのデータのコピー, 6.2.7

HDFSへのデータのコピー, 6.2.7

Rからの接続への問合せ, 6.2.7

Rからの再接続, 6.2.7

ユーザー権限, 1.4.4

ORCHからのOracle Databaseへのアクセス, 5.4 Oracle Databaseクライアントのインストール, 4.2.3 Oracle Database接続

Rからの切断, 6.2.7

Rからの接続, 6.2.7, 6.2.7, 6.2.7

Rからの再接続, 6.2.7

「Oracle Database」も参照

Oracle Instant Clientライブラリ, 1.5.2 Oracle Loader for Hadoop

説明, 3.1

入力形式, 3.2.1

インストール, 1.5

サポートされるデータベース・バージョン, 1.5.1

Oracle Data Integratorでの使用, 4.1.2, 4.2.3, 4.5.3

Oracle OCIダイレクト・パス・インタフェース, 3.6.2 Oracle OCIダイレクト・パス出力形式, 3.1, 3.3.2, 3.3.2 Oracle OCIダイレクト・パス出力形式, 3.6.1 Oracle権限, 1.4.3 Oracle R Connector for Hadoop

HDFSファイルへのアクセス, 6.2.7

関数のアルファベット順リスト, 6.1

関数のカテゴリ別リスト, 6.2

Oracle Databaseへの接続, 6.2.1

HDFSデータのコピー, 6.2.2

デバッグ関数, 6.2.5

説明, 5.1

発行されるHDFSコマンド, 6.2.3

インストール, 1.7

ORCHバージョン番号の取得, 6.2.7

Oracle Software Delivery Cloud, 1.3 Oracle SQL Connector for HDFS

データベース権限, 1.4.4

説明, 2.1

インストール, 1.4

問合せの最適化, 2.8

Oracle Technology Network

動作保証, 1.6.1

ダウンロード, 1.3, 1.7.1.2

ORACLE_DATAPUMPドライバ, 3.1, 3.3.4, 3.3.4 ORACLE_LOADERドライバ, 2.2, 2.2, 3.1 oraclepki.jarファイル, 3.2.3.1 orahdfs-version/binディレクトリ, 1.4.3 orahdfs-version.zipファイル, 1.4.3, 1.4.3 OraLoader, 3.2.4, 3.6, 3.10 oraloader-conf.xmlドキュメント, 3.10 OraLoaderMetadataユーティリティ・プログラム, 3.2.3 oraloader-versionディレクトリ, 1.5.2 oraloader-version.zipファイル, 1.5.2 ORCHパッケージ

インストール, 1.7.1.1, 1.7.1.5

バージョン番号, 6.2.7

「Oracle R Connector for Hadoop」も参照

orch_lm Rデモ, 5.7.1 orch_lmf_jellyfish Rデモ, 5.7.1 orch_lmf_mahout_als Rデモ, 5.7.1 orch_neural Rデモ, 5.7.1 orch.connect関数

構文の説明, 6.2.7

orch.connected関数

例, 5.7.1

構文の説明, 6.2.7

orch.dbcon関数

構文の説明, 6.2.7

orch.dbg.lasterr関数

構文の説明, 6.2.7

orch.dbg.off関数

構文の説明, 6.2.7

orch.dbg.on関数

構文の説明, 6.2.7

orch.dbg.output関数

構文の説明, 6.2.7

orch.dbinfo関数

構文の説明, 6.2.7

orch.disconnect関数

構文の説明, 6.2.7

orch.dryrun関数

構文の説明, 6.2.7

orch.evaluate関数, 5.5

例, 5.7.1, 5.7.1

orch.export関数

例, 5.7.1, 5.7.1, 5.7.1, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2

構文の説明, 6.2.7

orch.export.fit関数, 5.5

例, 5.7.1

orch.keyval関数

例, 5.7.1, 5.7.1, 5.7.1, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2

構文の説明, 6.2.7

orch.keyvals関数

例, 5.7.2, 5.7.2, 5.7.2, 5.7.2, 5.7.2

構文の説明, 6.2.7

orch.lm関数, 5.5

例, 5.7.1

orch.lmf関数, 5.5

例, 5.7.1, 5.7.1

orch.neural関数, 5.5

例, 5.7.1

orch.nmfデモ, 5.7.1 orch.nmf関数, 5.5 orch.nmf.NMFalgo関数, 5.5

例, 5.7.1

orch.pack関数

例, 5.7.1, 5.7.1, 5.7.1, 5.7.2, 5.7.2, 5.7.2

構文の説明, 6.2.7

orch.recommend関数, 5.5

例, 5.7.1

orch.reconnect関数

構文の説明, 6.2.7

orch.temp.path関数, 6.2.7 orch.tgzパッケージ, 1.7.1.5 orch.unpack関数

例, 5.7.1, 5.7.1, 5.7.1, 5.7.2, 5.7.2, 5.7.2

構文の説明, 6.2.7

orch.version関数

構文の説明, 6.2.7

orch.which関数

「orch.dbcon関数」を参照

HiveのORE関数, 5.3.1 Hiveのore関数, 5.3.1 ore.attach関数

例, 5.7.1, 5.7.1, 5.7.1

ore.connect関数

例, 5.7.1, 5.7.1, 5.7.1

ore.create関数, 5.3.4

例, 5.7.1

ore.drop関数

例, 5.7.1, 5.7.1

ore.exec関数, 5.3.4

例, 5.7.1

ore.frameオブジェクト, 6.2.7, 6.2.7

「データ・フレーム」を参照

ore.is.connected関数

例, 5.7.1

ore.pull関数

例, 5.7.1

ore.push関数

例, 5.7.1

ore.sync関数

例, 5.7.1

ore.warn.orderオプション, 5.3.4 OSCH_BIN_PATHディレクトリ, 1.4.4 OVERRIDE_INPUTFORMATオプション, 4.5.3 OVERRIDE_ROW_FORMATオプション, 4.5.1

P

並列処理, 1.2.1, 2.8, 5.6, 5.6, 5.7.2, 6.2.7

パーティション化, 3.1, 3.8.2

パス, Rでの変更, 6.2.7

POST_TRANSFORM_DISTRIBUTEオプション, 4.5.2.3

POST_TRANSFORM_SORTオプション, 4.5.2.3

PQ_DISTRIBUTEヒント, 2.8

PRE_TRANSFORM_DISTRIBUTEオプション, 4.5.2.3

PRE_TRANSFORM_SORTオプション, 4.5.2.3

predict.orch.lm関数, 5.5

例, 5.7.1

プリプロセッサのアクセス・パラメータ, 2.4.2 print.orch.lm関数, 5.5 print.summary.orch.lm関数, 5.5 権限, Oracle Database, 1.4.4 プログラムの実行, Rでのローカル・ドライ・ラン, 6.2.7 プロジェクト

Oracle Data Integratorでの設定, 4.3

pwdコマンド

Rからの実行, 6.2.7

Q

Oracle SQL Connector for HDFSの問合せの最適化, 2.8

R

Rコネクタ

「Oracle R Connector for Hadoop」を参照

Rディストリビューション, 1.7.1.4, 1.7.3.4 Rディストリビューション, 1.7.1.1, 1.7.3.1 R関数

アルファベット順のリスト, 6.1

カテゴリ別のリスト, 6.2

「Oracle R Connector for Hadoop」も参照

HiveのR関数, 5.3.2 Rパッケージ

bitops, 6.2.7

Rプログラム

ローカルの実行, 6.2.7

ランダム順のメッセージ, 5.3.4 RECYCLE_ERRORSオプション, 4.5.2.1 リデューサ

構成設定, 5.6

例, 5.7.2

Rでのキーと値のペアの生成, 6.2.7, 6.2.7

Rからの実行, 6.2.7, 6.2.7

Hiveでのリバースエンジニアリング, 4.1.2, 4.4.2 Hive表のリバースエンジニアリング, 4.4.2 reverse.logファイル, 4.4.2 RKM Hive, 4.1.2, 4.4.2 rlm.Rの例, 5.7.2 rmコマンド

Rからの発行, 6.2.7

rmdirコマンド

Rからの発行, 6.2.7

rootディレクトリ

Rからの変更, 6.2.7

Rを使用した取得, 6.2.7

S

データのサンプリング

Oracle Loader for Hadoop, 3.5.1

HDFSファイルのサンプリング, 6.2.7, 6.2.7 スクリプト

Rでのデバッグ, 6.2.5

スニペット, 4.1.1

SerDes JARファイル, 4.2.3, 4.2.3 Oracle Data Integratorのスニペット, 4.1.1 ソフトウェアのダウンロード, 1.3, 1.4.1, 1.6.1, 1.7.1.1, 1.7.1.2, 1.7.1.4, 1.7.3.4 Something is terribly wrong with Hadoop MapReduceメッセージ, 1.7.1.1 split.map.Rの例, 5.7.2 split.reduce.Rの例, 5.7.2 SQL*Loader, 3.2.5.1 SQL*Loaderユーティリティ, 3.1 Sqoop, 5.4.1 Sqoopユーティリティ

Hadoopクライアントへのインストール, 1.7.3.3

Hadoopクラスタへのインストール, 1.7.1.2

STATIC_CONTROLオプション, 4.5.2.1 STOP_ON_FILE_NOT_FOUNDオプション, 4.5.1 summary.orch.lm関数, 5.5 sum.Rの例, 5.7.2

T

表

HDFSからのデータのコピー, 3.1

HDFSからOracle Databaseへのデータのコピー, 6.2.7

Oracle DatabaseからHDFSへのデータのコピー, 6.2.7

Oracle Databaseへのデータのロード, 3.2.2

「Hive表」も参照

TEMP_DIRオプション, 4.5.3 Rの一時HDFSパス, 6.2.7 teragen2.xy.Rの例, 5.7.2 teragen.matrix.Rの例, 5.7.2 teragen.xy.Rの例, 5.7.2 terasort.Rの例, 5.7.2 Rでの関数のテスト, 5.3.1 サードパーティ・ライセンス, 3.11 TRANSFORM_SCRIPTオプション, 4.5.2.3 TRANSFORM_SCRIPT_NAMEオプション, 4.5.2.3 データの変換

Oracle Data Integrator, 4.1, 4.5.2.1

TRUNCATEオプション, 4.5.1, 4.5.2.1, 4.5.3

U

USE_HIVE_STAGING_TABLEオプション, 4.5.3

USE_LOGオプション, 4.4.2

USE_ORACLE_STAGING_TABLEオプション, 4.5.3

USE_STAGING_TABLEオプション, 4.5.1

userlibディレクトリ, 4.2.4

UTL_FILEパッケージ, 1.4.4

V

データの検証

Oracle Data Integrator, 4.1, 4.1.2, 4.5.2.1

Hiveのベクトル・メソッド, 5.3.2

W

ワイルドカード文字

リソース名, 4.5.1

ODIでのデータソースの設定, 4.2.1

IKM File To Hive (Load Data)でのサポート, 4.1.2

Oracle Loader for Hadoopでの入力制限のための使用, 3.2.1.1

X

Oracle Loader for HadoopのXMLスキーマ定義, 3.9

xml-referenceディレクトリ, 1.6.3, 4.2.2

Copyright © 2011, 2013, Oracle and/or its affiliates. All rights reserved.