Oracle® Big Data SQL

ユーザーズ・ガイド

リリース3 (3.0)

E72451-01(原本部品番号:E71333-01)

2016年2月

管理者およびソフトウェア開発者が入手できるOracle Big Data SQLソフトウェアを説明します。

Oracle Big Data SQLユーザーズ・ガイド, リリース3 (3.0)

E72451-01

Copyright © 2012, 2016, 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の登録商標です。

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

目次

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

はじめに

- 対象読者

- 関連ドキュメント

- 表記規則

- バッカス・ナウア記法の構文

Oracle Big Data SQLのこのリリースでの変更点

1 Oracle Big Data SQLの概要

- 1.1 Oracle Big Data SQLとは

- 1.1.1 Oracle外部表について

- 1.1.2 述語のプッシュダウンについて

- 1.1.3 Oracle Big Data SQLのアクセス・ドライバについて

- 1.1.4 Smart Scanテクノロジについて

- 1.1.5 ストレージ索引について

2 Oracle Big Data SQLのインストール

- 2.1 Oracle Big Data ApplianceおよびOracle Exadata Database Machineでのインストール

- 2.1.1 Oracle Big Data ApplianceでOracle Big Data SQLを使用するための前提条件

- 2.1.2 インストールの実行

- 2.1.3 Oracle Big Data SQLのインストール後スクリプトの実行

- 2.1.3.1 bds-exa-installスクリプトの実行

- 2.1.3.2 bds-exa-install構文

- 2.1.3.3 bds-exa-installスクリプトの実行のトラブルシューティング

- 2.1.4 Oracle Big Data SQLを使用したデータ・セキュリティについて

- 2.1.5 Kerberos化されたクラスタへのOracle Big Data SQLアクセスの有効化

- 2.1.6 Big Data SQLエージェントの起動および停止

- 2.2 他のHadoopシステムでのOracle Big Data SQLのインストール

- 2.2.1 Oracle Big Data SQLのダウンロード

- 2.2.2 HDPクラスタをインストールするための前提条件

- 2.2.3 CDHクラスタをインストールするための前提条件

- 2.2.4 インストールの概要

- 2.2.5 Hadoopクラスタ管理サーバーでのインストール

- 2.2.5.1 HDP専用の手動インストール手順

- 2.2.6 データベース側のインストール・バンドルの作成

- 2.2.7 Oracle Databaseサーバーでのインストール

- 2.2.8 Oracle Big Data SQLの削除

3 データ・アクセスのためのOracle Big Data SQLの使用

- 3.1 HiveデータのOracle外部表の作成

- 3.1.1 Hive表に関する情報の取得

- 3.1.2 CREATE_EXTDDL_FOR_HIVE関数の使用

- 3.1.3 ORACLE_HIVEのCREATE TABLE文の作成

- 3.1.3.1 ORACLE_HIVEのデフォルト設定の使用

- 3.1.3.2 ORACLE_HIVEのデフォルト設定の上書き

- 3.2 Oracle NoSQL DatabaseのOracle外部表の作成

- 3.2.1 Oracle NoSQL DatabaseのHive外部表の作成

- 3.2.2 Oracle NoSQLデータのOracle Database表の作成

- 3.2.3 列データ型マッピングについて

- 3.2.4 Oracle NoSQL Databaseのデータのアクセス例

- 3.2.4.1 Oracle NoSQL Database表の例の作成

- 3.2.4.2 vehicleTableのHive表の例の作成

- 3.2.4.3 VEHICLESのOracle表の作成

- 3.3 Apache HBaseのOracle外部表の作成

- 3.3.1 HBaseのHive外部表の作成

- 3.3.2 HBaseのOracle Database表の作成

- 3.4 HDFSファイルのOracle外部表の作成

- 3.4.1 デフォルトのアクセス・パラメータとORACLE_HDFSの使用

- 3.4.2 ORACLE_HDFSのデフォルト設定の上書き

- 3.4.2.1 デリミタ付きテキスト・ファイルへのアクセス

- 3.4.2.2 Avroコンテナ・ファイルへのアクセス

- 3.5 SQL CREATE TABLE文について

- 3.5.1 基本的な構文

- 3.5.2 外部表の句について

- 3.5.2.1 TYPE句

- 3.5.2.2 DEFAULT DIRECTORY句

- 3.5.2.3 LOCATION句

- 3.5.2.4 ORACLE_HDFS LOCATION句

- 3.5.2.5 ORACLE_HIVE LOCATION句

- 3.5.2.6 REJECT LIMIT句

- 3.5.2.7 ACCESS PARAMETERS句

- 3.6 データ型変換について

- 3.7 外部表の問合せ

- 3.7.1 ユーザー・アクセス権の付与

- 3.7.2 エラー処理の概要

- 3.7.3 ログ・ファイルについて

- 3.8 データベース・サーバー(Oracle Exadata Machineなど)上のOracle Big Data SQLについて

- 3.8.1 共通ディレクトリについて

- 3.8.2 一般的な構成プロパティ

- 3.8.2.1 bigdata.properties

- 3.8.2.2 bigdata-log4j.properties

- 3.8.3 クラスタ・ディレクトリについて

- 3.8.4 権限について

4 HadoopへのOracle表のコピー

- 4.1 Copy to Hadoopとは

- 4.2 Copy to Hadoopの使用の概要

- 4.3 Copy to Hadoopのインストール

- 4.3.1 Copy to Hadoopの前提条件

- 4.3.2 Oracle Big Data Appliance/Oracle Exadata Database Machine環境でのCopy to Hadoopのインストール

- 4.3.2.1 Oracle Big Data ApplianceでのCopy to Hadoopのインストール

- 4.3.2.2 Oracle Exadata Database MachineでのCopy to Hadoopのインストール

- 4.3.3 他のシステムでのCopy to Hadoopのインストール

- 4.3.3.1 Hadoopクラスタ(Oracle Big Data Database Applianceクラスタ以外)でのCopy to Hadoopのインストール

- 4.3.3.2 Oracle Databaseサーバー(Oracle Exadata Database Machine以外)でのCopy to Hadoopのインストール

- 4.4 データ・ポンプ・ファイルの生成

- 4.4.1 データ・ポンプ形式ファイルについて

- 4.4.2 ターゲット・ディレクトリの識別

- 4.4.3 CREATE TABLE構文について

- 4.4.4 HDFSへのファイルのコピー

- 4.5 Hive表の作成

- 4.5.1 Hive外部表について

- 4.5.2 列マッピングの概要

- 4.5.3 データ型変換について

- 4.6 サンプル・スキーマの使用例

- 4.6.1 サンプル・データについて

- 4.6.2 EXPDIR Databaseディレクトリの作成

- 4.6.3 顧客データのデータ・ポンプ形式ファイルの作成

- 4.6.3.1 簡単なSELECT文を使用したCREATE TABLEの例

- 4.6.3.2 さらに複雑なSQL SELECT文を使用したCREATE TABLEの例

- 4.6.4 データ・ファイルの内容の確認

- 4.6.5 Hadoopへのファイルのコピー

- 4.6.6 Hive外部表の作成

- 4.6.7 Hiveのデータの問合せ

5 Oracle Big Data SQLリファレンス

- 5.1 DBMS_HADOOP PL/SQLパッケージ

- 5.1.1 CREATE_EXTDDL_FOR_HIVE

- 5.1.1.1 例

- 5.2 CREATE TABLE ACCESS PARAMETERS句

- 5.2.1 プロパティを指定するための構文ルール

- 5.2.2 ORACLE_HDFSアクセス・パラメータ

- 5.2.2.1 ORACLE_HDFSのデフォルトのパラメータ設定

- 5.2.2.2 ORACLE_HDFSのオプションのパラメータ設定

- 5.2.3 ORACLE_HIVEアクセス・パラメータ

- 5.2.3.1 ORACLE_HIVEのデフォルトのパラメータ設定

- 5.2.3.2 ORACLE_HIVEのオプションのパラメータ値

- 5.2.4 com.oracle.bigdata.colmap

- 5.2.5 com.oracle.bigdata.datamode

- 5.2.6 com.oracle.bigdata.erroropt

- 5.2.7 com.oracle.bigdata.fields

- 5.2.8 com.oracle.bigdata.fileformat

- 5.2.9 com.oracle.bigdata.log.exec

- 5.2.10 com.oracle.bigdata.log.qc

- 5.2.11 com.oracle.bigdata.overflow

- 5.2.12 com.oracle.bigdata.rowformat

- 5.2.13 com.oracle.bigdata.tablename

- 5.3 Hiveの静的データ・ディクショナリ・ビュー

- 5.3.1 ALL_HIVE_DATABASES

- 5.3.2 ALL_HIVE_TABLES

- 5.3.3 ALL_HIVE_COLUMNS

- 5.3.4 DBA_HIVE_DATABASES

- 5.3.5 DBA_HIVE_TABLES

- 5.3.6 DBA_HIVE_COLUMNS

- 5.3.7 USER_HIVE_DATABASES

- 5.3.8 USER_HIVE_TABLES

- 5.3.9 USER_HIVE_COLUMNS

付録

A ライセンス情報

- A.1 Oracle Big Data SQL

索引

はじめに

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

対象読者

このガイドは、次に示すようにOracle Big Data SQLをインストールおよび使用する人を対象としています。

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

- データ・アナリスト

- データ科学者

- データベース管理者

- システム管理者

『Oracle Big Data SQLユーザーズ・ガイド』では、Oracle Big Data SQL製品のインストール方法と使用方法について説明します。このマニュアルでは、手順を正しく行うために、読者がデータベース・サーバーおよびこのソフトウェアをホストする特定のHadoopプラットフォームに関する十分な知識を備えていることを前提としています。

関連ドキュメント

Oracle Big Data SQLをOracle Big Data Applianceにインストールするユーザーは、Oracle Big Dataソリューション、とりわけOracle Big Data ApplianceについてOracle Help Centerでさらに情報を得ることができます

次のドキュメントをお薦めします。

- 『Oracle Big Data Applianceオーナーズ・ガイド』

- 『Oracle Big Data Applianceソフトウェア・ユーザーズ・ガイド』

- 『Oracle Big Data Connectorsユーザーズ・ガイド』

Oracle Big Data SQLをHortonworks HDPにインストールするユーザーは、補足情報を得るためにHortonworksのドキュメント・サイト(http://docs.hortonworks.com/index.html)を参照することをお薦めします

表記規則

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

規則

意味

太字

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

イタリック

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

固定幅フォント

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

#プロンプト

ナンバー記号(#)プロンプトは、Linux rootユーザーとして実行されるコマンドを示します。

バッカス・ナウア記法の構文

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

記号または表記規則

説明

[ ]

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

{ }

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

|

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

...

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

デリミタ

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

太字

太字で示されている語は、キーワードです。それらは記載されているとおりに入力する必要があります。(キーワードは、一部のオペレーティング・システムでは大/小文字の区別があります。)太字ではない語は、名前または値に置換する必要があるプレースホルダです。

Oracle Big Data SQLのこのリリースでの変更点

Oracle Big Data SQL 3.0の新機能は次のとおりです。

Hortonworks Hadoop Data Platform (HDP 2.3)のサポート

Oracle Big Data SQL 3.0の重要な変更の1つは、Oracle Big Data Appliance以外のHadoopシステムに対するサポートの拡張です。また述語のプッシュダウンのサポートにも注意する必要があります。

Hortonworks HDP 2.3を含む環境にOracle Databaseがデプロイされると、Oracle Big Data SQLをインストールして、HDP Hadoopクラスタ上のデータを問い合せることができます。Oracle Big Data SQLサービスはAmbariによって管理されます。

Oracle Big Data Appliance以外のCloudera Distribution Include Apache Hadoop (CDH)プラットフォームのサポート

以前のリリースのOracle Big Data SQLはCDHとの互換性がありましたが、対象はOracle Big Data Applianceのみでした。リリース3.0はOracle Big Data Appliance以外のCDH 5.5.1システムで実行することができ、このシステムではCloudera Managerによって管理できます。

述語のプッシュダウン

Big Data SQL 3.0は、SARGable (Search ARGument ABLE)述語をOracle Databaseからサポート・システムにプッシュすることで、述語のオフロード・サポートを利用しています。「述語のプッシュダウンについて」を参照してください

1 Oracle Big Data SQLの概要

1.1 Oracle Big Data SQLとは

Oracle Big Data SQLは、Apache Hive、HDFS、Oracle NoSQL Database、Apache HBaseなどの複数のビッグ・データ・ソースに格納された大量のデータ・セットに対する問合せをサポートしています。これにより、分散データに対して統一した問合せが可能になり、異なる製品のデータ・ストアのデータがすべてOracleデータベースに格納されているかのようにシームレスに表示および分析できるようになります。

Oracle Big Data SQLではOracle SQLの構文が完全にサポートされます。手動で、または既存のアプリケーションを使用して、Hadoopエコシステム内のデータに対して非常に複雑なSQL SELECT文を実行できます。たとえば、Oracle Advanced Analyticsのユーザーである場合は、Oracle Big Data SQLを使用してOracle Databaseデータ・マイニング・モデルをHadoopのビッグ・データに拡張することができます。

次の項に詳細を示します。

- Oracle外部表について

- 述語のプッシュダウンについて

- Oracle Big Data SQLのアクセス・ドライバについて

- Smart Scanテクノロジについて

- ストレージ索引について

1.1.1 Oracle外部表について

Oracle Big Data SQLは、外部表で次世代のパフォーマンス向上を実現します。外部表は、データベース外のデータの場所を識別および記述するOracle Databaseオブジェクトです。他のデータベース表に使用するのと同じSQL SELECT構文を使用して、外部表を問い合せることができます。

外部表はアクセス・ドライバを使用して、データベース外のデータを解析します。外部データのタイプごとに一意のアクセス・ドライバが必要です。Oracle Big Data SQLには、ビッグ・データ用の2つのアクセス・ドライバが含まれています。メタデータがApache Hiveに定義されているデータ用のドライバ、およびHadoop Distributed File Systemに格納されているデータ(メタデータはOracle管理者のみによって指定される)にアクセスするためのドライバです。

1.1.2 述語のプッシュダウンについて

多くのビッグ・データ・システムでは、ファイルタイプそのもの(Apache Parquetなど)またはHiveのパーティション化やStorageHandler APIを使用して、述語のオフロード機能が一部のレベルでサポートされています。Big Data SQL 3.0は、SARGable (Search ARGument ABLE)述語をOracle Databaseからサポート・システムにプッシュすることで、このようなオフロード機能を利用しています。たとえば、述語のプッシュダウンによって次の動作が自動的に行われるようになります。

- パーティション化されたHive表に対する問合せは、パーティション列に対するフィルタ述語に基づいてプルーニングされます。

- Apache ParquetおよびApache ORCファイルに対する問合せでは、ディスクからファイルを読み取るときにSARGable述語を使用するとI/O回数が減少します。

- Oracle NoSQL DatabaseまたはApache HBaseに対する問合せは、SARGable述語を使用して、リモート・データ・ストアでデータのサブスキャンを行います。

述語のプッシュダウンを有効にするために必要なデータ型

述語のプッシュダウンでは、Hiveデータ型とOracleデータ型の間に特定のマッピングが存在することが必要です。これらのマッピングを次の表に示します。

データ型

マッピング先

Hiveデータ型

マッピングする必要があるOracleデータ型

文字データ型

CHAR(m)

CHAR(n)、VARCHAR2(n) (n >= m)

VARCHAR(m)

CHAR(n)、VARCHAR2(n) (n >= m)

string

CHAR(n)、VARCHAR2(n)

日時データ型

DATE

DATE

TIMESTAMP

TIMESTAMP(9) Hive TIMESTAMP:

ナノ秒(小数点以下9桁)

単純な数値データ型

TINYINT

NUMBER(3)が望ましいが、NUMBERまたはNUMBER(n) (任意の値n)も可

SMALLINT

NUMBER(5)が望ましいが、NUMBERまたはNUMBER(n) (任意の値n)も可

INT

NUMBER(10)が望ましいが、NUMBERまたはNUMBER(n) (任意の値n)も可

BIGINT

NUMBER(19)が望ましいが、NUMBERまたはNUMBER(n) (任意の値n)も可

DECIMAL(m)

m = nのNUMBER(n)が望ましいが、NUMBERまたはNUMBER(n) (任意の値n)も可

IEEE754バイナリ浮動小数点数データ型

FLOAT

BINARY_FLOAT

DOUBLE

BINARY_DOUBLE

その他のデータ型

BINARY

RAW(n)

BOOLEAN

CHAR(n)、VARCHAR2(n) (n >= 5)、値TRUE、FALSE

BOOLEAN

NUMBER(1)が望ましいが、NUMBERまたはNUMBER(n) (任意の値n)も可、値0 (false)、1 (true)

1.1.3 Oracle Big Data SQLのアクセス・ドライバについて

外部表への問合せによって、データがOracleデータベースの表に格納されている場合と同様に、HDFSやHive表に格納されているデータにアクセスできます。Oracle Databaseは、外部表の作成時に指定されたメタデータを使用してデータにアクセスします。

Oracle Database 12.1.0.2は、Oracle Big Data SQL用の新しい2つのアクセス・ドライバをサポートしています。

- ORACLE_HIVE: Apache Hiveデータ・ソースに対するOracle外部表を作成できます。HDFSデータ・ソースに対してHive表がすでに定義されている場合、このアクセス・ドライバを使用します。ORACLE_HIVEは、Hive表が定義されている他の場所(HBaseなど)に格納されているデータにもアクセスできます。

- ORACLE_HDFS: HDFSに格納されているファイルに対するOracle外部表を直接作成できます。このアクセス・ドライバはHive構文を使用してデータ・ソースを記述し、COL_1、COL_2などのデフォルトの列名を割り当てます。個別の手順としてHive表を手動で作成する必要はありません。
ORACLE_HIVEと同じ方法でHiveメタデータ・ストアからメタデータを取得するのではなく、ORACLE_HDFSアクセス・ドライバは必要な情報をすべてアクセス・パラメータから取得します。メタデータを指定するにはORACLE_HDFSアクセス・パラメータが必要です。このパラメータは、Oracle Database内の外部表定義の一部として格納されます。

Oracle Big Data SQLは、これらのアクセス・ドライバを使用して問合せのパフォーマンスを最適化します。

1.1.4 Smart Scanテクノロジについて

通常、外部表に対する問合せには全表スキャンが必要なため、外部表には従来の索引はありません。ただし、Oracle Big Data SQLは、HadoopクラスタのDataNodeにBig Data SQL処理エージェントがインストールされていると、SmartScan機能(フィルタ述語のオフロードなど)をOracle外部表に拡張します。このテクノロジを使用すると、Hadoopクラスタは大部分(合計で最大99パーセント)の無関係なデータを破棄し、より小さい結果セットをOracle Databaseサーバーに返すことができます。エンド・ユーザーが問合せの結果を得るまでの時間は大幅に短縮されます。これは、Oracle Databaseに対する負荷、およびネットワーク上のトラフィックが軽減されたことの直接的な結果です。

関連項目:

外部表の概要、およびOracle Databaseドキュメント・ライブラリ内の詳細情報への手引きについては、『Oracle Database概要』を参照してください。

1.1.5 ストレージ索引について

Oracle Big Data SQLでは、ストレージ索引が自動的に管理され、Oracle Databaseに対して透過的です。ストレージ索引には、HDFSに格納されているデータに関するハード・ディスク上のデータ分散のサマリーが含まれています。ストレージ索引により、I/O操作とフラット・ファイルからOracle Databaseブロックにデータを変換するCPUコストを減らすことができます。

ストレージ索引は、HDFSに基づいた外部表またはORACLE_HDFSドライバとORACLE_HIVEドライバのいずれかを使用して作成された外部表に対してのみ使用できます。ストレージ索引は、Apache HBaseやOracle NoSQLなどのStorageHandlerを使用する外部表に対しては使用できません。

ストレージ索引はインメモリー領域索引を収集したもので、各領域索引には最大32列のサマリーが格納されています。各分割に領域索引が1つあります。1つの領域索引に格納されているコンテンツは、その他の領域索引とは無関係です。これにより拡張性が高まり、ラッチ競合を回避できます。

各領域索引では、ストレージ索引が領域の列の最小値と最大値を管理します。最小値および最大値は、不要なI/Oの回避に使用されます。これは、I/Oフィルタリングとも呼ばれます。V$SYSSTATビューにあるストレージ索引統計別に保存されたセルのXTグラニュルI/Oバイト数は、ストレージ索引を使用して保存されたI/Oのバイト数を示したものです。

関連項目:

V$SYSSTATビューの詳細は、『Oracle® Databaseリファレンス』を参照してください

次の比較を使用する問合せはストレージ索引によって改善されます。

- 等価(=)

- 不等価(<、!=または>)

- 以下(<=)

- 以上(>=)

- IS NULL

- IS NOT NULL

Oracle Big Data SQLサービスが受け取った問合せに含まれる比較述語が領域の列の最大値よりも大きい場合や最小値よりも小さい場合に、ストレージ索引が自動的に構築されます。

注意:

- WHERE問合せ句に頻繁に出現する列に基づいて表内の行を順序付けると、ストレージ索引の効果が上がります。

- ストレージ索引は、すべての非言語データ型で動作し、非言語索引に似た言語データ型でも動作します。

例1-1 ストレージ索引を使用したディスクI/Oの回避

次の図に、表および領域索引を示します。表内の値の範囲は1から8です。一方の領域索引には最小値として1、最大値として5が格納されています。もう一方の領域索引には、最小値として3、最大値として8が格納されています。

SELECT * FROM TABLE WHERE B < 2などの問合せの場合、最初の行セットのみが一致します。2番目の行セットの最小値と最大値は問合せのWHERE句と一致しないため、ディスクI/Oが回避されます。

例1-2 ストレージ索引による結合パフォーマンスの向上

ストレージ索引を使用すると、表の結合で不要なI/O操作をスキップできます。たとえば、次の問合せでは、I/O操作を実行し、ファクト表の最初のブロックにのみブルーム・フィルタを適用しています。

SELECT count(*) from fact, dim where fact.m=dim.m and dim.name="Hard drive"

ファクト表の2番目のブロックに対するI/Oは、最小値/最大値の範囲(5,8)がブルーム・フィルタに存在しないため、ストレージ索引によって完全に回避されます。

2 Oracle Big Data SQLのインストール

Oracle Big Data Appliance、CDH (Cloudera's Distribution including Apache Hadoop)に基づく他のシステム、HDP (Hortonworks Data Platform)、およびその他のCDH Hadoop以外のシステムにおいて、Oracle Big Data SQL 3.0はOracle DatabaseをHadoop環境に接続することができます。

これらの環境にOracle Big Data SQLをインストールするための手順は異なります。ご使用の環境でこの製品をインストールする方法は、次の該当する項を参照してください。

- Oracle Big Data ApplianceおよびOracle Exadata Database Machineでのインストール
Oracle Big Data ApplianceおよびExadataサーバーでのインストールの場合のみこの項を参照してください。

- 他のHadoopシステムでのOracle Big Data SQLのインストール
CDH (Oracle Big Data Appliance以外)およびCDH以外(特にHDP)のシステムにインストールする場合に、この項を参照してください。

2.1 Oracle Big Data ApplianceおよびOracle Exadata Database Machineでのインストール

Oracle Big Data Applianceに接続しているOracle Exadata Database Machine上でOracle Big Data SQLを使用するには、Oracle Big Data SQLソフトウェアを両方のシステムにインストールする必要があります。

2.1.1 Oracle Big Data ApplianceでOracle Big Data SQLを使用するための前提条件

Oracle Exadata Database Machineを、Oracle Big Data Applianceと同じインフィニバンド・サブネットで構成し、インフィニバンド・ネットワークを介してOracle Big Data Applianceに接続する必要があります。

表2-1に、Oracle Big Data SQLの各リリースをインストールする場合の前提条件となるソフトウェア・バージョンを示します。

表2-1 Oracle Big Data SQL互換性マトリクス

Oracle Big Data SQLリリース

Oracle Big Data Applianceリリース

Oracle Exadata Storage Server

Oracle Databaseバージョン

個別パッチ

3.0

4.4

12.1.2.1.0以降。

Oracle Database 12.1.0.2.10または12.1.0.2.13。

January 2106 BP (12.1.0.2.160119)に対する個別パッチ22778199。

2.0

4.4, 4.3, 4.2

12.1.2.1.0以降。

Oracle Database 12.1.0.2.10または12.1.0.2.13。

個別パッチ21419192はOracle Database 12.1.0.2.10およびDatabase 12.1.0.2.13に適用できます。

1.1

4.2, 4.1

12.1.2.1.0以降。

Oracle Database 12.1.0.2.4以降。

個別パッチ20310880はOracle Database 12.1.0.2.4に適用できます。12.1.0.2.6以降では必要ありません。

Oracle Big Data Applianceの各リリースには、Oracle Big Data SQLの1バージョンがインストール・オプションとしてバンドルされています。表2-2のパッチが入手できる場合は、新しいバージョンのOracle Big Data SQLをインストールすることもできます。

表2-2 バンドルされているOracle Big Data SQLとOracle Big Data Applianceのパッチ

Oracle Big Data SQLリリース

Oracle Big Data Applianceリリース

3.0

4.4 (パッチあり)、リリース4.3および4.2はパッチなし

2.0

4.4 (2.0が含まれる)、4.3 (2.0が含まれる)、4.2 (パッチあり)

1.1

4.2 (1.1が含まれる)、4.1 (パッチあり)

2.1.2 インストールの実行

次の手順に従って、Oracle Big Data SQLソフトウェアをOracle Big Data ApplianceおよびOracle Exadata Database Machineにインストールします。

注意:

この手順は、Oracle Big Data ApplianceおよびOracle Exadata Database Machine以外のシステムでのOracle Big Data SQLのインストールには使用できません。

Oracle DatabaseのJanuary 2016バンドル・パッチ(12.1.0.2.160119 BP)をExadata Database Machineに事前にインストールしておく必要があります。以前のバンドル・パッチはこの時点ではサポートされません。

1. Oracle Database個別パッチ22778199をダウンロードします。

2. すべてのOracle Exadata Database Machine計算サーバーで、パッチをインストールします。

- グリッド・インフラストラクチャ・ホーム

- Oracle Databaseホーム

Bundle PatchのDatapatch部分を忘れずに実行してください。パッチをインストールする順を追った手順は、パッチのREADMEを参照してください。

3. Oracle Big Data Applianceで、ソフトウェアをインストールするか、最新のバージョンにアップグレードします。詳細は、『Oracle Big Data Applianceオーナーズ・ガイド』を参照してください。

Oracle Big Data Appliance構成生成ユーティリティを使用する場合、インストール・オプションとしてOracle Big Data SQLを選択できます。詳細は、『Oracle Big Data Applianceオーナーズ・ガイド』を参照してください。

4. Oracle Big Data SQLがインストール中に有効でない場合、bdacliユーティリティを使用します。

# bdacli enable big_data_sql

詳細は、『Oracle Big Data Applianceオーナーズ・ガイド』を参照してください。

5. Oracle Exadata Database Machineで、インストール後スクリプトを実行します。

「Oracle Big Data SQLのインストール後スクリプトの実行」を参照してください。

Cloudera Managerを使用すると、Oracle Big Data SQLが稼働していることを確認できます。olink:BIGUG-GUID-BDC9DC75-8FA9-49B5-B35A-2C8B6C9DC53Dを参照してください。

完了したとき、クラスタがKerberosで保護されている場合は、クラスタ・ノードとOracle Exadata Database Machineの両方で追加の手順を実行する必要があります。「Kerberos化されたクラスタへのOracle Big Data SQLアクセスの有効化」を参照してください。

Oracle Big Data Applianceのアップグレードの場合は、インストール後のスクリプトを実行する前に、ユーザーがOracle Databaseをサポート対象レベルにアップグレードする必要があります。

2.1.3 Oracle Big Data SQLのインストール後スクリプトの実行

Oracle Big Data SQLのインストール後スクリプトを実行するには、次の手順を実行します。

1. bds-exa-install.shインストール・スクリプトを、MammothがインストールされているOracle Big Data Applianceノードからコピーします。一般に、Oracle Exadataに対するクラスタの最初のノードです。任意の場所にコピーできます。wget、curlなどのコマンドを使用できます。この例では、bda1node07からスクリプトをコピーします。

wget http://bda1node07/bda/bds-exa-install.sh

2. Oracleインストールの所有者の名前を確認し、Oracleユーザーとして実行可能ファイルを設定します。通常は、oracleユーザーがインストールを所有します。次のコマンドを使用します。

$ ls -l bds-exa-install.sh
$ chown oracle:oinstall bds-exa-install.sh
$ chmod +x bds-exa-install.sh

3. 次の環境変数を適切に設定します。

$ORACLE_HOME to <database home>
$ORACLE_SID to <correct db SID>
$GI_HOME to <correct grid home>

注意:

この手順で説明するように、$GI_HOMEを設定するかわりに、手順5で説明するように、グリッド・ホームとインストール・スクリプトを設定できます。

4. TNS_ADMINが、直接listener.oraが実行されている場所を指していることを確認します。リスナーがデフォルトの場所のTNS_ADMIN、$ORACLE HOME/network/adminにある場合、TNS_ADMINを定義する必要はありません。リスナーがデフォルトの場所にない場合は、コマンドを使用して、正しくTNS_ADMINがこれを指すように設定する必要があります。

export TNS_ADMIN=<path to listener.ora>

5. ORACLE_SIDが大文字の場合、この手順のみを実行します。それ以外の場合は、次の手順に進みます。これは、小文字の場合にのみ、インストール・スクリプトがCRSデータベース・リソースをORACLE_SIDから取得するためです。大文字の場合、次の手順を実行してSIDをスクリプトに手動で渡します。

a. 次のコマンドを実行して、すべてのリソースをリストします。

$ crsctl stat res -t

b. 出力ノートから、ora.<dbresource>.dbリソース名を選択します。

c. 次のコマンドを実行して、正しいora.<dbresource>.dbリソース名が返されているかどうか確認します。

$ ./crsctl stat res ora.<dbresource>.db

出力には、次のようにリソース名が表示されます。

NAME=ora.<dbresource>.db
TYPE=ora.database.type
TARGET=ONLINE , ONLINE
STATE=ONLINE on <name01>, ONLINE on <name02>

d. 次のようにして、--db-name=<dbresource>をインストール・スクリプトへの追加引数として指定します。

./bds-exa-install.sh --db-name=<dbresource>

また、手順3で説明するように、次のようにして上記のコマンドを使用して$GI_HOMEを設定するかわりにグリッド・ホームを設定することができます。

./bds-exa-install.sh --db-name=<dbresource> --grid-home=<grid home>

注意:

この手順を実行済の場合、次の手順をスキップできます。

6. oracleとしてスクリプトを実行します。

./bds-exa-install.sh

スクリプトからoracleユーザーとして次に進むように求められた場合、別のセッションではスクリプトをrootとして実行する必要があります。次に例を示します。

$ ./bda-exa-install.sh:
bds-exa-install: root shell script         : /u01/app/oracle/product/12.1.0.2/dbhome_1/install/bds-root-<cluster-name>-setup.sh
please run as root:
/u01/app/oracle/product/12.1.0.2/dbhome_1/install/bds-root-<rack-name>-clu-setup.sh

出力例を次に示します。

bds-exa-install: setup script started at: Mon May 4 16:56:48 PDT 2015
bds-exa-install: version                : 1.1.09
bds-exa-install: bda cluster name       : <cluster-name>
bds-exa-install: bda web server         : bdanode01.example.com
bds-exa-install: cloudera manager url   : bdanode03.example.com:7180
bds-exa-install: hive version           : hive-0.13.1-cdh5.3.0
bds-exa-install: hadoop versi           : hadoop-2.5.0-cdh5.3.0
bds-exa-install: bds ve                 : Bds 1.1
bds-exa-install: bds install date       : 05/04/2015 16:34 PDT
bds-exa-install: bd_cell version        : bd_cell-12.1.2.0.100_LINUX.X64_150225.1100-1.x86_64
bds-exa-install: action                 : setup
bds-exa-install: crs                    : useCrs
bds-exa-install: db resource            : <db_resource>
bds-exa-install: database type          : RAC
bds-exa-install: cardinality            : 8
************************
README--README--README--README--README--README--README--README--README--README
************************
Detected a multi instance database (<db_resource>). Run this script on all instances.
Please read all option of this program (bds-exa-install --help)
This script does extra work on the last instance.  The last instance is determined as
the instance with the largest instance_id number.
press <return>

bds-exa-install: root shell script      : /u01/app/oracle/product/12.1.0.2/dbhome_1/install/bds-root-<cluster-name>-setup.sh
please run as root:

/u01/app/oracle/product/12.1.0.2/dbhome_1/install/bds-root-<cluster-name>-setup.sh

waiting for root script to complete, press <enter> to continue checking.. q<enter> to quit

bds-exa-install: root script seem to have succeeded, continuing with setup bds
mkdir: created directory `/u01/app/oracle/product/12.1.0.2/dbhome_1/bigdatasql'
mkdir: created directory `default_dir'
mkdir: created directory `bigdata_config'
mkdir: created directory `log'
mkdir: created directory `jlib'
bds-exa-install: working directory : /u01/app/oracle/product/12.1.0.2/dbhome_1/bigdatasql/jlib
bds-exa-install: removing old oracle bds jars if any
bds-exa-install: downloading oracle bds jars
bds-exa-install: installing oracle bds jars
bds-exa-install: working directory  : /u01/app/oracle/product/12.1.0.2/dbhome_1/bigdatasql
bds-exa-install: downloading      : hadoop-2.5.0-cdh5.3.0.tar.gz
...
bds-exa-install: creating bds property files
bds-exa-install: working directory : /u01/app/oracle/product/12.1.0.2/dbhome_1/bigdatasql/bigdata_config
bds-exa-install: created bigdata.properties
bds-exa-install: created  bigdata-log4j.properties
...
catcon: See /u01/app/oracle/product/12.1.0.2/dbhome_1/install/bdscatcon*.log files for output generated by scripts
catcon: See /u01/app/oracle/product/12.1.0.2/dbhome_1/install/bdscatcon_*.lst files for spool files, if any
catcon.pl: completed successfully
bds-exa-install: granted default and cluster directories to public!
bds-exa-install: no mta will be setup, dropping db links for bda01clu
...
catcon: See bdscatcon-<##>_*.lst files for spool files, if any
catcon.pl: completed successfully
bds-exa-install: setup script completed all steps

詳細は、「bds-exa-installスクリプトの実行」を参照してください。

7. 複数のインスタンス・データベースを使用している場合、データベース・インスタンスごとに手順6を繰り返します。

スクリプトが終了すると、Oracle Big Data SQLを含む次の項目が使用できるようになり、データベース・インスタンス上で実行されます。ただし、イベントによってOracle Big Data SQLエージェントが停止した場合、再起動する必要があります。「Big Data SQLエージェントの起動および停止」を参照してください。

- Oracle Big Data SQLのjarのディレクトリおよび構成、環境ファイルおよびプロパティ・ファイル。

- Database dba_directories。

- Database dblinks。

- Databaseビッグ・ファイルspfileパラメータ。
たとえば、次のようにして、dba_directoriesをSQLプロンプトから確認できます。

SQL> select * from dba_directories where directory_name like '%BIGDATA%';

2.1.3.1 bds-exa-installスクリプトの実行

bds-exa-installスクリプトは、Oracleホーム・ディレクトリの所有者によって実行されるカスタム・インストール・スクリプトを生成します。そのセカンダリ・スクリプトは、Oracle Big Data SQLで必要なすべてのファイルを$ORACLE_HOME/bigdatasqlディレクトリにインストールします。Oracle NoSQL Databaseのサポートには、クライアント・ライブラリ(kvclient.jar)をインストールします。また、データベース・ディレクトリ・オブジェクト、およびマルチスレッドのOracle Big Data SQLエージェントのデータベース・リンクも作成します。

--generate-onlyオプションを使用してセカンダリ・スクリプトを作成し、$ORACLE_HOMEの所有者として実行することもできます。

2.1.3.2 bds-exa-install構文

次にbds-exa-installの構文を示します。

./bds-exa-install.sh [option]

オプション名の前には2つのハイフン(--)が付いています。

--generate-only={true | false}

セカンダリ・スクリプトを生成するだけで実行しない場合は、trueに設定します。1つのステップでスクリプトを生成して実行する場合は、falseに設定します(デフォルト)。

2.1.3.3 bds-exa-installスクリプトの実行のトラブルシューティング

Exadataでインストール・スクリプトを実行する場合に問題が発生したら、次の手順を実行してOracleサポートでSRを開き詳細を確認します。

1. 次のようにして、デバッグ内のスクリプトを実行してデバッグ出力を収集します。

$ ./bds-exa-install.sh --db-name=<dbresource> --grid-home=<grid home>  --root-script=false --debug
OR
$ ./bds-exa-install.sh --root-script=false --debug

2. 次のようにして、Oracle Databaseバージョンを収集します。

a. RDBMS-RAC Homeからopatch lsinventoryの結果を収集します。

b. Grid Homeからopatch lsinventoryの結果を収集します

3. 次のSQL文の結果により、Datapatchが設定されていることを確認します。

SQL> select patch_id, patch_uid, version, bundle_series, bundle_id, action, status from dba_registry_sqlpatch;

4. 次の環境変数から、情報を収集します。

- $ORACLE_HOME

- $ORACLE_SID

- $GI_HOME

- $TNS_ADMIN

5. lsnrctl statusコマンドを実行します。

2.1.4 Oracle Big Data SQLを使用したデータ・セキュリティについて

Oracle Big Data Applianceには、Oracle Big Data Appliance上のCDHクラスタに格納されているデータを保護するための多数のセキュリティ機能がすでに用意されています。

- Kerberos認証: ユーザーおよびクライアント・ソフトウェアは、クラスタにアクセスする前に資格証明を提供する必要があります。

- Apacheセキュリティ認証: データおよびメタデータにファイングレインのロールベース認証を提供します。

- HDFSでの透過的暗号化: ディスクにあるデータを保護します。データの暗号化と復号化は、データを使用するアプリケーションに対して透過的です。

- Oracle Audit Vault and Database Firewall監視: Oracle Big Data Appliance上のAudit Vaultプラグインは、MapReduce、HDFSおよびOozieサービスから監査およびロギング・データを収集します。そうすると、Audit Vault Serverを使用してOracle Big Data Appliance上でこれらのサービスを監視できるようになります。

Oracle Big Data SQLは、このリストに様々なOracle Databaseセキュリティ機能を追加します。リレーショナル・データに適用するHadoopデータに同じセキュリティ・ポリシーおよびルールを適用できます。

2.1.5 Kerberos化されたクラスタへのOracle Big Data SQLアクセスの有効化

Oracle Big Data SQLにKerberosが有効化されたクラスタ上のHDFSデータへのアクセス権を付与するには、アクセスを必要とする各Oracle Exadata Database MachineをKerberosクライアントにします。また、各クラスタ・ノードおよびExadata Database Machine上のoracleアカウントでkinitを実行し、このアカウントがKerberosによって認証されることを確認します。この手順は、次の2つの状況で必要となります。

- Kerberosが有効化されたクラスタでOracle Big Data SQLを有効化する場合。

- Oracle Big Data SQLがすでにインストールされているクラスタでKerberosを有効化する場合。

注意:
Oracle Big Data SQL問合せは、Oracle Databaseプロセスの所有者(つまりoracleユーザー)として、Hadoopクラスタ上で実行されます。したがって、oracleユーザーがデータにアクセスするには、有効なKerberosチケットが必要です。このチケットは、クラスタにアクセスするすべてのOracle Databaseインスタンスで必要となります。また、有効なチケットは、Oracle Big Data Appliance上で実行中の各Big Data SQL Serverプロセスにも必要です。チケットを取得するには、kinit oracleを実行します。

これらの手順を使用すると、オペレーティング・システム・ユーザーは、kinitユーティリティで認証されてから、Oracle SQL Connector for HDFSジョブを発行できます。kinitユーティリティは通常、認証用のKerberosキータブ・ファイルを使用し、パスワードに対話型プロンプトを使用しません。

1. クラスタの各ノードで、次の手順を実行します。

a. oracleユーザーとしてログインします。

b. oracleアカウントでkinitを実行します。

$ kinit oracle

c. Kerberosパスワードを入力します。

2. プライマリ・ノードにログオンし、Oracle Big Data SQLを停止して再起動します。

$ bdacli stop big_data_sql_cluster
$ bdacli start big_data_sql_cluster

3. クラスタへのアクセス権が必要なすべてのOracle Exadata Database Machine上で、次の手順を実行します。

a. Mammothがインストールされているノードから各Oracle Exadata Machine上の同じパスに、Kerberos構成ファイル/etc/krb5.confをコピーします。

b. oracleアカウントでkinitを実行し、Kerberosパスワードを入力します。

c. Oracle Big Data SQLのインストール後スクリプトを再実行します

$ ./bds-exa-install.sh

Kerberosチケットの期限切れの防止

システムではkinitをKerberosチケットの失効前に定期的に実行して、Oracle SQL Connector for HDFSによる透過的な認証を可能にする必要があります。cronまたは類似ユーティリティを使用して、kinitを実行します。たとえば、Kerberosチケットが2週間ごとに期限が切れる場合は、チケットの期限を1週間ごとに延長するようにcronジョブを設定します。

2.1.6 Big Data SQLエージェントの起動および停止

データベース上のBig Data SQLエージェントはクラスタウェアにより管理されます。Big Data SQLのインストール中にエージェントがクラスタウェアに登録され、データベースを自動的に開始および停止します。ステータスを確認するには、GridホームまたはClusterwareホームから実行します。

mtactl check bds_databasename_clustername

2.2 他のHadoopシステムでのOracle Big Data SQLのインストール

Oracle Big Data SQLはクラスタ管理サーバーによって提供されるサービスを使用してデプロイされます。インストール・プロセスは管理サーバーAPIを使用してサービスを登録し、デプロイメント・タスクを開始します。その後、管理サーバーがプロセスを制御します。

Big Data SQLをクラスタ管理サーバーにインストールしたら、バンドルに用意されているツールを使用して、データベース・サーバー側のインストール・パッケージを生成します。

2.2.1 Oracle Big Data SQLのダウンロード

Oracle Big Data SQLはOracle Software Delivery Cloudからダウンロードします

1. クラスタ管理サーバーで、インストール・ソース・ディレクトリとして新しいディレクトリを作成するか既存のディレクトリを選択します。

2. Oracle Software Delivery Cloudにログインします。

3. Oracle Big Data SQLを検索します。

4. 「Oracle Big Data SQL 3.0.0.0.0 for Linux x86-64」を選択します。

5. オラクル社標準使用条件を読んで同意します。

6. Big Data SQL (3.0.0) zipファイルを選択して1ファイルをダウンロードします。

7. ダウンロード・ファイルを解凍します。
このダウンロード・ファイルには2つの製品バンドル、BIGDATASQL-AMBARI.zip (HDPインストール用)とBIGDATASQL-CLOUDERA.zip (CDHインストール用)が含まれています。ご使用のHadoopシステムに対応するバンドルを保存し、もう1つは削除します。

製品バンドルには、次の表に示す内容が含まれる必要があります。

表2-3 Oracle Big Data SQL製品バンドル・インベントリ

ファイル

説明

setup-bds

クラスタ側のインストール・スクリプト

cloudera-config.json

CDH構成jsonファイル

hdp-config.json

HDP構成jsonファイル

api_env.sh

REST API環境の設定スクリプト

platform_env.sh

BDSサービス構成スクリプト

BIGDATASQL-1.0.jar

CSDファイル(Cloudera製品バンドルのみ)

bin/json-select

JSON-selectユーティリティ

db/bds-database-create-bundle.sh

データベース・バンドル作成スクリプト

db/database-install.zip

データベース側のインストール・ファイル

repo/BIGDATASQL-1.0.0-el6.parcel

parcelファイル

repo/manifest.json

parcelファイルのハッシュ・キー

BIGDATASQL-1.0.0-el6.stack

スタック・ファイル

setup-db.sh

クラスタ情報を取得するスクリプト(現在HDPクラスタ側のインストールの手動操作で使用されます。)

2.2.2 HDPクラスタをインストールするための前提条件

Oracle Big Data SQLをHortonworks Hadoop Data Platform (HDP)にインストールするために次が必要です。

実行中のサービス

Big Data SQLのインストール時には次のサービスが実行している必要があります

- HDP 2.3

- Ambari 2.1.0

- HDFS 2.7.1

- YARN 2.7.1

- Zookeeper 3.4.6

- Hive 1.2.1

- Tez 0.7.0

パッケージ

Big Data SQLをインストールする前に次のパッケージをインストールしておく必要があります。

- JDKバージョン1.7以上

- Pythonバージョン2.6。
OpenSSLバージョン1.01ビルド16以上

システム・ツール

- curl

- rpm

- scp

- tar

- unzip

- wget

- yum

環境設定

インストール前に次のように環境を設定する必要があります。

- ntp有効

- iptables無効

アクセス制御の設定

- なし。

2.2.3 CDHクラスタをインストールするための前提条件

Oracle Big Data Applianceの一部ではないCDHクラスタにOracle Big Data SQLをインストールするときは、次の条件が満たされている必要があります。

注意:
Oracle Big Data ApplianceでのOracle Big Data SQLのインストール前提条件および手順は、他のCDHシステムで使用されるプロセスとは異なります。Oracle Big Data Applianceにインストールする場合は、「Oracle Big Data ApplianceおよびOracle Exadata Database Machineでのインストール」を参照してください。

実行中のサービス

Oracle Big Data SQLのインストール時には次のサービスが実行している必要があります

- Cloudera Distribution including Apache Hadoop (CDH) 5.5.1

- HDFS 2.6.0

- YARN 2.6.0

- Zookeeper 3.4.5

- Hive 1.1.0

パッケージ

Oracle Big Data SQLをインストールする前に次のパッケージをインストールしておく必要があります。OracleクライアントはOracle Technology Networkでのダウンロードに対応しています。

- JDKバージョン1.7以上

- Oracle Instant Client – 12.1.0.2以上(oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpmなど)

- Oracle Instant JDBC Client – 12.1.0.2以上(oracle-instantclient12.1-jdbc-12.1.0.2.0-など)

- PERL LibXML – 1.7.0以上(perl-XML-LibXML-1.70-5.el6.x86_64.rpmなど)

- Apache log4j

システム・ツール

- unzip

- finger

- wget

環境設定

インストール前に次のように環境を設定する必要があります。

- /usr/java/default ($JAVA_HOMEが設定されない場合)

- Javaバイナリのパスを/usr/java/latestに指定する必要があります

- Hadoopライブラリのデフォルト・パスを/opt/cloudera/parcels/CDH/lib/に指定する必要があります

アクセス制御の設定

次のユーザーとグループが存在する必要があります。

- oracleユーザー

- oinstallグループ

2.2.4 インストールの概要

Oracle Big Data SQLのインストールは2つのステージで構成されます。

- クラスタ側のインストール:

- バイナリをクラスタにデプロイします。

- 各クラスタ・ノードのサービスについてLinuxとネットワークの設定を構成します。

- 管理サーバーでサービスを構成します。

- データベース接続を構成するためにクラスタ情報を取得します。

- データベース側のインストールのためにデータベース・バンドルを作成します。

- Oracle Databaseサーバー側のインストール:

- バイナリをデータベース・ノードにコピーします。

- サービスのネットワーク設定を構成します。

- クラスタ・メタデータをデータベースに挿入します。

2.2.5 Hadoopクラスタ管理サーバーでのインストール

Oracle Big Data SQLインストールの最初の手順は、Hadoopクラスタ管理サーバーでインストーラを実行することです(Cloudera ManagerがCDHシステムで実行しているかAmbariがHDPシステムで実行している場合)。管理サーバーでのインストール後タスクとして、データベース・サーバーのインストール・バンドルを準備するスクリプトを実行します。

クラスタ管理サーバーで実行するタスクは次の3つです。

- ダウンロード・ファイルから保存したBIGDATASQL製品バンドル(BIGDATASQL-CLOUDERA.zipまたはBIGDATASQL-AMBARI.zip)からファイルを抽出し、バンドルに含まれているOracle Big Data SQLインストーラを構成して実行します。これによってローカル・サーバーにOracle Big Data SQLがインストールされます。

- データベース・バンドル作成スクリプトを実行します。このスクリプトによってデータベース・バンドル・ファイルが生成されます。これをOracle Databaseサーバーで実行するとOracle Big Data SQLがサーバー上にインストールされます。

- データベース・バンドル・ファイルのパラメータを確認し、必要に応じて調整します。

データベース・バンドル・ファイルを確認して(必要な場合に)編集してから、Oracle Databaseサーバーにコピーし、「Oracle Databaseサーバーでのインストール」の説明に従って実行します

クラスタ管理サーバーでのBig Data SQLのインストール

クラスタ管理サーバーにBig Data SQLをインストールする手順は次のとおりです。

1. BIGDATASQL-<version>.zipを、クラスタ管理サーバー上の一時的な場所にコピーします。

2. unzip BIGDATASQL-<version>.zip

3. cd BIGDATASQL

4. 構成ファイルを編集します。
この後の表2–4で、各構成パラメータの使用方法を説明します。

- CDHの場合は、この例のようにcloudera-config.jsonを編集します。

{
"CLUSTER_NAME" : "cluster",
"CSD_PATH" : "/opt/cloudera/csd",
"DATANODE_IP" : "10.12.13.14",
"REST_API_PORT" : "7180",
"WEB_SERVER_PORT" : "80",
}

- HDPの場合はhdp-config.jsonを編集します。次に例を示します。

{
"CLUSTER_NAME" : "clustername",
"DATANODE_IP" : "10.10.10.10",
"REST_API_PORT" : "8080",
}

5. クラスタ管理者のユーザーIDとパスワードを取得し、setup-bdsを実行します。対応する構成ファイル(CDHではcloudera-config.json、HDPではhdp-config.json)を引数として渡します。スクリプトによって、管理者の資格証明が求められてから、管理サーバーにBDSがインストールされます。

$ ./setup-bds cloudera-config.json

または

$ ./setup-bds hdp-config.json

表2-4 setup-bdsの構成パラメータ

構成パラメータ

用途

適用対象

CLUSTER_NAME

Hadoopサーバーでのクラスタの名前。

CDH、HDP

CSD_PATH

カスタム・サービス・ディスクリプタ・ファイルの場所。

CDHのみ

DATANODE_IP

CLUSTER_NAMEによって指定されたクラスタのネットワークをデータベース・ノードで検出できるようにします。

CDH、HDP

REST_API_PORT

リクエストをリスニングするクラスタ管理サーバー上のポート。

CDH、HDP

WEB_SERVER_PORT

インストール時にデプロイメント・タスクのリポジトリに一時的に割り当てられたポート。割当てがクラスタの操作と競合しない任意のポートにすることができます。

CDHのみ。

2.2.5.1 HDP専用の手動インストール手順

HDPクラスタのOracle Big Data SQLの場合、現時点では製品をAbmariと統合するために手動の手順が必要です。これはいずれ自動インストールによって置き換えられる予定です。

注意:
この項は、Hortonworks Hadoop Data PlatformでのOracle Big Data SQLのインストールのみに対応します。CDHシステムでのインストールの場合は、「データベース側のインストール・バンドルの作成」に進んでください

次の手順を実行してクラスタ管理サーバーにBig Data SQLをインストールします。

1. rootとしてJDKインストールに対するsymlink /usr/java/latestおよび/usr/java/defaultを作成します。これはすべてのDataNodeで行います。

$ ln -s /usr/jdk64/jdk1.8.0_60 /usr/java/latest
$ ln -s /usr/java/latest /usr/java/default

2. BIGDATASQLディレクトリ(前にバンドルから抽出したもの)をAmbariのservicesディレクトリに移動します。

mv BIGDATASQL /var/lib/ambari/server/resources/stacks/HDP/2.3/services

3. Ambariを再起動します。

$ ambari-server restart

4. Ambariが再起動したら、クラスタ管理者としてAmbariにログインします。

5. サービス・バーで「Actions」をクリックし、「Add Service」を選択します。

6. 「Add Service Wizard」リストで「Big Data SQL」を選択し、「Next」をクリックします。

7. 「Assign Slaves and Clients」パネルですべてのDataNodeを選択します。
選択しなかったDataNodeは、問合せにデータを提供することができません。DataNode以外にインストールしようとすると失敗します。

「Next」をクリックします。

8. 「Customize Services」パネルの「Advanced bds-config」の下でbds.cluster変数を編集します。Big Data SQLをインストールするクラスタの名前を入力します。
「Next」をクリックします。

9. 「Review」パネルで一番下の「Big Data SQL Cell」数を確認します。これがクラスタ内のDataNode数と一致する場合は、「Deploy」をクリックします。
Ambariによってインストールが開始されます。

10. 「Install, Start, and Test」パネルでインストールの進捗を監視し、失敗が発生していないか「Messages」列に注意してください。
インストールが完了すると、Ambariによってサービスが自動的に開始されます。すべてのサービスが実行すると、パネルの下部に「Installed and started the services」通知が表示されます。

「Next」をクリックします。

AmbariへのOracle Big Dataのインストールが完了すると、この製品がAmbariのサービス・バーに表示されます。この後はAmbariを使用して、Big Data SQLサービスの起動、停止および管理を行うことができます。

データベース・インストール・バンドルを作成する前のsetup-db.shの編集と実行(HDPのみ)

HDPでのインストールでは、setup.shは次の手順(データベース・インストール・バンドルの作成)の準備に必要な情報を生成します。これは、Oracle Big Data SQLダウンロード・パッケージから抽出された製品バンドルのスクリプトの1つです。(表2-3 を参照してください)。スクリプトは実行する前に編集する必要があります。いくつかの環境変数をエクスポートする必要もあります。

1. setup-db.shを編集して、次のパラメータ値を指定します。パラメータはファイルの一番上に表示されます。

パラメータ

必須値

hortontarballrepourl

Hortonworks公開リポジトリのURL。

ambariurl

AmbariサーバーREST API URLおよびポート。

cluster

Oracle Big Data SQLをインストールするクラスタの名前。

clusternetwork

DataNodeのIPアドレス(アドレスはすべてのDataNodeで同じにする必要があります。)

hadoopname

Hortonworks公開リポジトリのHadoopクライアントtarballのファイル名。

hivename

Hortonworks公開リポジトリのHiveクライアントtarballのファイル名。

次に例を示します。

hortontarballrepourl='http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.3.2.0/tars'
ambariurl='http://<ambari-node>:<ambari-port>'
cluster=clustername
clusternetwork='11.12.13.14'
hadoopname=hadoop-2.7.1.2.3.2.0-2950
hivename=apache-hive-1.2.1.2.3.2.0-2950-bin

2. 編集したスクリプトを実行します

$ ./setup-db.sh

3. 環境変数WS_CONF_USRおよびWS_CONF_PWDをエクスポートします。

export WS_CONF_USR=admin
export WS_CONF_PWD=admin

これらの手順の後で、データベース・インストール・バンドルをOracle Databaseサーバーにコピーしてインストールできます。

2.2.6 データベース側のインストール・バンドルの作成

クラスタ管理サーバーで、Oracle Big Data SQLダウンロード・パッケージのスクリプトを実行してインストール・バンドルを作成し、Oracle Databaseサーバーに製品をインストールします。

1. BIGDATASQL製品バンドル(BIGDATASQL-CLOUDERA.zipまたはBIGDATASQL-AMBARI.zip)を以前に解凍した一時ディレクトリ内で、BIGDATASQL/dbディレクトリに移動します。次にBDSデータベース・バンドル作成スクリプトを実行します。デフォルト設定をオーバーライドするためにスクリプトに渡すことができるオプションのパラメータについては、この後の表を参照してください。

$ cd BIGDATASQL/db
$ bds-database-bundle-creation.sh

データベース・バンドル・ファイルには複数のパラメータが含まれています。必要に応じて任意のパラメータを変更できます。指定するURLには、バンドル・インストール・スクリプトが実行するOracle Databaseサーバーからアクセスできることが必要です。

表2-5 bds-database-bundle-creation.shのコマンドライン・パラメータ

パラメータ

値

--hadoop-client-ws

HadoopクライアントtarballをダウンロードするためのURLを指定するか、このクライアントでダウンロードをバイパスします。

--no-hadoop-client-ws

--hive-client-ws

HiveクライアントtarballをダウンロードするためのURLを指定するか、このクライアントでダウンロードをバイパスします。

--no-hive-client-ws

--yarn-conf-ws

YARN構成zipファイルをダウンロードするためのURLを指定するか、このダウンロードをバイパスします。

--no-yarn-conf-ws

--hive-conf-ws

Hive構成zipファイルをダウンロードするためのURLを指定するか、このダウンロードをバイパスします。

--no-hive-conf-ws

--ignore-missing-files

一部のファイルがない場合にもバンドル・ファイルを作成します。

--clean-previous

以前のバンドル・ファイルとディレクトリをbds-database-install/から削除します

--script-only

スクリプト・データベース・インストール・ファイルの作成のみを行います。

リソースの手動追加(BDSデータベース・バンドル作成スクリプトがアクセスできない場合)

データベース・バンドル作成スクリプトは、Hadoop fat jar、YARN構成ファイルおよびHiveリソースをoracle.comからダウンロードしようとします。クラスタ管理サーバーからダウンロード・サイトにアクセスできない場合は、別のサーバーにファイルをダウンロードできます。この場合、ファイルを保存するために選択したパスを、次のように引数としてbds-database-bundle-creation.shに渡します。

$ ./bds-database-bundle-creation.sh --yarn-conf-ws='http://nodexample:1234/config/yarn'

必要であれば、ファイルを別のサーバーにダウンロードしてから、クラスタ管理サーバー上の/bds-database-installに移動して、バンドル作成スクリプトを実行できます。次に例を示します。

$ cp hadoop-xxxx.tar.gz bds-database-install/
$ cp hive-xxxx.tar.gz bds-database-install/
$ cp yarn-conf.zip bds-database-install/
$ cp hive-conf.zip bds-database-install/
$ cd db
$ ./bds-database-bundle-creation.sh

Oracle Databaseサーバーへのデータ・バンドルのコピー

scpを使用して、作成したデータベース・バンドルをOracle Databaseサーバーにコピーできます。データベース・サーバーのoracleアカウントを使用し、ファイルを/home/oracleにコピーします。次の例では、dbnodeがデータベース・サーバーです。

$ scp bds-database-install.zip oracle@dbnode:/home/oracle

次の手順では、Oracle Databaseサーバーにログインしてバンドルをインストールします。

2.2.7 Oracle Databaseサーバーでのインストール

Oracle Big Data SQLは、クラスタ管理サーバーとOracle Databaseサーバーの両方にインストールする必要があります。この項では、データベース・サーバーでのインストールについて説明します。

Oracle Databaseサーバーをインストールするための前提条件。

注意:
この項の情報は、Oracle Big Data Applianceに接続されているOracle Exadata MachineでのOracle Big Data SQLのインストールには使用できません。

Hadoopクラスタとのネットワーク接続の必要性

Oracle DatabaseサーバーはHadoopクラスタと同じサブネット上に構成する必要があります。Oracle DatabaseとHadoopクラスタの間では10Gb/sのイーサネット接続をお薦めします。

必要なソフトウェア

Oracle Big Data SQLで必要なOracle Databaseの最小のリリース・レベルおよび互換性があるLinuxプラットフォームを次に示します。

- Oracle Database 12cリリース・バージョン12.1.0.2およびOracle Real Application Cluster (RAC)。
Oracle Database January 2016バンドル・パッチ(12.1.0.2.160119)および後続の個別パッチ22778199も必要です。

- Oracle Linux 6 UEK2またはRed Hat Enterprise Linux 6

注意:
このインストールを開始する前に、正しいバンドル・パッチと個別パッチをあらかじめ適用しておいてください。現在、これよりも前のバンドル・パッチのBig Data SQL 3.0での使用はサポートされていません。

データベース・インストール・バンドルの内容の抽出

この手順での「データベース・バンドル」は、クラスタ管理サーバー上で生成したデータベース・サーバー側のBig Data SQLインストール・パッケージを意味します。前提条件で説明したバンドル・パッチのことではありません。

1. 「Hadoopクラスタ管理サーバーでのインストール」の説明に従い、クラスタ管理サーバーでデータベース・バンドル作成スクリプトを実行した後で、データベース側でのインストールを完了するために、生成されたデータベース・バンドルをOracle Databaseサーバー上の一時ディレクトリにコピーします。

2. バンドルを一時ディレクトリに解凍します。

インストール・スクリプトの実行

1. zipファイルから抽出されたbds-database-installディレクトリに移動します。

2. oracleユーザー(またはデータベース・インストール権限を持つ別のユーザー)としてbds-database-install.shを実行します

bds-database-install.shスクリプトではいくつもの構成可能なパラメータがサポートされています。たとえば、インストールの際に、このスクリプトは1つのDataNodeを調べてネットワーク・インタフェースの正しいIPアドレスを判別します。次のようにip-cellパラメータを使用して、スクリプトを実行するときに別のIPアドレスを指定できます。

$ ./bds-database-install.sh --ip-cell=10.20.30.40/24

表2-6にbds-database-install.shのパラメータの一覧を示して説明します。

表2-6 bds-database-install.shのオプション・パラメータ

パラメータ

機能

--version

プログラム・バージョンを表示します。

--info

クラスタに関する情報を表示します。

--ip-cell

db_cellプロセスに特定のIPアドレスを設定します。

--install-as-secondary

セカンダリ・クラスタのインストールを指定します。

--uninstall-as-primary

プライマリ・クラスタのOracle Big Data SQLを削除します。

--uninstall-as-secondary

セカンダリ・クラスタのOracle Big Data SQLを削除します。

--jdk-home

JDKホーム・ディレクトリを指定します。

--grid-home

グリッド・ホーム・ディレクトリを指定します。

--db-name

Oracle Database SIDを指定します。

--debug

サポートをリクエストするためにシェル・トレース・モードを有効にします。

2.2.8 Oracle Big Data SQLの削除

Oracle Big Data SQLの削除手順は準備中です。

HDP Hadoopクラスタのソフトウェアの削除

1. Ambari WebインタフェースでBig Data SQLサービスを停止します。すべてのノードのすべてのコンポーネントを停止する必要があります。

2. Ambariコマンドラインで、REST APIコールを使用してBig Data SQLサービスを削除します。

curl --user admin:admin -H 'X-Requested-By:<user>' -X DELETE http://<ambari_server_fqdn>:<rest_api_port>/api/v1/clusters/<cluster_name>/services/BIGDATASQL

3. 各DataNodeで、実行しているOracle Big Data SQLプロセスを確認して停止します。

# ps -fea | grep bds
# kill -9 <pid>

4. Ambariコマンドラインで、サービスからスタックを削除します。

# rm -rf /var/lib/ambari-server/resources/stacks/HDP/<version>/services/BIGDATASQL

5. 各DataNodeで、bd_cell RPMを削除します。

# yum remove -y bd_cell

6. すべてのDataNodeで次のディレクトリを削除します。

# rm -rf /opt/oracle/bd_cell
# rm -rf /opt/oracle/bigdatasql
# rm -rf /tmp/bigdatasql
# rm -rf /var/log/oracle

7. Ambariコマンドラインで、Ambariを再起動します。

# ambari-server restart

CDH HadoopクラスタのOracle Big Data SQLの削除

この手順は準備中です。

3 データ・アクセスのためのOracle Big Data SQLの使用

この章では、Oracle Big Data SQLを使用し、外部表を作成して、Hadoopデータ・ソースやOracle NoSQL Databaseのデータにアクセスする方法を説明します。

Oracle Databaseサーバーに対してOracle Big Data SQLが行う変更の一部についても説明します。

- HiveデータのOracle外部表の作成

- Oracle NoSQL DatabaseのOracle外部表の作成

- Apache HBaseのOracle外部表の作成

- HDFSファイルのOracle外部表の作成

- SQL CREATE TABLE文について

- データ型変換について

- 外部表の問合せ

- データベース・サーバー(Oracle Exadata Machineなど)上のOracle Big Data SQLについて

3.1 HiveデータのOracle外部表の作成

Apache Hive内のデータのOracle外部表を簡単に作成できます。Oracle Databaseはメタデータを使用できるため、Hive表に関する情報をデータ・ディクショナリに問い合せることができます。次に、PL/SQL関数を使用して、基本的なSQL CREATE TABLE EXTERNAL ORGANIZATION文を生成できます。実行前に文を変更して、外部表をカスタマイズできます。

3.1.1 Hive表に関する情報の取得

DBMS_HADOOP PL/SQLパッケージには、CREATE_EXTDDL_FOR_HIVEという名前の関数が含まれています。データ・ディクショナリ言語(DDL)を返して、Hive表にアクセスするための外部表を作成します。この関数では、Hive表に関する基本情報を指定する必要があります。

- Hadoopクラスタの名前

- Hiveデータベースの名前

- Hive表の名前

- Hive表がパーティション化されているかどうか

ALL_HIVE_TABLESデータ・ディクショナリ・ビューを問い合せることで、この情報を取得できます。Oracle DatabaseからアクセスできるすべてのHive表に関する情報が表示されます。

この例では、現在のユーザーにデフォルト・データベース内のRATINGS_HIVE_TABLEという名前のパーティション化されていないHive表へのアクセス権があることを示します。JDOEという名前のユーザーは所有者です。

SQL> SELECT cluster_id, database_name, owner, table_name, partitioned FROM all_hive_tables;
CLUSTER_ID   DATABASE_NAME  OWNER    TABLE_NAME         PARTITIONED
------------ -------------- -------- ------------------ --------------
hadoop1      default        jdoe     ratings_hive_table  UN-PARTITIONED

関連項目:

「Hiveの静的データ・ディクショナリ・ビュー」

3.1.2 CREATE_EXTDDL_FOR_HIVE関数の使用

データ・ディクショナリからの情報とともに、DBMS_HADOOPのCREATE_EXTDDL_FOR_HIVE関数を使用できます。この例では、現在のスキーマ内のRATINGS_DB_TABLEのデータベース表名を指定します。関数は、DDLoutという名前のローカル変数でCREATE TABLEコマンドのテキストを返しますが、実行はしません。

DECLARE
DDLout VARCHAR2(4000);
BEGIN
dbms_hadoop.create_extddl_for_hive(
CLUSTER_ID=>'hadoop1',
DB_NAME=>'default',
HIVE_TABLE_NAME=>'ratings_hive_table',
HIVE_PARTITION=>FALSE,
TABLE_NAME=>'ratings_db_table',
PERFORM_DDL=>FALSE,
TEXT_OF_DDL=>DDLout
);
dbms_output.put_line(DDLout);
END;
/

このプロシージャを実行すると、PUT_LINE関数はCREATE TABLEコマンドを表示します。

CREATE TABLE ratings_db_table (
c0 VARCHAR2(4000),
c1 VARCHAR2(4000),
c2 VARCHAR2(4000),
c3 VARCHAR2(4000),
c4 VARCHAR2(4000),
c5 VARCHAR2(4000),
c6 VARCHAR2(4000),
c7 VARCHAR2(4000))
ORGANIZATION EXTERNAL
(TYPE ORACLE_HIVE DEFAULT DIRECTORY DEFAULT_DIR
ACCESS PARAMETERS
(
com.oracle.bigdata.cluster=hadoop1
com.oracle.bigdata.tablename=default.ratings_hive_table
)
) PARALLEL 2 REJECT LIMIT UNLIMITED

この情報をSQLスクリプトで取得し、アクセス・パラメータを使用して、実行前に必要に応じてOracle表名、列名およびデータ型を変更できます。アクセス・パラメータを使用して日付書式マスクを指定することもできます。

ALL_HIVE_COLUMNSビューには、デフォルトの列名およびデータ型の導出方法が表示されます。この例では、Hive列の名前がC0からC7であり、Hive STRINGデータ型がVARCHAR2(4000)にマップされることを示します。

SQL> SELECT table_name, column_name, hive_column_type, oracle_column_type FROM all_hive_columns;

TABLE_NAME            COLUMN_NAME  HIVE_COLUMN_TYPE ORACLE_COLUMN_TYPE
--------------------- ------------ ---------------- ------------------
ratings_hive_table    c0           string           VARCHAR2(4000)
ratings_hive_table    c1           string           VARCHAR2(4000)
ratings_hive_table    c2           string           VARCHAR2(4000)
ratings_hive_table    c3           string           VARCHAR2(4000)
ratings_hive_table    c4           string           VARCHAR2(4000)
ratings_hive_table    c5           string           VARCHAR2(4000)
ratings_hive_table    c6           string           VARCHAR2(4000)
ratings_hive_table    c7           string           VARCHAR2(4000)

8 rows selected.

関連項目:

「DBMS_HADOOP PL/SQLパッケージ」

3.1.3 ORACLE_HIVEのCREATE TABLE文の作成

DBMS_HADOOPを使用するか、CREATE TABLE文を最初から作成するかを選択できます。どちらの場合にも、ORACLE_HIVEのデフォルトの動作を変更するように一部のアクセス・パラメータを設定する必要があります。

3.1.3.1 ORACLE_HIVEのデフォルト設定の使用

次の文は、HiveデータにアクセスするためにORDERという名前の外部表を作成します。

CREATE TABLE order (cust_num    VARCHAR2(10),
order_num   VARCHAR2(20),
description VARCHAR2(100),
order_total NUMBER (8,2))
ORGANIZATION EXTERNAL (TYPE  oracle_hive);

この文ではアクセス・パラメータが設定されていないため、ORACLE_HIVEアクセス・ドライバはデフォルト設定を使用して次の処理を実行します。

- デフォルトのHadoopクラスタに接続します。

- orderという名前のHive表を使用します。Hive表にCUST_NUM、ORDER_NUM、DESCRIPTIONおよびORDER_TOTALという名前のフィールドがない場合、エラーが発生します。

- CUST_NUM値が10バイトを超えるなど、変換エラーが発生した場合は、フィールドの値をNULLに設定します。

3.1.3.2 ORACLE_HIVEのデフォルト設定の上書き

外部表の句のACCESS PARAMETERS句でプロパティを設定できます。これにより、アクセス・ドライバのデフォルトの動作が上書きされます。次の句には、com.oracle.bigdata.overflowアクセス・パラメータが含まれています。前述の例でこの句を使用する場合、エラーをスローするのではなく、100文字を超えるDESCRIPTION列のデータが切り捨てられます。

(TYPE oracle_hive
ACCESS PARAMETERS (
com.oracle.bigdata.overflow={"action:"truncate", "col":"DESCRIPTION""} ))

次の例では、ORACLE_HIVEの使用可能なパラメータの大部分を設定します。

CREATE TABLE order (cust_num VARCHAR2(10),
order_num VARCHAR2(20),
order_date DATE,
item_cnt NUMBER,
description VARCHAR2(100),
order_total (NUMBER(8,2)) ORGANIZATION EXTERNAL
(TYPE oracle_hive
ACCESS PARAMETERS (
com.oracle.bigdata.tablename:  order_db.order_summary
com.oracle.bigdata.colmap:     {"col":"ITEM_CNT", \
"field":"order_line_item_count"}
com.oracle.bigdata.overflow:   {"action":"TRUNCATE", \
"col":"DESCRIPTION"}
com.oracle.bigdata.erroropt:   [{"action":"replace", \
"value":"INVALID_NUM" , \
"col":["CUST_NUM","ORDER_NUM"]} ,\
{"action":"reject", \
"col":"ORDER_TOTAL}
))

これらのパラメータは、ORACLE_HIVEアクセス・ドライバがデータを特定してエラー条件を処理する方法で、次の変更を行います。

- com.oracle.bigdata.tablename: 表名の違いを処理します。ORACLE_HIVEは、ORDER.DBデータベース内のORDER_SUMMARYという名前のHive表を調べます。

- com.oracle.bigdata.colmap: 列名の違いを処理します。HiveのORDER_LINE_ITEM_COUNTフィールドはOracleのITEM_CNT列にマップされます。

- com.oracle.bigdata.overflow: 文字列データを切り捨てます。DESCRIPTION列の100文字を超える値は切り捨てられます。

- com.oracle.bigdata.erroropt: 不正なデータを置換します。CUST_NUMまたはORDER_NUMのデータのエラーにより、値がINVALID_NUMに設定されます。

3.2 Oracle NoSQL DatabaseのOracle外部表の作成

ORACLE_HIVEアクセス・ドライバを使用して、Oracle NoSQL Databaseに格納されているデータにアクセスできます。ただし、KVStoreにアクセスするHive外部表を最初に作成する必要があります。次に、「HiveデータのOracle外部表の作成」に示されているプロセスのように、それに対してOracle Databaseの外部表を作成できます。

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

- Oracle NoSQL DatabaseのHive外部表の作成

- Oracle NoSQLデータのOracle Database表の作成

- 列データ型マッピングについて

- Oracle NoSQL Databaseのデータのアクセス例

3.2.1 Oracle NoSQL DatabaseのHive外部表の作成

Oracle NoSQL Databaseのデータにアクセス可能にするには、Oracle NoSQL表に対してHive外部表を作成します。Oracle Big Data SQLは、HiveによるOracle NoSQL Database表形式の読取りが可能なoracle.kv.hadoop.hive.table.TableStorageHandlerという名前のStorageHandlerを提供します。

Oracle NoSQL表に対するHive外部表のHive CREATE TABLE文の基本的な構文は次のとおりです。

CREATE EXTERNAL TABLE tablename colname coltype[, colname coltype,...]
STORED BY 'oracle.kv.hadoop.hive.table.TableStorageHandler'
TBLPROPERTIES (
"oracle.kv.kvstore" = "database",
"oracle.kv.hosts" = "nosql_node1:port[, nosql_node2:port...]",
"oracle.kv.hadoop.hosts" = "hadoop_node1[,hadoop_node2...]",
"oracle.kv.tableName" = "table_name");

Hive CREATE TABLEパラメータ

tablename

作成されるHive外部表の名前。

この表名はOracle Databaseで発行されるSQL問合せで使用されるため、ユーザーに適した名前を選択してください。Oracle Databaseで作成する外部表の名前は、このHive表の名前と同じである必要があります。

表、列およびフィールド名は、Oracle NoSQL Database、Apache HiveおよびOracle Databaseで大文字と小文字を区別しません。

colname coltype

Hive外部表の列の名前およびデータ型。Oracle NoSQL DatabaseとHive間のデータ型マッピングは、表3-1を参照してください。

Hive CREATE TABLE TBLPROPERTIES句

oracle.kv.kvstore

KVStoreの名前。大文字、小文字および数字のみが名前で有効です。

oracle.kv.hosts

Oracle NoSQL Databaseクラスタのホスト名およびポート番号のカンマ区切りリスト。各文字列では形式hostname:portを使用します。ホストで障害が発生した場合の冗長性を提供するには、複数の名前を入力します。

oracle.kv.hadoop.hosts

Oracle Big Data SQLが有効であるHadoopクラスタのすべてのホスト名のカンマ区切りリスト。

oracle.kv.tableName

このHive外部表のデータを格納するOracle NoSQL Databaseの表の名前。

関連項目:

次のApache Hive LanguageManual DDL

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Create/Drop/TruncateTable

3.2.2 Oracle NoSQLデータのOracle Database表の作成

次の構文を使用して、Hive外部表を介してOracle NoSQLデータにアクセスできるOracle Databaseの外部表を作成します。

CREATE TABLE tablename(colname colType[, colname colType...])
ORGANIZATION EXTERNAL
(TYPE ORACLE_HIVE DEFAULT DIRECTORY directory
ACCESS PARAMETERS
(access parameters)
)
REJECT LIMIT UNLIMITED;

この構文では、列名およびデータ型を識別します。この構文の詳細は、「SQL CREATE TABLE文について」を参照してください。

3.2.3 列データ型マッピングについて

Oracle Big Data SQLがOracle NoSQL Databaseからデータを取得する場合、データが次の別のデータ型に2回変換されます。

- データがHive外部表の列に読み込まれる場合にHiveデータ型。

- データがOracle Database外部表の列に読み込まれる場合にOracleデータ型。

表3-1に、サポートされているOracle NoSQLデータ型およびHiveとOracle Databaseデータ型のマッピングを示します。Oracle Big Data SQLは、Oracle NoSQL複合データ型の配列、マップおよびレコードをサポートしません。

表3-1 Oracle NoSQL Databaseのデータ型マッピング

Oracle NoSQL Databaseデータ型

Apache Hiveデータ型

Oracle Databaseデータ型

文字列

STRING

VARCHAR2

Boolean

BOOLEAN

NUMBER[1]

Integer

INT

NUMBER

Long

INT

NUMBER

Double

DOUBLE

NUMBER(p,s)

Float

FLOAT

NUMBER(p,s)

3.2.4 Oracle NoSQL Databaseのデータのアクセス例

この例は、Oracle NoSQL Databaseソフトウェアで用意されているサンプル・データを使用します。

- Oracle NoSQL Database表の例の作成

- vehicleTableのHive表の例の作成

- VEHICLESのOracle表の作成

3.2.4.1 Oracle NoSQL Database表の例の作成

次のファイルがexamples/hadoop/tableディレクトリにあることを確認します。

create_vehicle_table.kvs
CountTableRows.java
LoadVehicleTable.java

この例は、some1node07という名前のHadoopクラスタ・ノードで実行し、SOME1KVという名前のKVStoreを使用します。

Oracle NoSQL Databaseのサンプルの表を作成して移入するには、次の手順を実行します。

1. HadoopクラスタでOracle NoSQL Databaseノードへの接続を開きます。

2. vehicleTableという名前の表を作成します。次の例は、loadコマンドを使用して、create_vehicle_table.kvsのコマンドを実行します。

$ cd NOSQL_HOME
$ java -jar lib/kvcli.jar -host some1node07 -port 5000 \
load -file examples/hadoop/table/create_vehicle_table.kvs

3. LoadVehicleTable.javaをコンパイルします。

$ javac -cp examples:lib/kvclient.jar examples/hadoop/table/LoadVehicleTable.java

4. LoadVehicleTableクラスを実行して、表に移入します。

$ java -cp examples:lib/kvclient.jar hadoop.table.LoadVehicleTable -host some1node07 -port 5000 -store SOME1KV
{"type":"auto","make":"Chrysler","model":"PTCruiser","class":"4WheelDrive","colo
r":"white","price":20743.240234375,"count":30}
{"type":"suv","make":"Ford","model":"Escape","class":"FrontWheelDrive","color":"
.
.
.
10 new records added

vehicleTable表には、次のフィールドが含まれています。

フィールド名

データ型

type

STRING

Make

STRING

model

STRING

クラス

STRING

color

STRING

price

DOUBLE

count

INTEGER

3.2.4.2 vehicleTableのHive表の例の作成

次の例では、SOME1KV KVStoreのvehicleTableにアクセスするVEHICLESという名前のHive表を作成します。この例のシステムは、最初の6つのサーバー(some1node01からsome1node06)のHadoopクラスタと次の3つのサーバー(some1node07からsome1node09)のOracle NoSQL Databaseクラスタで構成されます。

CREATE EXTERNAL TABLE IF NOT EXISTS vehicles
(type STRING,
make STRING,
model STRING,
class STRING,
color STRING,
price DOUBLE,
count INT)
COMMENT 'Accesses data in vehicleTable in the SOME1KV KVStore'
STORED BY 'oracle.kv.hadoop.hive.table.TableStorageHandler'
TBLPROPERTIES
("oracle.kv.kvstore" = "SOME1KV",
"oracle.kv.hosts" = "some1node07.example.com:5000,some1node08.example.com:5000",
"oracle.kv.hadoop.hosts" = "some1node01.example.com,some1node02.example.com,some1node03.example.com,some1node04.example.com,some1node05.example.com,some1node06.example.com",
"oracle.kv.tableName" = "vehicleTable");

DESCRIBEコマンドは、VEHICLES表の列をリストします。

hive> DESCRIBE vehicles;
OK
type                    string                  from deserializer
make                    string                  from deserializer
model                   string                  from deserializer
class                   string                  from deserializer
color                   string                  from deserializer
price                   double                  from deserializer
count                   int                     from deserializer

Hive VEHICLES表に対する問合せは、Oracle NoSQL vehicleTable表のデータを返します。

hive> SELECT make, model, class
FROM vehicletable
WHERE type='truck' AND color='red'
ORDER BY make, model;
Total MapReduce jobs = 1
Launching Job 1 out of 1
Number of reduce tasks determined at compile time: 1
.
.
.
Chrysler       Ram1500         RearWheelDrive
Chrysler       Ram2500         FrontWheelDrive
Ford           F150            FrontWheelDrive
Ford           F250            RearWheelDrive
Ford           F250            AllWheelDrive
Ford           F350            RearWheelDrive
GM             Sierra          AllWheelDrive
GM             Silverado1500   RearWheelDrive
GM             Silverado1500   AllWheelDrive

3.2.4.3 VEHICLESのOracle表の作成

Hive表を作成した後、メタデータをOracle Database静的データ・ディクショナリ・ビューで使用できます。次のSQL SELECT文は、前のトピックで作成されたHive表の情報を返します。

SQL> SELECT table_name, column_name, hive_column_type
FROM all_hive_columns
WHERE table_name='vehicles';
TABLE_NAME      COLUMN_NAME  HIVE_COLUMN_TYPE
--------------- ------------ ----------------
vehicles        type         string
vehicles        make         string
vehicles        model        string
vehicles        class        string
vehicles        color        string
vehicles        price        double
vehicles        count        int

次のSQL CREATE TABLE文は、ORACLE_HIVEアクセス・ドライバを使用して、Hive VEHICLES表に対するVEHICLESという名前の外部表を生成します。Oracle Databaseの表の名前は、Hiveの表の名前と同じである必要があります。ただし、Oracle NoSQL DatabaseおよびOracle Databaseは、大文字と小文字を区別しません。

CREATE TABLE vehicles
(type  VARCHAR2(10), make  VARCHAR2(12), model VARCHAR2(20),
class VARCHAR2(40), color VARCHAR2(20), price NUMBER(8,2),
count NUMBER)
ORGANIZATION EXTERNAL
(TYPE ORACLE_HIVE DEFAULT DIRECTORY DEFAULT_DIR
ACCESS PARAMETERS
(com.oracle.bigdata.debug=true com.oracle.bigdata.log.opt=normal))
REJECT LIMIT UNLIMITED;

このSQL SELECT文は、Oracle NoSQL DatabaseのvehicleTableから赤いトラックのすべての行を取得します。

SQL> SELECT make, model, class
FROM vehicles
WHERE type='truck' AND color='red'
ORDER BY make, model;
MAKE         MODEL                CLASS
------------ -------------------- ---------------------
Chrysler     Ram1500              RearWheelDrive
Chrysler     Ram2500              FrontWheelDrive
Ford         F150                 FrontWheelDrive
Ford         F250                 AllWheelDrive
Ford         F250                 RearWheelDrive
Ford         F350                 RearWheelDrive
GM           Sierra               AllWheelDrive
GM           Silverado1500        RearWheelDrive
GM           Silverado1500        4WheelDrive
GM           Silverado1500        AllWheelDrive

3.3 Apache HBaseのOracle外部表の作成

ORACLE_HIVEアクセス・ドライバを使用して、Apache HBaseに格納されているデータにアクセスすることもできます。ただし、最初にHBase表にアクセスするHive外部表を作成する必要があります。次に、それに対してOracle Databaseの外部表を作成できます。基本的な手順は、「Oracle NoSQL DatabaseのOracle外部表の作成」で説明されているものと同じです。

3.3.1 HBaseのHive外部表の作成

HBase表のデータにアクセス可能にするには、それに対してHive外部表を作成します。Apacheは、ストレージ・ハンドラおよびHiveによるHBase表形式の読取りが可能なSerDeを提供します。

HBase表に対する外部表のHive CREATE TABLE文の基本的な構文は、次のとおりです。

CREATE EXTERNAL TABLE tablename colname coltype[, colname coltype,...]
ROW FORMAT
SERDE 'org.apache.hadoop.hive.hbase.HBaseSerDe'
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES (
'serialization.format'='1',
'hbase.columns.mapping'=':key,value:key,value:

関連項目:

- 次のApache Hive LanguageManual DDL
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Create/Drop/TruncateTable

- 次のHive HBaseIntegration
https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration#HBaseIntegration-StorageHandlers

- 次のHive APIリファレンスのClass HBaseSerDe
http://hive.apache.org/javadocs/r0.13.1/api/hbase-handler/index.html

3.3.2 HBaseのOracle Database表の作成

次の構文を使用して、Hive外部表を介してHBaseデータにアクセスできるOracle Databaseの外部表を作成します。

CREATE TABLE tablename(colname colType[, colname colType...])
ORGANIZATION EXTERNAL
(TYPE ORACLE_HIVE DEFAULT DIRECTORY DEFAULT_DIR
ACCESS PARAMETERS
(access parameters)
)
REJECT LIMIT UNLIMITED;

この構文では、列名およびデータ型を識別します。アクセス・パラメータを指定するには、「SQL CREATE TABLE文について」を参照してください。

3.4 HDFSファイルのOracle外部表の作成

ORACLE_HDFSアクセス・ドライバを使用すると、HDFSに格納されている様々なタイプのデータにアクセスできますが、HDFSにはHiveメタデータはありません。テキスト・データのレコード形式を定義することも、特定のデータ形式のSerDeを指定することもできます。

HDFSファイルの外部表を手動で作成し、データを特定するためにアクセス・ドライバが必要とするすべての情報を提供して、レコードおよびフィールドを解析する必要があります。CREATE TABLE ORGANIZATION EXTERNAL文のいくつかの例を次に示します。

3.4.1 デフォルトのアクセス・パラメータとORACLE_HDFSの使用

次の文は、ORDERという名前の文を作成して、HDFSの/usr/cust/summaryディレクトリに格納されているすべてのファイル内のデータにアクセスします。

CREATE TABLE ORDER (cust_num VARCHAR2(10),
order_num VARCHAR2(20),
order_total NUMBER (8,2))
ORGANIZATION EXTERNAL
( TYPE oracle_hdfs
DEFAULT DIRECTORY DEFAULT_DIR
)
LOCATION ('hdfs:/usr/cust/summary/*');

この文ではアクセス・パラメータが設定されていないため、ORACLE_HDFSアクセス・ドライバはデフォルト設定を使用して次の処理を実行します。

- デフォルトのHadoopクラスタに接続します。

- ファイルをデリミタ付きテキスト、フィールドをSTRINGタイプとして読み取ります。

- HDFSファイル内のフィールドの数は、列の数と一致すると仮定します(この例では3)。

- CUST_NUMデータが第1フィールド、ORDER_NUMデータが第2フィールド、ORDER_TOTALデータが第3フィールドになるように、フィールドは列と同じ順序であることを前提とします。

- 値によってデータ変換エラーが発生するレコードを拒否します。CUST_NUMの値が10文字を超える場合、ORDER_NUMの値が20文字を超える場合、またはORDER_TOTALの値がNUMBERに変換できない場合です。

3.4.2 ORACLE_HDFSのデフォルト設定の上書き

ORACLE_HDFSでも、ORACLE_HIVEと同じアクセス・パラメータの多くを使用できます。

3.4.2.1 デリミタ付きテキスト・ファイルへのアクセス

次の例は、「ORACLE_HIVEのデフォルト設定の上書き」に示した例に相当します。外部表は、HDFSに格納されているデリミタ付きテキスト・ファイルにアクセスします。

CREATE TABLE order (cust_num VARCHAR2(10),
order_num VARCHAR2(20),
order_date DATE,
item_cnt NUMBER,
description VARCHAR2(100),
order_total NUMBER(8,2))
ORGANIZATION EXTERNAL
(
TYPE oracle_hdfs
DEFAULT DIRECTORY DEFAULT_DIR
ACCESS PARAMETERS
(
com.oracle.bigdata.colmap: {"col":"item_cnt", "field":"order_line_item_count"}
com.oracle.bigdata.overflow: {"action":"TRUNCATE", "col":"DESCRIPTION"}
com.oracle.bigdata.erroropt: [{"action":"replace", \
"value":"INVALID NUM", \
"col":["CUST_NUM","ORDER_NUM"]} , \
{"action":"reject", "col":"ORDER_TOTAL}]
)
LOCATION ('hdfs:/usr/cust/summary/*'));

これらのパラメータは、ORACLE_HDFSアクセス・ドライバがデータを特定してエラー条件を処理する方法で、次の変更を行います。

- com.oracle.bigdata.colmap: 列名の違いを処理します。HDFSファイル内のORDER_LINE_ITEM_COUNTは、外部表のITEM_CNT列と一致します。

- com.oracle.bigdata.overflow: 文字列データを切り捨てます。DESCRIPTION列の100文字を超える値は切り捨てられます。

- com.oracle.bigdata.erroropt: 不正なデータを置換します。CUST_NUMまたはORDER_NUMのデータのエラーにより、値がINVALID_NUMに設定されます。

3.4.2.2 Avroコンテナ・ファイルへのアクセス

次の例では、SerDeを使用してAvroコンテナ・ファイルにアクセスします。

CREATE TABLE order (cust_num VARCHAR2(10),
order_num VARCHAR2(20),
order_date DATE,
item_cnt NUMBER,
description VARCHAR2(100),
order_total NUMBER(8,2))
ORGANIZATION EXTERNAL
(
TYPE oracle_hdfs
DEFAULT DIRECTORY DEFAULT_DIR
ACCESS PARAMETERS (
com.oracle.bigdata.rowformat: \
SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
com.oracle.bigdata.fileformat: \
INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'\
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
com.oracle.bigdata.colmap: {  "col":"item_cnt", \
"field":"order_line_item_count"}
com.oracle.bigdata.overflow: {"action":"TRUNCATE", \
"col":"DESCRIPTION"}
)
LOCATION ('hdfs:/usr/cust/summary/*'));

アクセス・パラメータは、次の情報をORACLE_HDFSアクセス・ドライバうに提供します。

- com.oracle.bigdata.rowformat: アクセス・ドライバがレコードおよびフィールドを解析するために使用する必要があるSerDeを識別します。ファイルはデリミタ付きテキスト形式ではありません。

- com.oracle.bigdata.fileformat: レコードを抽出し、それらを目的の形式で出力できるJavaクラスを識別します。

- com.oracle.bigdata.colmap: 列名の違いを処理します。ORACLE_HDFSは、外部表のITEM_CNT列を持つHDFSファイル内のORDER_LINE_ITEM_COUNTと一致します。

- com.oracle.bigdata.overflow: 文字列データを切り捨てます。DESCRIPTION列の100文字を超える値は切り捨てられます。

3.5 SQL CREATE TABLE文について

SQLのCREATE TABLE文には、外部表の作成に特化した句があります。この句に指定する情報により、アクセス・ドライバは外部ソースからデータを読み取り、そのデータを外部表用に準備できます。

3.5.1 基本的な構文

次に外部表のCREATE TABLE文の基本的な構文を示します。

CREATE TABLE table_name (column_name datatype,
column_name datatype[,...])
ORGANIZATION EXTERNAL (external_table_clause);

他の表と同様に、列名およびデータ型を指定します。ORGANIZATION EXTERNALは、表を外部表として識別します。

external_table_clauseはアクセス・ドライバを識別し、データのロードに必要な情報を提供します。「外部表の句について」を参照してください。

3.5.2 外部表の句について

CREATE TABLE ORGANIZATION EXTERNALは、引数としてexternal_table_clauseを取ります。次の従属句があります。

- TYPE句

- DEFAULT DIRECTORY句

- LOCATION句

- REJECT LIMIT句

- ORACLE_HIVEアクセス・パラメータ

関連項目:

external_table_clauseの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

3.5.2.1 TYPE句

TYPE句はアクセス・ドライバを識別します。アクセス・ドライバのタイプによって、外部表定義の他の部分がどのように解釈されるかが決まります。

Oracle Big Data SQLに次の値のいずれかを指定します。

- ORACLE_HDFS: HDFSディレクトリ内のファイルにアクセスします。

- ORACLE_HIVE: Hive表にアクセスします。

注意:

ORACLE_DATAPUMPおよびORACLE_LOADERアクセス・ドライバは、Oracle Big Data SQLには関連付けられません。

3.5.2.2 DEFAULT DIRECTORY句

DEFAULT DIRECTORY句はOracle Databaseディレクトリ・オブジェクトを識別します。ディレクトリ・オブジェクトは、外部表が読取りおよび書込みを行うファイルを含むオペレーティング・システム・ディレクトリを識別します。

ORACLE_HDFSおよびORACLE_HIVEはデフォルト・ディレクトリのみを使用して、Oracle Databaseシステムにログ・ファイルを書き込みます。

3.5.2.3 LOCATION句

LOCATION句はデータ・ソースを識別します。

3.5.2.4 ORACLE_HDFS LOCATION句

ORACLE_HDFSのLOCATION句には、ファイルの場所のコンマ区切りのリストが含まれます。ファイルは、デフォルト・クラスタ上のHDFSファイル・システムに存在する必要があります。

場所は次のいずれかになります。

- 完全修飾HDFS名(/user/hive/warehouse/hive_seed/hive_typesなど)。ORACLE_HDFSはディレクトリ内のすべてのファイルを使用します。

- 完全修飾HDFSファイル名(/user/hive/warehouse/hive_seed/hive_types/hive_types.csvなど)。

- HDFSファイルまたはファイルのセットのURL (hdfs:/user/hive/warehouse/hive_seed/hive_types/*など)。ディレクトリ名のみは無効です。

ファイル名には、表3-2 に説明されているパターン一致文字を含めることができます。

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

文字

説明

?

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

*

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

[abc]

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

[a-b]

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

[^a]

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

\c

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

{ab\,cd}

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

{ab\,c{de\,fh}

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

3.5.2.5 ORACLE_HIVE LOCATION句

ORACLE_HIVEにLOCATION句を指定しないでください。指定すると、エラーが発生します。データはHiveに格納され、アクセス・パラメータおよびメタデータ・ストアは必要な情報を提供します。

3.5.2.6 REJECT LIMIT句

Oracle Databaseが問合せを停止し、エラーを返すまで、外部表の問合せ中に許可される変換エラーの数を制限します。

行が拒否される処理エラーは、制限に対してカウントされます。拒否制限は、各並列問合せ(PQ)プロセスに個別に適用されます。すべてのPQプロセスについて、拒否されたすべての行の合計ではありません。

3.5.2.7 ACCESS PARAMETERS句

ACCESS PARAMETERS句は、アクセス・ドライバがデータを外部表に正しくロードするために必要な情報を提供します。「CREATE TABLE ACCESS PARAMETERS句」を参照してください。

3.6 データ型変換について

アクセス・ドライバは、データを外部表にロードする際に、Hiveデータをターゲット列のデータ型に変換できることを確認します。互換性がない場合、アクセス・ドライバはエラーを返します。それ以外の場合は、適切なデータ変換を行います。

通常、Hiveは他の場所(HDFSファイル内など)に格納されているデータに表抽象化レイヤーを提供します。Hiveはシリアライザ/デシリアライザ(SerDe)を使用して、必要に応じてデータを格納されている形式からHiveデータ型に変換します。その後、アクセス・ドライバはHiveデータ型からOracleデータ型にデータを変換します。たとえば、テキスト・ファイルに対するHive表にBIGINT列がある場合、SerDeはデータをテキストからBIGINTに変換します。その後、アクセス・ドライバはデータをBIGINT (Hiveデータ型)からNUMBER (Oracleデータ型)に変換します。

2つではなく1つのデータ型変換を実行する場合、パフォーマンスが向上します。したがって、HDFSファイル内のフィールドのデータ型は、ディスク上に実際に格納されているデータを示す必要があります。たとえば、JSONはクリア・テキスト形式であるため、JSONファイル内のデータはすべてテキストです。フィールドのHiveタイプがDATEの場合、SerDeはデータを文字列(データ・ファイル内)からHive日付に変換します。その後、アクセス・ドライバはデータをHive日付からOracle日付に変換します。ただし、フィールドのHiveタイプが文字列の場合、SerDeは変換を実行せず、アクセス・ドライバはデータを文字列からOracle日付に変換します。2番目の例では、外部表に対する問合せはより速くなります。これは、アクセス・ドライバがデータ変換のみを実行するためです。

表3-3は、データを外部表にロードするときにORACLE_HIVEが実行できるデータ型変換を示します。

表3-3 サポートされているHiveデータ型からOracleデータ型への変換

Hiveデータ型

VARCHAR2、CHAR、NCHAR2、NCHAR、CLOB

NUMBER、FLOAT、BINARY_NUMBER、BINARY_FLOAT

BLOB

RAW

DATE、TIMESTAMP、TIMESTAMP WITH TZ、TIMESTAMP WITH LOCAL TZ

INTERVAL YEAR TO MONTH、INTERVAL DAY TO SECOND

INT

SMALLINT

TINYINT

BIGINT

はい

はい

はい

はい

いいえ

いいえ

DOUBLE

FLOAT

はい

はい

はい

はい

いいえ

いいえ

DECIMAL

はい

はい

いいえ

いいえ

いいえ

いいえ

BOOLEAN

はい[2]

はい

はい[3]

はい

いいえ

いいえ

BINARY

はい

いいえ

はい

はい

いいえ

いいえ

STRING

はい

はい

はい

はい

はい

はい

TIMESTAMP

はい

いいえ

いいえ

いいえ

はい

いいえ

STRUCT

ARRAY

UNIONTYPE

MAP

はい

いいえ

いいえ

いいえ

いいえ

いいえ

3.7 外部表の問合せ

ユーザーは、他の表を問い合せる場合と同じように、SQL SELECT文を使用して外部表を問い合せることができます。

3.7.1 ユーザー・アクセス権の付与

Hadoopクラスタ上のデータを問い合せるユーザーには、外部表、およびクラスタ・ディレクトリを指すデータベース・ディレクトリ・オブジェクトへのOracle Database内のREADアクセス権が必要です。「クラスタ・ディレクトリについて」を参照してください。

3.7.2 エラー処理の概要

デフォルトでは、列の値を計算しているときにエラーが発生した場合、問合せはデータを返しません。ほとんどのエラー(特に、列の値を計算中にスローされたエラー)の後も処理は続行します。

エラーの処理方法を決定するには、com.oracle.bigdata.erroroptパラメータを使用します。

3.7.3 ログ・ファイルについて

次のアクセス・パラメータを使用すると、ログ・ファイルをカスタマイズできます。

- com.oracle.bigdata.log.exec

- com.oracle.bigdata.log.qc

3.8 データベース・サーバー(Oracle Exadata Machineなど)上のOracle Big Data SQLについて

この項では、Oracle Big Data SQLインストールによってOracle Databaseシステム(Oracle Exadata Machineなど)に加えられる変更について説明します。

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

- 共通ディレクトリについて

- 一般的な構成プロパティ

- クラスタ・ディレクトリについて

3.8.1 共通ディレクトリについて

commonディレクトリには、すべてのHadoopクラスタに共通の構成情報が含まれています。このディレクトリは、Oracle DatabaseシステムのOracle homeディレクトリの下にあります。oracleファイル・システムのユーザー(またはOracle Databaseインスタンスを所有するユーザー)は、共通ディレクトリを所有します。ORACLE_BIGDATA_CONFIGという名前のデータベース・ディレクトリはcommonを指します。

3.8.2 一般的な構成プロパティ

インストールによって、次のファイルは/home/oracle内のcommonディレクトリに格納されます。

- bigdata.properties

- bigdata-log4j.properties

Oracle DBAは、必要に応じてこれらの構成ファイルを編集できます。

3.8.2.1 bigdata.properties

共通ディレクトリ内の bigdata.propertiesファイルには、HDFS内のデータにアクセスするために必要なJavaクラス・パスおよびネイティブ・ライブラリ・パスを定義するプロパティ/値のペアが含まれています。

次のプロパティを設定する必要があります。

- bigdata.cluster.default

- java.classpath.hadoop

- java.classpath.hive

- java.classpath.oracle

次のリストで、bigdata.propertiesで許可されているすべてのプロパティを説明します。

bigdata.properties

bigdata.cluster.default

デフォルトのHadoopクラスタの名前。アクセス・パラメータがクラスタを指定しない場合、アクセス・ドライバはこの名前を使用します。必須。

デフォルトのクラスタ名を変更すると、明示的なクラスタ名なしで以前に作成された外部表が使用できなくなる可能性があります。

bigdata.cluster.list

Hadoopクラスタ名のコンマ区切りのリスト。オプション。

java.classpath.hadoop

Hadoopクラス・パス。必須。

java.classpath.hive

Hiveクラス・パス。必須。

java.classpath.oracle

Oracle JXAD Java JARファイルへのパス。必須。

java.classpath.user

ユーザーJARファイルへのパス。オプション。

java.libjvm.file

JVM共有ライブラリ(libjvm.soなど)への完全なファイル・パス。必須。

java.options

JVMに渡されるオプションのコンマ区切りのリスト。オプション。

この例では、最大ヒープ・サイズを2GBに設定し、Java Native Interface (JNI)呼出しの詳細なロギングを設定します。

Xmx2048m,-verbose=jni

LD_LIBRARY_PATH

Hadoopネイティブ・ライブラリを検索するためのディレクトリ・パスのコロン区切りの(:)リスト。推奨。

このオプションを設定した場合は、java.optionsでjava.libraryパスを設定しないでください。

例3-1 は、サンプルのbigdata.propertiesファイルを示します。

例3-1 サンプルのbigdata.propertiesファイル

# bigdata.properties
#
# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
#
#    NAME
#      bigdata.properties - Big Data Properties File
#
#    DESCRIPTION
#      Properties file containing parameters for allowing access to Big Data
#      Fixed value properties can be added here
#

java.libjvm.file=$ORACLE_HOME/jdk/jre/lib/amd64/server/libjvm.so
java.classpath.oracle=$ORACLE_HOME/hadoopcore/jlib/*:$ORACLE_HOME/hadoop/jlib/hver-2/*:$ORACLE_HOME/dbjava/lib/*
java.classpath.hadoop=$HADOOP_HOME/*:$HADOOP_HOME/lib/*
java.classpath.hive=$HIVE_HOME/lib/*
LD_LIBRARY_PATH=$ORACLE_HOME/jdk/jre/lib
bigdata.cluster.default=hadoop_cl_1

3.8.2.2 bigdata-log4j.properties

共通ディレクトリのbigdata-log4j.propertiesファイルは、外部表に対する問合せのロギング動作をJavaコードで定義します。このファイルでは、すべてのlog4jプロパティを使用できます。

例3-2 は、サンプルのbigdata-log4j.propertiesファイルと関連するlog4jプロパティを示します。

例3-2 サンプルのbigdata-log4j.propertiesファイル

# bigdata-log4j.properties
#
# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
#
#    NAME
#      bigdata-log4j.properties - Big Data Logging Properties File
#
#    DESCRIPTION
#      Properties file containing logging parameters for Big Data
#      Fixed value properties can be added here

bigsql.rootlogger=INFO,console
log4j.rootlogger=DEBUG, file
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
log4j.logger.oracle.hadoop.sql=ALL, file

bigsql.log.dir=.
bigsql.log.file=bigsql.log
log4j.appender.file.File=$ORACLE_HOME/bigdatalogs/bigdata-log4j.log

関連項目:

Apacheロギング・サービスのドキュメントの場所:

http://logging.apache.org/log4j/1.2/manual.html

3.8.3 クラスタ・ディレクトリについて

クラスタ・ディレクトリには、Hadoopクラスタの構成情報が含まれています。Oracle DatabaseがOracle Big Data SQLを使用してアクセスする各クラスタにクラスタ・ディレクトリがあります。このディレクトリは、Oracle Databaseシステムの共通ディレクトリの下にあります。たとえば、bda1_cl_1という名前のクラスタには、共通ディレクトリに同じ名前(bda1_cl_1)のディレクトリがあります。

クラスタ・ディレクトリには、次のようなクラスタにアクセスするためのクライアント構成ファイルが含まれています。

- core-site.xml

- hdfs-site.xml

- hive-site.xml

- mapred-site.xml (オプション)

- log4jプロパティ・ファイル(hive-log4j.propertiesなど)

データベース・ディレクトリ・オブジェクトはクラスタ・ディレクトリを指します。クラスタ内のデータにアクセスするユーザーには、ディレクトリ・オブジェクトの読取りアクセス権が必要です。

3.8.4 権限について

- Oracle Databaseサーバーで、oracleユーザー(またはOracle Databaseインストール・ディレクトリを所有するユーザー)には、データベース・ディレクトリ(ログ・ディレクトリを指す)に対するREAD/WRITEアクセス権が必要です。

- 対応するoracleユーザーをHadoopクラスタにも定義する必要があります。oracleユーザーは、クラスタ内のすべてのDataNode上のHDFSに対するREADアクセス権が必要です。

[1]
falseの場合には0、trueの場合には1

[2]
FALSEは文字列FALSEにマップされ、TRUEは文字列TRUEにマップされます。

3
FALSEは0にマップされ、TRUEは1にマップされます。

4 HadoopへのOracle表のコピー

この章では、Oracleデータベースの表をHadoopにコピーするためにCopy to Hadoopを使用する方法について説明します。内容は次のとおりです。

- Copy to Hadoopとは

- Copy to Hadoopの使用の概要

- Copy to Hadoopのインストール

- データ・ポンプ・ファイルの生成

- Hive表の作成

- サンプル・スキーマの使用例

4.1 Copy to Hadoopとは

Copy to Hadoopを使用すると、OracleデータベースからHadoopに表をコピーできます。表からデータ・ポンプ形式ファイルを生成してファイルをHDFSにコピーした後、Apache Hiveを使用してデータを問い合せることができます。Hiveは、Oracle Databaseにアクセスせずにローカルにデータを処理できます。Oracle表が変更されると、Hadoopのコピーをリフレッシュできます。Copy to Hadoopは、比較的静的であり、頻繁にリフレッシュする必要がないOracle表に主に役立ちます。

Copy to Hadoopは、Oracle Big Data SQLでライセンス供与されます。Copy to Hadoopを使用するには、Oracle Big Data SQLライセンスが必要です。

4.2 Copy to Hadoopの使用の概要

Copy to Hadoopを使用するには、次の手順を実行します。

1. システムが前提条件を満たしていることを確認し、必要なソフトウェアがHadoopクラスタ(Oracle Big Data Applianceまたは別のHadoopシステム)およびOracle Databaseサーバー(Oracle Exadata Database Machineなど)の両方にインストールされていることを確認します。

「Copy to Hadoopのインストール」を参照してください。

2. Oracle Databaseサーバーで、Oracle Databaseに接続し、表データおよびメタデータを含むデータ・ポンプ形式ファイルを生成します。

「データ・ポンプ・ファイルの生成」を参照してください。

3. ファイルをHadoopクラスタ上のHDFSにコピーします。

「HDFSへのファイルのコピー」を参照してください。

4. Apache Hiveに接続して、ファイルから外部表を作成します。

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

5. 他のHive表と同じように、このHive表に問い合せます。

4.3 Copy to Hadoopのインストール

Oracle Big Data SQLがインストールされている場合は、Hadoopクラスタに接続しているOracle Databaseサーバー上でCopy to Hadoopを使用できます。

4.3.1 Copy to Hadoopの前提条件

ネットワーク接続、サポートされるOracle Databaseレベルおよび他の要件については、「Oracle Big Data SQLのインストール」で、ご使用のプラットフォームにOracle Big Data SQLをインストールするための一般的な要件を確認してください。

4.3.2 Oracle Big Data Appliance/Oracle Exadata Database Machine環境でのCopy to Hadoopのインストール

Oracle Big Data SQLがインストールされている場合は、Oracle Big Data Applianceに接続しているOracle Exadata Database Machine上でCopy to Hadoopを使用できます。

4.3.2.1 Oracle Big Data ApplianceでのCopy to Hadoopのインストール

Copy to Hadoopは、Oracle Big Data Appliance上のインストール・オプションであるOracle Big Data SQLのコンポーネントです。ソフトウェアの初期インストール時またはその後で、Oracle Big Data SQLによってサービスを有効化および無効化するための標準的な方法を使用して有効化できます。「インストールの実行」を参照してください。

4.3.2.2 Oracle Exadata Database MachineでのCopy to Hadoopのインストール

Copy to Hadoopは、Oracle Exadata Database MachineのHadoopクライアントのみ必要です。Oracle Big Data SQLで必要な追加のソフトウェアは使用しません。

Oracle Big Data SQLを使用する場合、bds-exa-install.shインストール・スクリプトを実行するとHadoopクライアントが自動的に作成されます。このケースでは、追加の手順を実行する必要はありません。「Oracle Big Data SQLのインストール後スクリプトの実行」を参照してください。

この時点でOracle Big Data SQLを使用しない場合、スクリプトを実行するかわりにHadoopクライアントを手動でインストールできます。

4.3.3 他のシステムでのCopy to Hadoopのインストール

Oracle Big Data SQLがインストールされている場合は、Hadoopクラスタに接続しているOracle Databaseサーバー上でCopy to Hadoopを使用できます。

4.3.3.1 Hadoopクラスタ(Oracle Big Data Database Applianceクラスタ以外)でのCopy to Hadoopのインストール

Copy to Hadoopは、Oracle Big Data SQLのコンポーネントです。Oracle Big Data SQLをインストールした後で追加の手順が必要です。これらの手順は発行されたドキュメントとしてはまだ提供されていません。Oracleサポートに問い合せてください。

4.3.3.2 Oracle Databaseサーバー(Oracle Exadata Database Machine以外)でのCopy to Hadoopのインストール

Copy to Hadoopを使用するには、Oracle Big Data SQLをインストールした後で追加の構成手順が必要です。これらの手順は発行されたドキュメントとしてはまだ提供されていません。Oracleサポートに問い合せてください。

4.4 データ・ポンプ・ファイルの生成

SQL CREATE TABLE文には、ORACLE_DATAPUMPアクセス・ドライバを指定する外部表を作成するための特別な句があります。この句に指定される情報により、アクセス・ドライバがOracleデータベース表のデータおよびメタデータを含むデータ・ポンプ形式ファイルを生成できます。

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

- データ・ポンプ形式ファイルについて

- ターゲット・ディレクトリの識別

- CREATE TABLE構文について

- HDFSへのファイルのコピー

4.4.1 データ・ポンプ形式ファイルについて

データ・ポンプ・ファイルは通常、あるデータベースから別のデータベースにデータおよびメタデータを移動するために使用されます。Copy to Hadoopは、このファイル形式を使用して、OracleデータベースからHDFSにデータをコピーします。

データ・ポンプ形式ファイルを生成するには、既存のOracle表から外部表を作成します。Oracle Databaseの外部表は、データベース外のデータの場所を識別および記述するOracle Databaseオブジェクトです。外部表は、アクセス・ドライバを使用して、データを解析および形式設定します。Copy to Hadoopでは、ORACLE_DATAPUMPアクセス・ドライバを使用します。内部Oracle表からデータおよびメタデータをコピーして、外部表のデータ・ポンプ形式ファイルを移入します。

4.4.2 ターゲット・ディレクトリの識別

Oracle Databaseのデータベース・ディレクトリへの読取りおよび書込みアクセスが必要です。CREATE ANY DIRECTORYシステム権限を持つOracle Databaseユーザーのみディレクトリを作成できます。

この例は、Oracle Databaseサーバー(Oracle Exadata Database Machineなど)の/exportdirディレクトリを指すEXPORTDIRという名前のデータベース・ディレクトリを作成します。

SQL> CREATE DIRECTORY exportdir AS '/exportdir';

4.4.3 CREATE TABLE構文について

データ・ポンプ形式ファイルのCREATE TABLE文の基本的な構文は次のとおりです。

CREATE TABLE table_name
ORGANIZATION EXTERNAL (
TYPE oracle_datapump
DEFAULT DIRECTORY database_directory
LOCATION ('filename1.dmp','filename2.dmp'...)
) PARALLEL n
AS SELECT * FROM tablename;

DEFAULT DIRECTORY

この目的のために作成したデータベース・ディレクトリを識別します。「ターゲット・ディレクトリの識別」を参照してください。

LOCATION

作成するデータ・ポンプ・ファイルの名前をリストします。名前の数は、PARALLEL句で指定される並列度(DOP)と一致する必要があります。それ以外の場合、DOPはファイルの数に削減されます。

ファイルの数および並列度は、データ・ポンプ形式ファイルを生成する場合にOracle Databaseのパフォーマンスに影響します。Hiveの問合せパフォーマンスには影響しません。

PARALLEL

並列度(DOP)を設定します。Oracle DBAが使用を許可する最大数を使用します。デフォルトのDOPはシリアル処理の1です。大きい数値を使用すると並列処理が可能です。

AS SELECT

この句の完全なSQL SELECT構文を使用します。制限されていません。tablenameは、HDFSにコピーするOracle表を識別します。

関連項目:

これらのパラメータの説明:

- 『Oracle Database SQL言語リファレンス』

- 『Oracle Databaseユーティリティ』

4.4.4 HDFSへのファイルのコピー

Oracle Big Data SQLインストールは、Hadoopクライアント・ファイルをOracle Datatabaseサーバー(Oracle Exadata Database Machineなど)にインストールします。Hadoopクライアント・インストールでは、Hadoopコマンドを使用してデータ・ポンプ・ファイルをHDFSにコピーできます。HDFSディレクトリの書込み権限が必要です。

dmpファイルをHDFSにコピーするには、hadoop fs -putコマンドを使用します。この例では、oracleユーザーが所有するHDFS customersディレクトリにファイルをコピーします。

$ hadoop fs -put customers*.dmp /user/oracle/customers

4.5 Hive表の作成

データ・ポンプ・ファイルのデータにアクセス可能にするには、データ・ポンプ・ファイルに対するHive外部表を作成します。Copy to Hadoopは、Hiveによるファイルの読取りが可能なSerDesを提供します。これらのSerDesは読取り専用であるため、これらを使用してファイルに書き込めません。

関連項目:

次のApache Hive LanguageManual DDL

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Create/Drop/TruncateTable

4.5.1 Hive外部表について

外部表に対して、Hiveは表のメタデータをメタストアにロードします。データはLOCATION句で識別される元の場所に残ります。HiveQL DROP TABLE文を使用して外部表を削除すると、外部データは変更されずにメタデータのみ破棄されます。このため、Hiveは、Oracle Databaseと基本的に同じ方法で外部表を処理します。

外部表は、複数のプログラムで共有されるデータ・ソースをサポートします。この場合、Oracle Databaseを使用してデータを更新し、新しいファイルを生成します。Hiveメタデータを変更せずに古いHDFSファイルを更新されたファイルで上書きできます。

データ・ポンプ形式ファイルで使用するHive外部表を作成するためのHive CREATE TABLE文の基本的な構文は、次のとおりです。

CREATE EXTERNAL TABLE tablename
ROW FORMAT
SERDE 'oracle.hadoop.hive.datapump.DPSerDe'
STORED AS
INPUTFORMAT  'oracle.hadoop.hive.datapump.DPInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 'hdfs_directory'

4.5.2 列マッピングの概要

Hive表の列は、データ・ポンプ・ファイルに格納されたメタデータで提供されるOracle列と同じ名前が自動的に設定されます。ユーザーが指定した列の定義が無視されます。

4.5.3 データ型変換について

Copy to Hadoopは、Oracle表のデータを適切なHiveデータ型に自動的に変換します。表4-1に、Oracleデータ型とHiveデータ型の間のデフォルトのマッピングを示します。

表4-1 Oracleデータ型からHiveデータ型への変換

Oracleデータ型

Hiveデータ型

NUMBER

スケールが0、精度が10未満の場合はINT

スケールが0、精度が19未満の場合はBIGINT

スケールが0より大きく、精度が19より大きい場合はDECIMAL

CLOB

NCLOB

STRING

BINARY_DOUBLE

DOUBLE

BINARY_FLOAT

FLOAT

BLOB

BINARY

CHAR

NCHAR

CHAR

VARCHAR2

NVARCHAR2

VARCHAR

ROWID

UROWID

BINARY

DATE

TIMESTAMP

TIMESTAMP

TIMESTAMP

TIMESTAMPTZ[1]

TIMESTAMPLTZ

サポートなし

RAW

BINARY

4.6 サンプル・スキーマの使用例

この例は、Copy to Hadoopを使用してOracle表からHive表を作成するプロセスのすべての手順を示します。

4.6.1 サンプル・データについて

Oracle表は、Sales History (SH)サンプル・スキーマから使用します。CUSTOMERS表は、名前、住所、電話番号、生年月日および借入限度額を含む個々の顧客に関する詳細情報を提供します。COUNTRIES表は、国のリストを提供し、地域および小地域を識別します。

この問合せは、CUSTOMERS表の一部のデータを示します。

SELECT cust_first_name first_name,
cust_last_name last_name,
cust_gender gender,
cust_year_of_birth birth
FROM customers
ORDER BY cust_city, last_name
FETCH FIRST 10 ROWS ONLY;

問合せは次の行を返します:

FIRST_NAME      LAST_NAME            GENDER      BIRTH
--------------- -------------------- ------ ----------
Lise            Abbey                F            1963
Lotus           Alden                M            1958
Emmanuel        Aubrey               M            1933
Phil            Ball                 M            1956
Valentina       Bardwell             F            1965
Lolita          Barkley              F            1966
Heloise         Barnes               M            1980
Royden          Barrett              M            1937
Gilbert         Braun                M            1984
Portia          Capp                 F            1948

この例を複製するには、Oracle Databaseのサンプル・スキーマをインストールして、SHユーザーとして接続します。

関連項目:

スキーマの表およびインストールの手順の説明は、Oracle Databaseサンプル・スキーマを参照してください。

4.6.2 EXPDIR Databaseディレクトリの作成

これらのSQL文は、EXPDIRという名前のローカル・データベース・ディレクトリを作成し、SHユーザーにアクセス権を付与します。

SQL> CREATE DIRECTORY expdir AS '/expdir';
Directory created.
SQL> GRANT READ, WRITE ON DIRECTORY expdir TO SH;
Grant succeeded.

4.6.3 顧客データのデータ・ポンプ形式ファイルの作成

次の例は、データ・ポンプ・ファイルの作成方法およびその内容の確認方法を示します。

Copy to Hadoopでは、例に示す構文しかサポートされません。エクスポート・ユーティリティまたはOracle Data Pumpで作成されるデータ・ポンプ・ファイルとの互換性はありません。

4.6.3.1 簡単なSELECT文を使用したCREATE TABLEの例

この例は、CUSTOMERS表からデータ・ポンプ形式ファイルを作成する非常に簡単なSQLコマンドを示します。表全体を選択して、ローカル/expdirディレクトリのcustomers.dmpという名前の単一の出力ファイルを生成します。

CREATE TABLE export_customers
ORGANIZATION EXTERNAL
(
TYPE oracle_datapump
DEFAULT DIRECTORY expdir
LOCATION('customers.dmp')
)
AS SELECT * FROM customers;

4.6.3.2 さらに複雑なSQL SELECT文を使用したCREATE TABLEの例

次の例は、より複雑な構文を示しています。COUNTRY_ID列に関してCUSTOMERSおよびCOUNTRIES表を結合して、国名を示します。また、行をアメリカの顧客に制限します。コマンドは、ローカル/expdirディレクトリにamericas1.dmpおよびamericas2.dmpという名前の2つの出力ファイルをパラレルに生成します。

CREATE TABLE export_americas
ORGANIZATION EXTERNAL
(
TYPE oracle_datapump
DEFAULT DIRECTORY expdir
LOCATION('americas1.dmp', 'americas2.dmp')
)
PARALLEL 2
AS SELECT a.cust_first_name first_name,
a.cust_last_name last_name,
a.cust_gender gender,
a.cust_year_of_birth birth,
a.cust_email email,
a.cust_postal_code postal_code,
b.country_name country
FROM customers a,
countries b
WHERE a.country_id=b.country_id AND
b.country_region='Americas'
ORDER BY a.country_id, a.cust_postal_code;

4.6.4 データ・ファイルの内容の確認

Hadoopにコピーする前に出力データ・ファイルの内容を確認できます。前のCREATE TABLE文で、他の表と同じように説明および問い合せできるEXPORT_AMERICASという名前の外部表を作成しました。

DESCRIBE文は、列の選択および変更された名前を示します。

SQL> DESCRIBE export_americas;
Name                      Null?    Type
------------------------- -------- -----------------
FIRST_NAME                NOT NULL VARCHAR2(20)
LAST_NAME                 NOT NULL VARCHAR2(40)
GENDER                    NOT NULL CHAR(1)
BIRTH                     NOT NULL NUMBER(4)
EMAIL                              VARCHAR2(50)
POSTAL_CODE               NOT NULL VARCHAR2(10)
COUNTRY                   NOT NULL VARCHAR2(40)

次のようなSELECT文は、データのサンプルを示します。

SELECT first_name, last_name, gender, birth, country
FROM export_americas
WHERE birth > 1985
ORDER BY last_name
FETCH FIRST 5 ROWS ONLY;

FIRST_NAME      LAST_NAME            GENDER      BIRTH COUNTRY
--------------- -------------------- ------ ---------- ------------------------
Opal            Aaron                M            1990 United States of America
KaKit           Abeles               M            1986 United States of America
Mitchel         Alambarati           M            1987 Canada
Jade            Anderson             M            1986 United States of America
Roderica        Austin               M            1986 United States of America

4.6.5 Hadoopへのファイルのコピー

次のコマンドはローカルexpdirディレクトリのファイルをリストし、customersという名前のHadoopサブディレクトリを作成し、そこにファイルをコピーします。ユーザーは、oracleファイル・システム・ユーザーとしてHadoopクラスタ(Oracle Big Data Applianceなど)に接続されます。

$ cd /expdir
$ ls americas*.dmp
americas1.dmp  americas2.dmp
$ hadoop fs -mkdir customers
$ hadoop fs -put *.dmp customers
$ hadoop fs -ls customers
Found 2 items
-rw-r--r--   1 oracle oracle     798720 2014-10-13 17:04 customers/americas1.dmp
-rw-r--r--   1 oracle oracle     954368 2014-10-13 17:04 customers/americas2.dmp

4.6.6 Hive外部表の作成

このHiveQL文は、Copy to HadoopのSerDesを使用して外部表を作成します。LOCATION句は、データ・ポンプ・ファイルを含むHadoopディレクトリへのフル・パスを識別します。

CREATE EXTERNAL TABLE customers
ROW FORMAT SERDE 'oracle.hadoop.hive.datapump.DPSerDe'
STORED AS
INPUTFORMAT  'oracle.hadoop.hive.datapump.DPInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION '/user/oracle/customers';

DESCRIBEコマンドは、CUSTOMERS外部表の列を示します。

hive> DESCRIBE customers;
OK
first_name               varchar(20)              from deserializer
last_name                varchar(40)              from deserializer
gender                   char(1)                  from deserializer
birth                    int                      from deserializer
email                    varchar(50)              from deserializer
postal_code              varchar(10)              from deserializer
country                  varchar(40)              from deserializer

4.6.7 Hiveのデータの問合せ

次のHiveQL SELECT文は、「データ・ファイルの内容の確認」に示されているOracle DatabaseのSQL SELECT文と同じデータを示します。2つの問合せは、同じデータ・ポンプ・ファイルのコピーにアクセスします。

SELECT first_name, last_name, gender, birth, country
FROM customers
WHERE birth > 1985
ORDER BY last_name LIMIT 5;

Total MapReduce jobs = 1
Launching Job 1 out of 1
.
.
.
OK
Opal      Aaron       M     1990     United States of America
KaKit     Abeles      M     1986     United States of America
Mitchel   Alambarati  M     1987     Canada
Jade      Anderson    M     1986     United States of America
Roderica  Austin      M     1986     United States of America

[1]
TIMESTAMPTZおよびTIMESTAMPLTZデータをHiveにコピーするには、データ・ポンプ・ファイルにエクスポートする場合に列をTIMESTAMPにキャストします。Hiveは、タイム・ゾーンまたはタイム・オフセットをサポートするデータ型を持ちません。

5 Oracle Big Data SQLリファレンス

この章には、Oracle Big Data SQLのリファレンス情報が含まれています。

- DBMS_HADOOP PL/SQLパッケージ

- CREATE TABLE ACCESS PARAMETERS句

- Hiveの静的データ・ディクショナリ・ビュー

5.1 DBMS_HADOOP PL/SQLパッケージ

DBMS_HADOOPパッケージには、Hive表のCREATE EXTERNAL TABLE DDLを生成するための関数が含まれています。

- CREATE_EXTDDL_FOR_HIVE

5.1.1 CREATE_EXTDDL_FOR_HIVE

この関数は、Hive表のSQL CREATE TABLE ORGANIZATION EXTERNAL文を返します。ORACLE_HIVEアクセス・ドライバを使用します。

構文

DBMS_HADOOP.CREATE_EXTDDL_FOR_HIVE (
cluster_id        IN    VARCHAR2,
db_name           IN    VARCHAR2   := NULL,
hive_table_name   IN    VARCHAR2,
hive_partition    IN    BOOLEAN,
table_name        IN    VARCHAR2   := NULL,
perform_ddl       IN    BOOLEAN    DEFAULT FALSE,
text_of_ddl       OUT   VARCHAR2
);

パラメータ

表5-1 CREATE_EXTDDL_FOR_HIVE関数のパラメータ

パラメータ

説明

cluster_id

HiveメタストアがあるHadoopクラスタ

db_name

Hiveデータベースの名前

hive_table_name

Hive表の名前

hive_partition

表がパーティション化されている(TRUE)かされていない(FALSE)か

table_name

作成されるOracle外部表の名前。すでに存在する名前にはできません。

perform_ddl

生成されたCREATE TABLE文を実行する(TRUE)か、コマンドのテキストを返すのみ(FALSE)か。

コマンドを確認または変更する場合は、コマンドを自動的に実行しないでください。

text_of_ddl

生成されたCREATE TABLE ORGANIZATION EXTERNAL文。

使用上の注意

Oracle DatabaseシステムはOracle Big Data SQL用に構成する必要があります。「データベース・サーバー(Oracle Exadata Machineなど)上のOracle Big Data SQLについて」を参照してください。

dba以外のロールのユーザーIDがDBMS_HADOOP.CREATE_EXTDDL_FOR_HIVEを使用できるように許可するには、ユーザーIDとHadoopクラスタ名を指定した行をSYS.HIVE_URI$に挿入する必要があります。 次に例を示します。

insert into hive_uri$ values('SCOTT', 'hadoop1');

データ型変換は、Hiveデータ型とOracleデータ型の間のデフォルトのマッピングに基づいています。「データ型変換について」を参照してください。

5.1.1.1 例

次の問合せは、デフォルトのHiveデータベースからmy_hive_tableのCREATE EXTERNAL TABLE DDLを返します。Hiveへの接続は、ORACLE_BIGDATA_CONFIGディレクトリ内の構成ファイルを使用して確立されます。これは、HADOOP1クラスタの場所を識別します。

DECLARE
DDLtxt VARCHAR2(4000);
BEGIN
dbms_hadoop.create_extddl_for_hive(
CLUSTER_ID=>'hadoop1',
DB_NAME=>'default',
HIVE_TABLE_NAME=>'my_hive_table',
HIVE_PARTITION=>FALSE,
TABLE_NAME=>'my_xt_oracle',
PERFORM_DDL=>FALSE,
TEXT_OF_DDL=>DDLtxt
);
dbms_output.put_line(DDLtxt);
END;
/

問合せは、次のSQLコマンドのテキストを返します。

CREATE TABLE my_xt_oracle
(
c0 VARCHAR2(4000),
c1 VARCHAR2(4000),
c2 VARCHAR2(4000),
c3 VARCHAR2(4000))
ORGANIZATION EXTERNAL
(TYPE ORACLE_HIVE
DEFAULT DIRECTORY DEFAULT_DIR
ACCESS PARAMETERS (
com.oracle.bigdata.cluster=hadoop1
com.oracle.bigdata.tablename=default.my_hive_table
)
)
PARALLEL 2 REJECT LIMIT UNLIMITED

5.2 CREATE TABLE ACCESS PARAMETERS句

この項では、ORACLE_HDFSまたはORACLE_HIVEアクセス・ドライバを使用する外部表を作成するときに使用するプロパティについて説明します。CREATE TABLE ORGANIZATION EXTERNAL文で、ACCESS PARAMETERSのopaque_format_spec句にパラメータを指定します。

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

- プロパティを指定するための構文ルール

- ORACLE_HDFSアクセス・パラメータ

- ORACLE_HIVEアクセス・パラメータ

- プロパティのアルファベット順リスト

5.2.1 プロパティを指定するための構文ルール

プロパティは、SQLのCREATE TABLE ACCESS PARAMETERS句および構成ファイルのキーワード/値のペアを使用して設定されます。構文は次のルールに従う必要があります。

- 各キーワード/値のペアの形式は、キーワード、コロンまたは等号および値です。次に有効なキーワード/値のペアを示します。

keyword=value
keyword:value

値は、セパレータの後の最初の非空白文字から行末まですべてです。セパレータと値の間の空白は無視されます。値の後の空白は保持されます。

- プロパティ定義は1行または複数行になります。

- 行の終了文字は、行フィード、キャリッジ・リターンまたはキャリッジ・リターンの後に続く行フィードです。

- プロパティ定義が複数行にまたがる場合は、行の終了文字の前にバックスラッシュ(エスケープ文字)を付けますが、最終行には付けません。この例では、Keyword1プロパティの値はValue part 1 Value part 2 Value part 3です。

Keyword1=  Value part 1 \
Value part 2 \
Value part 3

- 先頭の空白の各物理行を削除して行を連結することで、論理行を作成できます。パーサーは、論理行からプロパティ名および値を抽出します。

- 文字の前に代入を示すバックスラッシュ(エスケープ文字)を付けることで、プロパティ名またはプロパティ値に特殊文字を埋め込むことができます。表5-2に特殊文字を示します。

表5-2 プロパティの特殊文字

エスケープ順序

文字

\b

Backspace (\u0008)

\t

水平タブ(\u0009)

\n

行フィード(\u000a)

\f

フォーム・フィード(\u000c)

\r

キャリッジ・リターン(\u000d)

\"

二重引用符(\u0022)

\'

一重引用符(\u0027)

\\

バックスラッシュ(\u005c)

複数のバックスラッシュが行末にある場合、パーサーは奇数のバックスラッシュに対してのみ値を次の行に継続します。

\uxxxx

2バイト、ビッグ・エンディアン、Unicodeコード・ポイント。

1文字に2コード・ポイント(4バイト)が必要な場合、パーサーは2番目のコード・ポイントに\uを要求します。

5.2.2 ORACLE_HDFSアクセス・パラメータ

ORACLE_HDFSアクセス・ドライバのアクセス・パラメータは、HDFS内のデータを特定するのに必要なメタデータを提供し、Hive表を作成します。

5.2.2.1 ORACLE_HDFSのデフォルトのパラメータ設定

CREATE TABLE文からすべてのアクセス・パラメータを省略した場合、ORACLE_HDFSは次のデフォルト値を使用します。

com.oracle.bigdata.rowformat=DELIMITED
com.oracle.bigdata.fileformat=TEXTFILE
com.oracle.bigdata.overflow={"action":"truncate"}
com.oracle.bigdata.erroropt={"action":"setnull"}

5.2.2.2 ORACLE_HDFSのオプションのパラメータ設定

ORACLE_HDFSは、次のオプションのcom.oracle.bigdataパラメータをサポートしています。このパラメータは、opaque_format_spec句で指定できます。

- com.oracle.bigdata.colmap

- com.oracle.bigdata.erroropt

- com.oracle.bigdata.fields

- com.oracle.bigdata.fileformat

- com.oracle.bigdata.log.exec

- com.oracle.bigdata.log.qc

- com.oracle.bigdata.overflow

- com.oracle.bigdata.rowformat

例5-1 に、複数のアクセス・パラメータが設定されているCREATE TABLE文を示します。

例5-1 ORACLE_HDFSの複数のアクセス・パラメータの設定

CREATE TABLE ORDER (CUST_NUM VARCHAR2(10),
ORDER_NUM VARCHAR2(20),
ORDER_DATE DATE,
ITEM_CNT NUMBER,
DESCRIPTION VARCHAR2(100),
ORDER_TOTAL (NUMBER8,2)) ORGANIZATION EXTERNAL
(TYPE ORACLE_HDFS
ACCESS PARAMETERS (
com.oracle.bigdata.fields: (CUST_NUM,              \
ORDER_NUM,             \
ORDER_DATE,            \
ORDER_LINE_ITEM_COUNT, \
DESCRIPTION,           \
ORDER_TOTAL)
com.oracle.bigdata.colMap:     {"col":"item_cnt", \
"field":"order_line_item_count"}
com.oracle.bigdata.overflow:   {"action":"TRUNCATE", \
"col":"DESCRIPTION"}
com.oracle.bigdata.errorOpt:  [{"action":"replace", \
"value":"INVALID NUM", \
"col":["CUST_NUM","ORDER_NUM"]} , \
{"action":"reject", \
"col":"ORDER_TOTAL}]
)
LOCATION ("hdfs:/usr/cust/summary/*"));

5.2.3 ORACLE_HIVEアクセス・パラメータ

ORACLE_HIVEは、Hiveカタログから外部データ・ソースに関するメタデータを取得します。通常、外部データ表の列へのHiveデータのデフォルト・マッピングは適切です。ただし、状況によっては、特殊なパラメータ設定が必要です。独自の理由でデフォルト値を上書きする場合もあります。

5.2.3.1 ORACLE_HIVEのデフォルトのパラメータ設定

CREATE TABLE文からすべてのアクセス・パラメータを省略した場合、ORACLE_HIVEは次のデフォルト値を使用します。

com.oracle.bigdata.tablename=name of external table
com.oracle.bigdata.overflow={"action":"truncate"}
com.oracle.bigdata.erroropt={"action":"setnull"}

5.2.3.2 ORACLE_HIVEのオプションのパラメータ値

ORACLE_HIVEは、次のオプションのcom.oracle.bigdataパラメータをサポートしています。このパラメータは、opaque_format_spec句で指定できます。

- com.oracle.bigdata.colmap

- com.oracle.bigdata.erroropt

- com.oracle.bigdata.log.exec

- com.oracle.bigdata.log.qc

- com.oracle.bigdata.overflow

- com.oracle.bigdata.tablename

例5-2 に、複数のアクセス・パラメータが設定されているCREATE TABLE文を示します。

例5-2 ORACLE_HIVEの複数のアクセス・パラメータの設定

CREATE TABLE ORDER (cust_num VARCHAR2(10),
order_num VARCHAR2(20),
order_date DATE,
item_cnt NUMBER,
description VARCHAR2(100),
order_total (NUMBER8,2)) ORGANIZATION EXTERNAL
(TYPE oracle_hive
ACCESS PARAMETERS (
com.oracle.bigdata.tableName:  order_db.order_summary
com.oracle.bigdata.colMap:     {"col":"ITEM_CNT", \
"field":"order_line_item_count"}
com.oracle.bigdata.overflow:   {"action":"ERROR", \
"col":"DESCRIPTION"}
com.oracle.bigdata.errorOpt:   [{"action":"replace", \
"value":"INV_NUM" , \
"col":["CUST_NUM","ORDER_NUM"]} ,\
{"action":"reject", \
"col":"ORDER_TOTAL}]
));

5.2.4 com.oracle.bigdata.colmap

ソース・データの列をOracle外部表の列にマップします。ソース・フィールド名がOracle列名の最大長を超える場合、または外部表で別の列名を使用する場合、このプロパティを使用します。

デフォルト値

Hive列と同じ名前を持つ外部表の列

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

colmap ::=

colmap_entry ::=

セマンティクス

"col":name

"col": キーワードは小文字を使用して、引用符で囲む必要があります。

name: Oracle外部表の列の名前。大/小文字を区別し、引用符で囲む必要があります。

"field":name

"field": キーワードは小文字を使用して、引用符で囲む必要があります。

name: データ・ソースのフィールドの名前。大/小文字は区別しませんが、引用符で囲む必要があります。「プロパティを指定するための構文ルール」を参照してください。

例

この例は、ORDER_LINE_ITEM_COUNTという名前のHive列をITEM_CNTという名前のOracle列にマップします。

com.oracle.bigdata.colMap={"col":"ITEM_CNT", \
"field":"order_line_item_count"}

5.2.5 com.oracle.bigdata.datamode

SmartScanがHadoopデータ・ソースをスキャンするために使用する方法を指定します。方法によって、パフォーマンスに大きな違いが生じる可能性があります。

デフォルト値

automatic

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

datamode ::=

セマンティクス

automatic

メタデータに基づいて適切なモードを自動的に選択します。可能な場合はcモードを選択します。データにcモードでサポートされていない形式が含まれる場合は、javaモードを選択します。

c

ファイル・バッファを読み取る場合はJavaを使用しますが、データを処理してOracle形式に変換する場合はCコードを使用します。デリミタ付きデータにこのモードを指定します。

データにCコードでサポートされていない形式が含まれる場合は、エラーが返されます。

java

データを処理してOracle形式に変換する場合は、Java SerDesおよびInputFormatsを使用します。Parquet、RCFileおよびSerDeを必要とする他のデータ形式にこのモードを指定します。

5.2.6 com.oracle.bigdata.erroropt

列の値の計算中に発生するエラーを処理する方法を示します。

デフォルト値

{"action":"setnull"}

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

erroropt ::=

error_element ::=

セマンティクス

"action"、"reject"、"setnull"、"replace"、"value"および"col"キーワードは小文字を使用して、引用符で囲む必要があります。「プロパティを指定するための構文ルール」を参照してください。

"action":value

value: 次のキーワードのいずれかになります。

- "reject": 行をロードしません。

- "setnull": 列をNULLに設定します。

- "replace": 列を指定された値に設定します。

"value":string

string: 外部表の不正な値を置換します。引用符で囲む必要があります。

"col":name

name: 外部表の列を識別します。列名は大/小文字を区別し、引用符で囲む必要があります。リストできるのは1回のみです。

例

この例では、Hive値によってエラーが発生した場合、CUST_NUMまたはORDER_NUM列の値をINVALIDに設定します。その他の列では、エラーによってHive値が拒否されます。

com.oracle.bigdata.errorOpt: {"action":"replace",\
"value":"INVALID", \
"col":["CUST_NUM","ORDER_NUM"]

5.2.7 com.oracle.bigdata.fields

データ・ソースのフィールド名およびデータ型をリストします。

デフォルト値

未定義

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

fields ::=

data_type ::=

primitive_type ::=

セマンティクス

構文は、Hive表のフィールド・リストと同じです。フィールド・リストを複数行に分割する場合、バックスラッシュを使用して改行文字をエスケープする必要があります。

field_name

Hiveフィールドの名前。英数字およびアンダースコア(_)のみ使用します。最大長は128文字です。フィールド名は大/小文字を区別します。

data_type

Hiveフィールドのデータ型。オプション。デフォルトはSTRINGです。文字セットはUTF8である必要があります。

データ型は複合またはプリミティブになります。

Hive複合データ型

- ARRAY: 索引付け可能なリスト

- MAP: キー値のタプル

- STRUCT: 要素のリスト

- UNIONTYPE: 複数のデータ型

Hiveプリミティブ・データ型

- INT: 4バイトの整数

- BIGINT: 8バイトの整数

- SMALLINT: 2バイトの整数

- TINYINT: 1バイトの整数

- BOOLEAN: TRUEまたはFALSE

- FLOAT: 単精度

- DOUBLE: 倍精度

- STRING: 文字列

関連項目:

Apache Hive Language Manualのデータ型に関する項を参照してください。

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types

COMMENT col_comment

一重引用符で囲まれた文字列リテラル。Hive表のメタデータとして格納されます(TBLPROPERTIESのcommentプロパティ)。

5.2.8 com.oracle.bigdata.fileformat

ORACLE_HDFSによって生成されたHive表のROW FORMAT句に基づいて、データ・ソースの行形式を説明します。

デフォルト値

TEXTFILE

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

fileformat ::=

セマンティクス

ORC

最適化された行カラムナ・ファイル形式

PARQUET

列指向、バイナリ・ファイル形式

RCFILE

レコード・カラムナ・ファイル形式

SEQUENCEFILE

圧縮ファイル形式

TEXTFILE

プレーン・テキスト・ファイル形式

INPUTFORMAT

データ・ファイルからレコードを抽出できるJavaクラスを識別します。

OUTPUTFORMAT

出力レコードを目的の形式に設定できるJavaクラスを識別します。

5.2.9 com.oracle.bigdata.log.exec

アクセス・ドライバがCDH上の並列プロセスとして実行されている場合、問合せのCコードによって生成されたログ・ファイルを生成する方法を指定します。

アクセス・ドライバはHadoopクラスタ・ノード上で実行されている場合、ログ・ファイルの作成または書込みを行いません。並列問合せプロセスがログ・ファイルを書き込みます。Javaコードからのログ・ファイルはlog4jプロパティによって制御されます。このプロパティは、構成ファイルまたはアクセス・パラメータで指定されます。「bigdata-log4j.properties」を参照してください。

デフォルト値

未定義(ロギングなし)

構文

[directory_object:]file_name_template

セマンティクス

directory_object

ログ・ファイルが作成されるHadoopクラスタ上のHDFSパスのOracleディレクトリ・オブジェクト。

file_name_template

ファイル名の生成に使用する文字列。表5-2 に、テンプレートで使用できるオプションの変数を示します。

表5-3 com.oracle.bigdata.log.execの変数

変数

値

%p

オペレーティング・システム・プロセス識別子(PID)

%a

プロセスを一意に識別する番号。

%%

パーセント記号(%)

例

次の例では、PIDおよび一意の番号を含むログ・ファイル名(xtlogp_hive14_3413_57など)を生成します。

com.oracle.bigdata.log.exec= xtlogp_hive14_%p_%a

5.2.10 com.oracle.bigdata.log.qc

アクセス・ドライバが問合せのログ・ファイルを生成する方法を指定します。

デフォルト値

未定義(ロギングなし)

構文

[directory_object:]file_name_template

セマンティクス

directory_object

ログ・ファイルが書き込まれるパスを指すOracleディレクトリ・オブジェクトの名前。この値を省略すると、ログは外部表のデフォルト・ディレクトリに書き込まれます。

file_name_template

ファイル名の生成に使用する文字列。表5-4 に、文字列で使用できるオプションの変数を示します。

表5-4 com.oracle.bigdata.log.qcの変数

変数

値

%p

オペレーティング・システム・プロセス識別子(PID)

%%

パーセント記号(%)

例

この例では、PIDおよびパーセント記号を含むログ・ファイル名(xtlogp_hive213459_%など)を作成します。

com.oracle.bigdata.log.qc= xtlogp_hive21%p_%%

5.2.11 com.oracle.bigdata.overflow

外部表の列には長すぎる文字列データの処理方法を示します。データ・ソースは文字またはバイナリになります。Hiveの場合、データ・ソースはSTRUCT、UNIONTYPES、MAPまたはARRAYにすることもできます。

デフォルト値

{"action":"truncate"}

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

overflow ::=

overflow_element ::=

セマンティクス

"action"、"truncate"、"error"および"col"タグは小文字を使用して、引用符で囲む必要があります。「プロパティを指定するための構文ルール」を参照してください。

"action":value

"action"の値は次のキーワードのいずれかになります。

- truncate: 列に収まるようにデータを短くします。

- error: エラーをスローします。com.oracle.bigdata.erroroptプロパティは、エラーの結果を制御します。

"col":name

name: 外部表の列を識別します。名前は大/小文字を区別し、引用符で囲む必要があります。

例

この例では、DESCRIPTION列のソース・データが列幅を超える場合、ソース・データを切り捨てます。

com.oracle.bigdata.overflow={"action":"truncate", \
"col":"DESCRIPTION"}

5.2.12 com.oracle.bigdata.rowformat

アクセス・ドライバがファイル内のレコードからフィールドを抽出するために必要な情報を提供します。

デフォルト値

DELIMITED

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

rowformat ::=

セマンティクス

DELIMITED

レコード内のフィールドを区切るために使用する文字を示します。

- FIELDS TERMINATED BY: レコード内の各フィールドを区切る文字。オプションのESCAPED BY文字は、フィールド値内に表示される場合、デリミタ文字の前に付けます。

- COLLECTION ITEMS TERMINATED BY: 配列要素の終了を示す文字。

- MAP KEYS TERMINATED BY: MAPフィールドのエントリの終了を示す文字。

- LINES TERMINATED BY: レコードの終了を示す文字。

- NULL DEFINED AS: null値を示す文字。

SERDE

アクセス・ドライバが必要とするSerDeのデータおよびプロパティを解析できるSerDeを識別します。

例

この例では、Avroコンテナ・ファイルにSerDeを指定します。

com.oracle.bigdata.rowformat:
SERDE'org.apache.hadoop.hive.serde2.avro.AvroSerDe'

次の例では、正規表現を含むファイルのSerDeを指定します。

com.oracle.bigdata.rowformat=\
SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' \
WITH SERDEPROPERTIES \
("input.regex" = "(\\\\d{6}) (\\\\d{5}) (.{29}) .*")

5.2.13 com.oracle.bigdata.tablename

ソース・データを含むHive表を識別します。

デフォルト値

DEFAULT.external_table_name

構文

[hive_database_name.]table_name

セマンティクス

hive_database_nameおよびtable_nameの最大長は128 UTF-8文字(512バイト)です。

hive_database_name

ソース・データが存在するHiveデータベース。DEFAULTはHive初期データベースの名前です。

table_name

データを含むHive表。table_nameを省略した場合、ORACLE_HIVEは外部表と同じ名前のHive表を検索します。表名は大/小文字を区別します。

例

この設定は、ソース・データがHiveのORDER_DBデータベース内のORDER_SUMMARYという表にあることを示します。

com.oracle.bigdata.tablename ORDER_DB.ORDER_SUMMARY

5.3 Hiveの静的データ・ディクショナリ・ビュー

Oracle Databaseカタログには、Hive表の複数の静的データ・ディクショナリ・ビューが含まれています。これらのデータ・ディクショナリ・ビューを問い合せて、アクセスできるHive表に関する情報を検出できます。

Oracle DatabaseからHiveデータベースにアクセスする場合、ORACLE_BIGDATA_CONFIGディレクトリ・オブジェクトの読取りアクセス権が必要です。

- ALL_HIVE_DATABASES

- ALL_HIVE_TABLES

- ALL_HIVE_COLUMNS

- DBA_HIVE_DATABASES

- DBA_HIVE_TABLES

- DBA_HIVE_COLUMNS

- USER_HIVE_DATABASES

- USER_HIVE_TABLES

- USER_HIVE_COLUMNS

5.3.1 ALL_HIVE_DATABASES

ALL_HIVE_DATABASESは、現在のユーザーにアクセスできるHiveメタストア内のすべてのデータベースを示します。

関連ビュー

- DBA_HIVE_DATABASESは、Hiveメタストア内のすべてのデータベースを示します。

- USER_HIVE_DATABASESは、現在のユーザーが所有するHiveメタストア内のデータベースを示します。

列

データ型

NULL

説明

CLUSTER_ID

VARCHAR2(4000)

NOT NULL

HiveメタストアがあるHadoopクラスタ

DATABASE_NAME

VARCHAR2(4000)

NOT NULL

Hiveデータベース名

DESCRIPTION

VARCHAR2(4000)

Hiveデータベースの説明

DB_LOCATION

VARCHAR2(4000)

NOT NULL

HIVE_URI

VARCHAR2(4000)

HiveデータベースのURI

関連項目:

- 「DBA_HIVE_DATABASES」

- 「USER_HIVE_DATABASES」

5.3.2 ALL_HIVE_TABLES

ALL_HIVE_TABLESは、現在のユーザーにアクセスできるHiveメタストア内のすべての表を示します。

Oracle Big Data SQL構成は、現在のユーザーのデフォルトのHiveデータベースを識別する必要があります。現在のユーザーには、ORA_BIGSQL_CONFIGデータベース・ディレクトリのREAD権限も必要です。「共通ディレクトリについて」を参照してください。

関連ビュー

- DBA_HIVE_TABLESは、Hiveメタストア内のすべての表を示します。

- USER_HIVE_TABLESは、Hiveメタストア内の現在のユーザーが所有するデータベースの表を示します。

列

データ型

NULL

説明

CLUSTER_ID

VARCHAR2(4000)

NOT NULL

HiveメタストアがあるHadoopクラスタ

DATABASE_NAME

VARCHAR2(4000)

NOT NULL

Hiveデータベースの名前

TABLE_NAME

VARCHAR2(4000)

NOT NULL

Hive表の名前

LOCATION

VARCHAR2(4000)

NO_OF_COLS

NUMBER

Hive表内の列の数

CREATION_TIME

DATE

表が作成された時刻

LAST_ACCESSED_TIME

DATE

最新のアクセス時刻

OWNER

VARCHAR2(4000)

Hive表の所有者

TABLE_TYPE

VARCHAR2(4000)

NOT NULL

Hive表のタイプ(外部、管理対象など)

PARTITIONED

VARCHAR2(4000)

表がパーティション化されている(YES)かされていない(NO)か

NO_OF_PART_KEYS

NUMBER

パーティションの数

INPUT_FORMAT

VARCHAR2(4000)

入力形式

OUTPUT_FORMAT

VARCHAR2(4000)

出力形式

SERIALIZATION

VARCHAR2(4000)

SerDeシリアル化情報

COMPRESSED

NUMBER

表が圧縮されている(YES)かされていない(NO)か

HIVE_URI

VARCHAR2(4000)

HiveデータベースのURI

関連項目:

- 「DBA_HIVE_TABLES」

- 「USER_HIVE_TABLES」

5.3.3 ALL_HIVE_COLUMNS

ALL_HIVE_COLUMNSは、現在のユーザーにアクセスできるすべてのHive表の列を示します。

Oracle Big Data SQL構成は、現在のユーザーのデフォルトのHiveデータベースを識別する必要があります。現在のユーザーには、ORA_BIGSQL_CONFIGデータベース・ディレクトリのREAD権限も必要です。「共通ディレクトリについて」を参照してください。

関連ビュー

- DBA_HIVE_COLUMNSは、Hiveメタストア内のすべての表の列を示します。

- USER_HIVE_COLUMNSは、現在のユーザーが所有するHiveデータベースの表の列を示します。

列

データ型

NULL

説明

CLUSTER_ID

VARCHAR2(4000)

NOT NULL

HiveメタストアがあるHadoopクラスタ

DATABASE_NAME

VARCHAR2(4000)

NOT NULL

Hiveデータベースの名前。空白の場合は、デフォルト・データベース

TABLE_NAME

VARCHAR2(4000)

NOT NULL

Hive表の名前

COLUMN_NAME

VARCHAR2(4000)

NOT NULL

Hive列の名前

HIVE_COLUMN_TYPE

VARCHAR2(4000)

NOT NULL

Hive列のデータ型

ORACLE_COLUMN_TYPE

VARCHAR2(4000)

NOT NULL

Hiveデータ型と同等のOracleデータ型

LOCATION

VARCHAR2(4000)

OWNER

VARCHAR2(4000)

Hive表の所有者

CREATION_TIME

DATE

表が作成された時刻

HIVE_URI

VARCHAR2(4000)

HiveデータベースのURI

関連項目:

- 「DBA_HIVE_COLUMNS」

- 「USER_HIVE_COLUMNS」

5.3.4 DBA_HIVE_DATABASES

DBA_HIVE_DATABASESは、Hiveメタストア内のすべてのデータベースを示します。列はALL_HIVE_DATABASESの列と同じです。

関連項目:

「ALL_HIVE_DATABASES」

5.3.5 DBA_HIVE_TABLES

DBA_HIVE_TABLESは、Hiveメタストア内のすべての表を示します。列はALL_HIVE_TABLESの列と同じです。

Oracle Big Data SQL構成は、現在のユーザーのデフォルトのHiveデータベースを識別する必要があります。「共通ディレクトリについて」を参照してください。

関連項目:

「ALL_HIVE_TABLES」

5.3.6 DBA_HIVE_COLUMNS

DBA_HIVE_COLUMNSは、Hiveメタストア内のすべての表の列を示します。列はALL_HIVE_COLUMNSの列と同じです。

関連項目:

「ALL_HIVE_COLUMNS」

5.3.7 USER_HIVE_DATABASES

USER_HIVE_DATABASESは、現在のユーザーが所有するHiveメタストア内のデータベースを示します。列(OWNERを除く)はALL_HIVE_DATABASESの列と同じです。

関連項目:

「ALL_HIVE_DATABASES」

5.3.8 USER_HIVE_TABLES

USER_HIVE_TABLESは、Hiveメタストア内の現在のユーザーが所有するデータベースの表を示します。列(OWNERを除く)はALL_HIVE_TABLESの列と同じです。

Oracle Big Data SQL構成は、現在のユーザーのデフォルトのHiveデータベースを識別する必要があります。現在のユーザーには、ORA_BIGSQL_CONFIGデータベース・ディレクトリのREAD権限も必要です。「共通ディレクトリについて」を参照してください。

関連項目:

「ALL_HIVE_TABLES」

5.3.9 USER_HIVE_COLUMNS

USER_HIVE_COLUMNSは、現在のユーザーが所有するHiveデータベースの表の列を示します。列(OWNERを除く)はALL_HIVE_COLUMNSの列と同じです。

Oracle Big Data SQL構成は、現在のユーザーのデフォルトのHiveデータベースを識別する必要があります。現在のユーザーには、ORA_BIGSQL_CONFIGデータベース・ディレクトリのREAD権限も必要です。「共通ディレクトリについて」を参照してください。

関連項目:

「ALL_HIVE_COLUMNS」

付録

A ライセンス情報

A.1 Oracle Big Data SQL

Oracle Big Data SQLのライセンスは他のOracle製品のライセンスとは別です。

Oracle Big Data SQLのライセンスを購入する場合は、次の点に注意してください。

- Hadoopクラスタごと、ディスクごとに、別のライセンスを購入する必要があります。

- Oracle Big Data SQLを実行するHadoopクラスタ内のすべてのノードにライセンスが必要です。

- Oracle Big Data SQLを実行するクラスタを構成する各ノードのすべてのディスクにライセンスが必要です。ノード内に部分的なライセンスを供与することはできません。クラスタ内のすべてのノードが含まれます。

- Oracle Big Data SQLインストールのHadoopクラスタ側(Oracle Big Data Applianceなど)のみがライセンスされますが、データベース・サーバー側に追加のライセンスは不要です。

- Oracle Copy to Hadoopのライセンスが含まれています。

- Oracle Super Clusterは含まれていません。

索引

A  B  C  D  E  F  H  L  O  P  R  S  T  U

A

- アクセス・ドライバ 1

- ACCESS PARAMETERS句

- 特殊文字 1

- 構文ルール 1

- ACCESS PARAMETERS句

- 構文 1

- ALL_HIVE_COLUMNSビュー 1

- ALL_HIVE_DATABASESビュー 1

- ALL_HIVE_TABLESビュー 1 , 2

- 配列オーバーフロー 1

- Audit Vault

- プラグイン構成 1

B

- バイナリ・オーバーフロー 1

C

- カタログ・ビュー 1

- 文字オーバーフロー 1

- 列マッピング 1

- com.oracle.bigdata.colmap 1

- com.oracle.bigdata.datamode 1

- com.oracle.bigdata.erroropt 1

- com.oracle.bigdata.fields 1

- com.oracle.bigdata.fileformat 1

- com.oracle.bigdata.log.exec 1

- com.oracle.bigdata.log.qc 1

- com.oracle.bigdata.overflow 1

- com.oracle.bigdata.rowformat 1

- com.oracle.bigdata.tablename 1

- commonディレクトリ 1

- CREATE_EXTDDL_FOR_HIVE関数

- 構文 1

- CREATE TABLE ORGANIZATION EXTERNAL構文 1 , 2

- CREATE TABLE文

- Hive用の自動生成 1

D

- データ・ディクショナリ・ビュー 1

- データ・モード 1

- データソース名 1

- データ型変換(Big Data SQL) 1

- データ型(HDFS) 1

- DBA_HIVE_COLUMNSビュー 1

- DBA_HIVE_DATABASESビュー 1

- DBA_HIVE_TABLESビュー 1

- DBMS_HADOOPパッケージ 1

- DBMS_OUTPUTパッケージ 1

- DEFAULT DIRECTORY句 1

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

E

- エラー処理 1

- エラー処理(Big Data SQL) 1

- 外部表

- 概要 1

F

- フィールド抽出 1

- フィールド名 1

H

- Hadoopログ・ファイル 1

- HDFS透過的暗号化 1

- Hive列 1

- Hiveデータ

- Oracle Databaseからのアクセス 1

- Hiveデータベース 1

- Hive表 1

- Hive表ソース 1

- Hiveビュー 1

L

- LOCATION句 1

- ログ・ファイル 1

O

- ORACLE_HDFSアクセス・ドライバ 1

- ORACLE_HIVE

- アクセス・パラメータ 1

- ORACLE_HIVEの例 1

- Oracle Audit Vault and Database Firewall

- プラグイン構成 1

- Oracle Big Data SQL

- アクセス・ドライバ 1

- データ型の変換 1

- 概要 1

- Oracle Databaseサーバーでのインストールの変更。 1

- セキュリティ 1

- Oracle Database

- Hiveデータへのアクセス 1

- Oracle Exadata Machine

- Big Data SQLインストールの変更 1

- ORCファイル 1

- オーバーフロー処理 1

P

- Parquetファイル 1

- HDFSファイルの解析 1

- PL/SQLパッケージ 1

- PUT_LINE関数 1

R

- RCファイル 1

- REJECT LIMIT句 1

- 行形式の説明 1

- 行形式 1

S

- 順序ファイル 1

- SerDe解析 1

- SmartScan 1

- SmartScanモード 1

- ソース名 1

- 静的データ・ディクショナリ・ビュー 1

- structオーバーフロー 1

T

- テキスト・ファイル 1

- テキスト・オーバーフロー 1

- TYPE句 1

U

- unionオーバーフロー 1

- USER_HIVE_COLUMNSビュー 1

- USER_HIVE_DATABASESビュー 1

- USER_HIVE_TABLESビュー 1

- Oracle Databaseからのユーザー・アクセス 1

オラクルの法律上の注意点について

コピーライトについて

Copyright © 1994-2016, 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 Corporationおよびその関連会社は一切の責任を負いかねます。

商標と登録商標について

OracleおよびJavaはオラクルおよびその関連会社の登録商標です。その他の社名、商品名等は各社の商標または登録商標である場合があります。

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

第三者のコンテンツ、製品、サービスに対する免責事項

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

アルファ版およびベータ版ドラフト・ドキュメントについて

このドキュメントが試作版の場合:

このドキュメントは試作版であり、デモおよび暫定使用のみを目的としたものです。このソフトウェアを使用するハードウェアに限定するものではありません。Oracle Corporationおよびその関連会社は、このドキュメントに関して一切の責任を負わず、いかなる保証もいたしません。また、このドキュメントを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。

非公開のアルファ版およびベータ版ドラフト・ドキュメントについて

このドキュメントが非公開の試作版の場合:

このドキュメントに含まれる情報は、情報の共有のみを目的としたものであって、顧客諮問委員会(Customer Advisory Board)のメンバーとしてのお客様の立場でのみ、またはお客様のベータ・トライアル契約のみに従って検討されるべきものとします。マテリアル、コード、または機能の提供をお約束するものではなく、購入決定を行う際の判断材料とすべきではありません。このドキュメントに記載されている特徴または機能の開発、リリースおよび時期については、オラクルの裁量により決定されます。

このドキュメントには、ソフトウェアまたは印刷物などの形式を問わず、オラクルが独占的な権利を有する財産的情報が含まれています。この機密資料へのアクセスと使用は、お客様とオラクルとの間で締結され、お客様が遵守に同意した、Oracle Master Agreement、Oracle License and Oracle Services Agreement (オラクル・ライセンスおよびサービスに関する契約書)、Oracle PartnerNetwork Agreement、Oracle Distribution Agreementまたはその他のライセンス契約の条件に従うものとします。このドキュメントとその内容の開示、コピー、複製および配布には、オラクルによる事前の承諾を必要とします。このドキュメントはライセンス契約の一部となるものではなく、オラクルおよびその子会社や関連会社との契約を構成するものではありません。

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

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

Oracle Supportへのアクセス

サポートをご契約のお客様には、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を参照してください。