Oracle® Big Data SQL

ユーザーズ・ガイド

リリース3 (3.0.1)

E67097-01(原本部品番号:E76071-02)

2016年6月

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

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

E67097-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 3.0.1での変更点

- Oracle Big Data SQL 3.0での変更点

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 SQL互換性マトリクス

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

- 2.2.1 インストールの実行

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

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

- 2.2.2.2 bds-exa-install構文

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

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

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

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

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

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

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

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

- 2.3.4 インストールの概要

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

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

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

- 2.3.8 Oracle Big Data SQLの削除

- 2.3.9 Big Data SQLの保護

- 2.3.9.1 Big Data SQLの通信とセキュアなHadoopクラスタ

- 2.3.9.2 Oracle Big Data SQLおよびOracle Secure External Password Storeの設定

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のデータの問合せ

- 4.7 Oracle Shell for Hadoop LoadersのCopy to Hadoopとの使用

- 4.7.1 Oracle Shell for Hadoop Loadersの概要

- 4.7.2 Oracle Shell for Hadoop Loadersの設定

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.buffersize

- 5.2.5 com.oracle.bigdata.colmap

- 5.2.6 com.oracle.bigdata.datamode

- 5.2.7 com.oracle.bigdata.erroropt

- 5.2.8 com.oracle.bigdata.fields

- 5.2.9 com.oracle.bigdata.fileformat

- 5.2.10 com.oracle.bigdata.log.exec

- 5.2.11 com.oracle.bigdata.log.qc

- 5.2.12 com.oracle.bigdata.overflow

- 5.2.13 com.oracle.bigdata.rowformat

- 5.2.14 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のライセンス

- A.1.1 ANTLR 4.5.2

- A.1.2 JLine 2.13

- A.1.3 Apache Commons Exec 1.3

- A.1.4 Apacheのライセンス

索引

はじめに

『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 3.0.1での変更点

Oracle Big Data SQLリリース3.0.1の変更点は次のとおりです。

Oracle Big Data ApplianceおよびExadata Database Machineを引き続きサポートすることに加え、リリース3.0.1では、Big Data SQLのOracle Engineered Systems以外のプラットフォームのサポートがさらに向上しています。これらには現在、Big Data Appliance以外のコモディティ・ハードウェア上で動作するHortonworks Data Platform (HDP)およびCloudera's Distribution Including Apache Hadoop (CDH)が含まれます。ここでは、これらのHadoopシステムがExadata以外のサーバーで実行されるOracle Databaseと組み合せて使用されます。

新しいCDHおよびHDPプラットフォームのサポート

Oracle Big Data SQL 3.0.1は、Hortonworks Hadoop Data Platform (HDP) 2.3 – 2.4.xおよびCloudera's Distribution Including Apache Hadoop (CDH) 5.5 – 5.7上で実行します。

インストール自動化の改善

HDPおよびCDHでのインストールで、以降のリストアのために、YARNリソース管理構成を自動保存できるようになりました。

oracleユーザーおよびoinstallグループの設定が、インストール・プログラムによって管理されるようになりました。

HDPおよびCDHの統一された削除手順

HDPおよびCDHの両システムでの削除手順が同じになりました。

HDPおよびCDHの他の変更点

- デフォルトのJDKがjdk-8u66-linux-x64にアップグレードされています

- bds-database-create-bundle.shに、デフォルト以外のJDKを指定するための新しい--jdk-tar-pathパラメータが含められています。

- bds-database-install.shに次の新しいパラメータが含められています。

- --cell-config-dir

- --root-script-only

- cellinit.oraファイルが存在しないまたは空の場合、インストール・プロセスで新しいファイルが作成および移入されるようになりました。

Oracle Shell for Hadoop Loaders

Oracle Shell for Hadoop Loadersは、Copy to Hadoop、Oracle Loader for HadoopおよびOracle SQL Connector for HDFSに簡単に使用できるコマンドライン・インタフェースを提供するヘルパー・シェルです。

Oracle Big Data Appliance 4.5のサポート

Oracle Big Data SQLリリース3.0.1は、Oracle Big Data Appliance 4.5でのmammothインストール・オプションです。mammothインストール後にbdacliユーティリティを使用して、Oracle Big Data SQLリリース3.0.1をいつでも有効にすることもできます。

注意:
リリース3.0.1では、Oracle Big Data SQLはまだOracle Big Data Applianceと非Exadata Oracle Databaseサーバーとの間、または非Big Data Appliance HadoopシステムとExadata Database Machineとの間の接続をサポートしていません。

Oracle Big Data SQL 3.0での変更点

Oracle Big Data SQL 3.0での重要な変更には、Oracle Big Data Appliance/Oracle Exadata Database Machineのインストールに加え、非Oracleサーバーのサポートの拡大がありました。このリリースで追加されたもう1つの機能に述語のプッシュダウンがありました。

Oracle Engineered Systems以外のサーバーのサポート

リリース3.0以前は、Oracle Big Data SQLはOracle Engineered Systemsのみをサポートしていました。特に、Oracle Big Data Appliance (Hadoop側)およびOracle Exadata Database Machine (データベース・サーバー側)です。リリース3.0の時点で、Oracle Big Data SQLは、Oracle Big Data Appliance以外のHortonworks Hadoop Data Platform上およびCloudera's Distribution Including Apache Hadoop (CDH)システム上でも動作します。

またBig Data SQLは、Oracle Exadata Database Machine以外のサーバー上で実行するOracle Databaseもサポートするようになりました。

述語のプッシュダウン

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は、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)も有効。

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が格納されています。

図GUID-79453BB0-2261-4A43-A333-35AEEE54190C-default.pngの説明

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"

図GUID-666A8530-7DD6-44E9-AE92-B196E5085524-default.pngの説明

ファクト表の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 SQL互換性マトリクス

次のものとのBig Data SQLの互換性についての最新情報は、My Oracle Supportの『Oracle Big Data SQL Master Compatibility Matrix』(Doc ID 2119369.1)を参照してください。

- Oracle Engineered Systems。

- 他のシステム。

- Linux OSのディストリビューションとバージョン。

- Hadoopディストリビューション。

- 必要とされるパッチを含むOracle Databaseのリリース。

2.2 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.2.1 インストールの実行

次の手順に従って、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のApril 2016プロアクティブ・バンドル・パッチ(12.1.0.2.160419 BP)を各Exadata Database Machineに事前にインストールしておく必要があります。かわりに、January 12.1.0.2.160119バンドル・パッチを使用することもできますが、古いBPは追加の個別パッチが必要です。(詳細は、My Oracle Supportの『Oracle Big Data SQL Master Compatibility Matrix』、Doc ID 2119369.1を参照してください。)

この手順は、Oracle Big Data Appliance 4.5を実行しているか、これにアップグレードする予定であることを前提としています。ただし、Oracle Big Data SQL 3.0.1はOracle Big Data Appliance 4.3とも互換性があります。v4.3を実行しており、今回はアップグレードする予定がない場合、パッチ要件について『Oracle Big Data SQL Master Compatibility Matrix』を参照してください。

1. Oracle Big Data Applianceで、Oracle Big Data Appliance Release 4.5ソフトウェアをインストールするか、Oracle Big Data Appliance Release 4.5にアップグレードします。
Oracle Big Data SQLはmammothバンドルに含まれています。ソフトウェアを有効にするには2つのオプションがあります。

- Configuration Generation Utilityを使用してmammothインストールを事前構成する際に、「Cluster Page」の「Big Data SQL」チェック・ボックスをクリックします。これは、Oracle Big Data Applianceのインストール中にソフトウェアを有効にします。

- インストール後の任意の時点でbdacliユーティリティを使用します。

$ bdacli enable big_data_sql

ヒント:
Oracle Big Data Appliance v4.5.0へのアップグレードを行っており、Oracle Big Data SQLの旧バージョンが以前に有効されている場合、その設定が継承され、アップグレードにおいてOracle Big Data SQL 3.0.1が自動的に有効化されます。その場合、ソフトウェアを再度有効化する必要はありません。アップグレードが完了したら、直接次の手順にスキップして、各データベース・ノードでインストール後スクリプトを再実行できます。

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

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

Exadataデータベース・クラスタの各ノード上でインストール後スクリプトを実行する必要があります。これは、新しいインストールおよびインストール後スクリプトがすべてのデータベース・ノード上で以前に実行したアップグレードの両方について、すべてのケースで当てはまります。

Cloudera Managerを使用すると、Oracle Big Data SQLが稼働していることを確認できます。

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

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

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

bds-exa-installインストール後スクリプトを実行するとき、データベースをHadoopクラスタとトークする(つまり、クラスタを選択したデータベースに登録する)ように構成することになります。データベースに登録した最初のクラスが、データベースのデフォルトの/primaryクラスタになります。データベースを追加のクラスタに接続するには、bds-exa-installを再度コールしますが、--install-as-secondaryオプションを使用します。

bds-exa-install --uninstall-as-primaryを実行してプライマリ・クラスタの登録を削除した場合、重要な構成情報が削除されます。そのため、bds-exa-installを再度実行して、データベースとの通信を維持するクラスタを再登録する必要があります。1つのクラスタをプライマリとし、他をセカンダリとして再登録する必要があります。

重要
Exadataクラスタの各ノードでbds-exa-install.shを実行します。これが行われないと、BDSサービスが開始された際にRPC接続エラーが示されます。

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

1. bds-exa-install.shインストール・スクリプトをOracle Big Data ApplianceからOracle Exadata Database Machineの一時ディレクトリにコピーします。(Mammothがインストールされているノード、通常はクラスタ上の第1ノードでスクリプトを検索します。)次に例を示します。

# curl -O http://bda1node07/bda/bds-exa-install.sh

2. 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. dba権限(sysdbaとしてsysに接続できる)のある任意のユーザーとしてスクリプトを実行します。

以前にこのノード上でインストール後スクリプトを実行していない場合、スクリプトの個別の実行でrootとして実行する必要のある初回操作がいくつかあります。その場合、bds-exa-install.shを実行すると、スクリプトが一時停止し、それを別のシェルでrootとして実行するように求められます。rootとしての実行が完了したら、保留中のスクリプトに戻り、[Enter]を押して続行します。

以前にこのノード上でインストール後スクリプトをすでに実行している場合には、この2段階の手順は不要です。その場合、次のように--no-root-scriptを使用してプロンプトを無視します。

./bds-exa-install.sh --no-root-script

インストール後スクリプトが初めてこのノード上で実行される場合、かわりにパラメータなしでbds-exa-install.shを入力します。スクリプトは一時停止し、次のように別のシェルで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: platform is Linux
bds-exa-install: setup script started at   : Sun Feb 14 20:06:17 PST 2016
bds-exa-install: bds version               : bds-3.0-1.el6.x86_64
bds-exa-install: bda cluster name          : mycluster1
bds-exa-install: bda web server            : mycluster1bda16.us.oracle.com
bds-exa-install: cloudera manager url      : mycluster1bda18.us.oracle.com:7180
bds-exa-install: hive version              : hive-1.1.0-cdh5.5.1
bds-exa-install: hadoop version            : hadoop-2.6.0-cdh5.5.1
bds-exa-install: bds install date          : 02/14/2016 12:00 PST
bds-exa-install: bd_cell version           : bd_cell-12.1.2.0.100_LINUX.X64_160131-1.x86_64
bds-exa-install: action                    : setup
bds-exa-install: crs                       : true
bds-exa-install: db resource               : orcl
bds-exa-install: database type             : SINGLE
bds-exa-install: cardinality               : 1
bds-exa-install: root shell script         : /u03/app/oracle/product/12.1.0/dbhome_1/install/bds-root-mycluster1-setup.sh
please run as root:

/u03/app/oracle/product/12.1.0/dbhome_1/install/bds-root-mycluster1-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
bds-exa-install: working directory         : /u03/app/oracle/product/12.1.0/dbhome_1/install
bds-exa-install: downloading JDK
bds-exa-install: working directory         : /u03/app/oracle/product/12.1.0/dbhome_1/install
bds-exa-install: installing JDK tarball
bds-exa-install: working directory         : /u03/app/oracle/product/12.1.0/dbhome_1/bigdatasql/jdk1.8.0_66/jre/lib/security
bds-exa-install: Copying JCE policy jars
/bin/mkdir: cannot create directory `bigdata_config/mycluster1': File exists
bds-exa-install: working directory         : /u03/app/oracle/product/12.1.0/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         : /u03/app/oracle/product/12.1.0/dbhome_1/bigdatasql
bds-exa-install: downloading               : hadoop-2.6.0-cdh5.5.1.tar.gz
bds-exa-install: downloading               : hive-1.1.0-cdh5.5.1.tar.gz
bds-exa-install: unpacking                 : hadoop-2.6.0-cdh5.5.1.tar.gz
bds-exa-install: unpacking                 : hive-1.1.0-cdh5.5.1.tar.gz
bds-exa-install: working directory         : /u03/app/oracle/product/12.1.0/dbhome_1/bigdatasql/hadoop-2.6.0-cdh5.5.1/lib
bds-exa-install: downloading               : cdh-ol6-native.tar.gz
bds-exa-install: creating /u03/app/oracle/product/12.1.0/dbhome_1/bigdatasql/hadoop_mycluster1.env for hdfs/mapred client access
bds-exa-install: working directory         : /u03/app/oracle/product/12.1.0/dbhome_1/bigdatasql
bds-exa-install: creating bds property files
bds-exa-install: working directory         : /u03/app/oracle/product/12.1.0/dbhome_1/bigdatasql/bigdata_config
bds-exa-install: created bigdata.properties
bds-exa-install: created  bigdata-log4j.properties
bds-exa-install: creating default and cluster directories needed by big data external tables
bds-exa-install: note this will grant default and cluster directories to public!
catcon: ALL catcon-related output will be written to /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon_catcon_29579.lst
catcon: See /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon*.log files for output generated by scripts
catcon: See /u03/app/oracle/product/12.1.0/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: mta set to use listener end point : EXTPROC1521
bds-exa-install: mta will be setup
bds-exa-install: creating /u03/app/oracle/product/12.1.0/dbhome_1/hs/admin/initbds_orcl_mycluster1.ora
bds-exa-install: mta setting agent home as : /u03/app/oracle/product/12.1.0/dbhome_1/hs/admin
bds-exa-install: mta shutdown              : bds_orcl_mycluster1
bds-exa-install: registering crs resource  : bds_orcl_mycluster1
bds-exa-install: using dependency db resource of orcl
bds-exa-install: starting crs resource     : bds_orcl_mycluster1
CRS-2672: Attempting to start 'bds_orcl_mycluster1' on 'mycluster1bda09'
CRS-2676: Start of 'bds_orcl_mycluster1' on 'mycluster1bda09' succeeded
NAME=bds_orcl_mycluster1
TYPE=generic_application
TARGET=ONLINE
STATE=ONLINE on mycluster1bda09

bds-exa-install: patching view LOADER_DIR_OBJS
catcon: ALL catcon-related output will be written to /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon_catcon_30123.lst
catcon: See /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon*.log files for output generated by scripts
catcon: See /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon_*.lst files for spool files, if any
catcon.pl: completed successfully
bds-exa-install: creating mta dblinks
bds-exa-install: cluster name              : mycluster1
bds-exa-install: extproc sid               : bds_orcl_mycluster1
bds-exa-install: cdb                       : true
catcon: ALL catcon-related output will be written to /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon_dbcluster_dropdblink_catcon_30153.lst
catcon: See /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon_dbcluster_dropdblink*.log files for output generated by scripts
catcon: See /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon_dbcluster_dropdblink_*.lst files for spool files, if any
catcon.pl: completed successfully
catcon: ALL catcon-related output will be written to /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon_default_dropdblink_catcon_30179.lst
catcon: See /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon_default_dropdblink*.log files for output generated by scripts
catcon: See /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon_default_dropdblink_*.lst files for spool files, if any
catcon.pl: completed successfully
catcon: ALL catcon-related output will be written to /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon_dbcluster_createdblink_catcon_30205.lst
catcon: See /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon_dbcluster_createdblink*.log files for output generated by scripts
catcon: See /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon_dbcluster_createdblink_*.lst files for spool files, if any
catcon.pl: completed successfully
catcon: ALL catcon-related output will be written to /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon_default_createdblink_catcon_30231.lst
catcon: See /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon_default_createdblink*.log files for output generated by scripts
catcon: See /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon_default_createdblink_*.lst files for spool files, if any
catcon.pl: completed successfully
catcon: ALL catcon-related output will be written to /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon_catcon_30257.lst
catcon: See /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon*.log files for output generated by scripts
catcon: See /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon_*.lst files for spool files, if any
catcon.pl: completed successfully
catcon: ALL catcon-related output will be written to /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon_catcon_30283.lst
catcon: See /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon*.log files for output generated by scripts
catcon: See /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon_*.lst files for spool files, if any
catcon.pl: completed successfully
bds-exa-install: setup script completed all steps

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

複数インスタンス・データベースの場合、各インスタンスに対して手順6を繰り返します。

スクリプトが終了すると、Oracle 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%';

注意:
Oracle Big Data SQLエージェントが停止した場合、再起動する必要があります。「Big Data SQLエージェントの起動および停止」を参照してください。

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

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

2.2.2.2 bds-exa-install構文

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

Usage: bds-exa-install oracle-sid=<orcl>
(
--version
--info
--root-script-only
--no-root-script
--uninstall-as-primary
--uninstall-as-secondary
--install-as-secondary
--jdk-home=<dir>
--grid-home=<dir>
)*

Options
--version
Prints the script version.
--info
Print information such as the cluster name, CM host, Oracle Big Data Appliance HTTP server.
--root-script-only
Only generate the root script.
--no-root-script
Do not generate the root script. This can be used for second and subsequent runs of bds-exa-install on a node.
--uninstall-as-primary
Uninstall the cluster, including hadoop client JARs.
In the bds-exa-install context, to "uninstall" a cluster means to unregister the cluster with the database.
Note: if any other clusters should remain registered after removing the primary, then
one cluster must be reinstalled as primary and any others as secondaries.
--uninstall-as-secondary
Attempt to uninstall the cluster as a secondary cluster.
--install-as-secondary
Default = false.
Do not install client libraries, etc. The primary cluster will not be affected.
In the bds-exa-install context, to "install" a cluster means to register the
cluster with the database.
--jdk-home
For example: /opt/oracle/bd_cell12.1.2.0.100_LINUX.X64_150912.1/jdk
--grid-home
Oracle Grid Infrastructure home.
For example: "/opt/oracle/bd_cell12.1.2.0.100_LINUX.X64_150912.1/../grid"

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

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

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

$ ./bds-exa-install.sh --db-name=<dbresource> --grid-home=<grid home>  --no-root-script --debug
OR
$ ./bds-exa-install.sh --no-root-script --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.2.3 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.2.4 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.2.5 Big Data SQLエージェントの起動および停止

データベース上のBig Data SQLエージェントはOracle Clusterwareにより管理されます。Big Data SQLのインストール中にエージェントがOracle Clusterwareに登録され、データベースを自動的に起動および停止します。ステータスを確認するために、Oracle Grid InfrastructureホームまたはOracle Clusterwareホームからmtactl statusを実行できます。

# mtactl status bds_databasename_clustername

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

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

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

2.3.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.1.0.0 for Linux x86-64」を選択します。

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

6. リストからHadoopシステムに適したzipファイルを選択します。他のパッケージは必要はありません。

Big Data SQL (3.0.1)
V266870-01.zip Oracle Big Data SQL 3.0.1 installer for Hortonworks Data Platform
V266871-01.zip Oracle Big Data SQL 3.0.1 installer for Cloudera Enterprise

7. ファイルをダウンロードし、内容を抽出します。

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

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

ファイル

説明

setup-bds

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

bds-config.json

構成ファイル。

api_env.sh

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

platform_env.sh

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

BIGDATASQL-1.0.jar

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

bin/json-select

JSON-selectユーティリティ

db/bds-database-create-bundle.sh

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

db/database-install.zip

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

repo/BIGDATASQL-1.0.0-el6.parcel

parcelファイル(CDH製品バンドルのみ)

repo/manifest.json

parcelファイルのハッシュ・キー(CDH製品バンドルのみ)

BIGDATASQL-1.0.0-el6.stack

スタック・ファイル(HDP製品バンドルのみ)

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

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

実行中のサービス

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

- HDP

- Ambari

- HDFS

- YARN

- Zookeeper

- Hive

- Tez

パッケージ

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

- JDKバージョン1.7以上

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

システム・ツール

- curl

- rpm

- scp

- tar

- unzip

- wget

- yum

環境設定

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

- ntp有効

- iptables無効

- /usr/java/defaultが存在し、適切なJavaのバージョンにリンクされていることを確認します。 最新のJavaバージョンにリンクするには、rootとして次のように実行します。

$ ln -s /usr/java/latest /usr/java/default

Oracle Big Data SQLがすでにインストールされている場合

Ambari Web GUIでBig Data SQLサービスがすでにインストールされていることが示された場合、再インストールの前にすべてのBig Data SQL Cellコンポーネントが停止されていることを確認します。(他のサービス同様、「actions」ボタンを使用します。)

2.3.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's Distribution including Apache Hadoop (CDH)

- HDFS

- YARN

- Zookeeper

- Hive

パッケージ

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のバージョンにリンクされていることを確認します。 最新のJavaバージョンにリンクするには、rootとして次のように実行します。

$ ln -s /usr/java/latest /usr/java/default

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

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

Oracle Big Data SQLがすでにインストールされている場合

Configuration ManagerでBig Data SQLサービスがすでにインストールされていることが示された場合、再インストールの前にすべてのBig Data SQL Cellコンポーネントが停止されていることを確認します。

2.3.4 インストールの概要

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- ダウンロード(BigDataSQL-CDH-<version>.zipまたはBigDataSQL-HDP-<version>.zipのいずれか)から保存されたBIGDATASQL製品バンドルからファイルを抽出し、バンドル内にある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. 適切なzipファイル(BigDataSQL-CDH-<version>.zipまたはBigDataSQL-HDP-<version>.zip)をクラスタ管理サーバーの一時的な場所にコピーします。

2. ファイルを解凍します。

3. 使用しているプラットフォームに応じて、ディレクトリをBigDataSQL-HDP-<version>またはBigDataSQL-CDH-<version>のいずれかに変更します。

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

- CDHの場合は、この例のようにbds-config.jsonを編集します。使用されていないポートはWebサーバー・ポートとして機能します。

{
"CLUSTER_NAME" : "cluster",
"CSD_PATH" : "/opt/cloudera/csd",
"DATABASE_IP" : "10.12.13.14/24",
"REST_API_PORT" : "7180",
"WEB_SERVER_PORT" : "81",
}

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

{
"CLUSTER_NAME" : "clustername",
"DATABASE_IP" : "10.10.10.10/24",
"REST_API_PORT" : "8080",
}

DATABASE_IPは、インストールを実行するデータベース・ノードに対して正しいネットワーク・インタフェース・アドレスである必要があります。これは、データベース・ノードで/sbin/ip -o -f inet addr showを実行して確認できます。

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

$ ./setup-bds bds-config.json

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

構成パラメータ

用途

適用対象

CLUSTER_NAME

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

CDH、HDP

CSD_PATH

カスタム・サービス・ディスクリプタ・ファイルの場所。このユーザー定義CSDパスは、デフォルトのパスが存在しないときのみ使用されるフォールバックです。デフォルトのCSD_PATHをオーバーライドしません。

CDHのみ

DATABASE_IP

接続リクエストを行うOracle DatabaseサーバーのIPアドレス。アドレスには(100.112.10.36/24のように)接頭辞の長さを含める必要があります。構成ファイルでは1つのIPアドレスのみが指定されますが、インストール時にDATABASE_IPをオーバライドするコマンドライン・パラメータを使用することによって、複数のデータベース・サーバーに(RAC環境内のように)データベース側のソフトウェアをインストールできます。(表2–6の--ip-cellの説明を参照してください。)

CDH、HDP

REST_API_PORT

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

CDH、HDP

WEB_SERVER_PORT

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

CDHのみ。

重要
DATABASE_IPに対して指定されたアドレスが、データベース・サーバー上のネットワーク・インタフェースの正しいアドレスであるように、またHadoopシステムの各DataNodeからアクセスできるようにしてください。そうでない場合、インストールは失敗します。データベースIPが、各DataNodeからのpingに応答することをテストできます。また、現在、アドレス文字列(接頭辞の長さを含める)は9文字以上の長さである必要があります。

Oracle Big Data SQLサービスがただちに失敗する場合

AmbariまたはConfiguration Managerによって、Oracle Big Data SQLサービスの起動直後にサービスの失敗が報告される場合、次のことを実行します。

1. 失敗時に次のエラーについて、クラスタ管理サーバーのセル・サーバー(CELLSRV)ログを確認します。

ossnet_create_box_handle: failed to parse ip : <IP Address>

2. エラーメッセージ内のIPアドレス長が9文字未満、たとえば10.0.1.4/24などの場合、クラスタ管理サーバーで、/opt/oracle/bd_cell/cellsrv/deploy/config/cellinit.oraの中からこのアドレスを探します。次のように、オクテットのうちの1つ以上を先行ゼロでパディングして合計を9文字以上の長さになるように、この文字列を編集します。

ipaddress1=10.0.1.004/24

3. Oracle Big Data SQLサービスを再起動します。

この回避策は、次のOracle Big Data SQLリリースでは必要なくなります。

setup-bds.shのコマンドライン・スイッチ

setup-bds.shスクリプトにはいくつかのオプション・スイッチがあります。これらは、bds_config.json内の構成のオーバーライドではありません。これらは、次の表で説明するように、setup-bds.shの動作を変更します。いずれの場合も、bds_config.jsonファイル名が、./setup-bds.sh <switch> bds_config.jsonのように引数として渡されます。

表2-3 setup-bds.shのコマンドライン・スイッチ

スイッチ

説明

使用方法

--db-bundle

データベース・バンドル構成ファイルを再作成するか更新します。これは、データベース・バンドルを再作成または更新するためにbds-database-create-bundle.shを使用する必要がある場合に、必要になる可能性のある予備手段です。たとえば、クラスタ構成設定内での変更のために、データベース・バンドルを再構築および再デプロイする必要のある場合があります。その場合、元のファイルが古いか見つからない場合に、setup-bds.shをこのオプション・スイッチとともに実行して、構成ファイルを再作成します。
構成ファイルの再作成後、bds-database-create-bundle.sh --clean_previousを実行して新しい構成設定でバンドルを再構築できます。

./setup-bds.sh --db-bundle bds-config.json

--uninstall

Oracle Big Data SQLをHadoopクラスタ管理サーバーから削除します。「Oracle Big Data SQLの削除」を参照してください。

./setup-bds.sh --uninstall bds-config.json

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

クラスタ管理サーバーで、Oracle Big Data SQLダウンロードからデータベース・バンドル作成スクリプトを実行して、Oracle Databaseサーバーに製品をインストールするためのインストール・バンドルを作成します。スクリプトが必要とする外部リソースの一部に管理サーバーからアクセスできない場合、それらを手動で追加できます。

データベース・バンドル作成スクリプトは、次のものをダウンロード試行します。

- ClouderaまたはHortonworksリポジトリWebサイトからのHadoopおよびHiveクライアントtarball。

- Cloudera Manager (CDHバージョン用)またはAmbari (HDPバージョン用)を介した、クラスタ管理サーバーからのYarnおよびHiveの構成ファイル。

- HDPのみ、AmbariからのHDFSおよびMapReduce構成ファイル。

1. ディレクトリをBigDataSQL-CDH-<version>/dbまたは(BigDataSQL-HDP-<version>/db)に変更します。

2. BDSデータベース・バンドル作成スクリプトを実行します。デフォルト設定をオーバーライドするためにスクリプトに渡すことができるオプションのパラメータについては、この後の表を参照してください。

$ bds-database-create-bundle.sh <optional parameters>

操作が成功した場合、次のメッセージが返されます。

bds-database-create-bundle: database bundle creation script completed all steps

データベース・バンドル・ファイルには複数のパラメータが含まれています。必要に応じて任意のパラメータを変更できます。指定されるURLは、bds-database-create-bundle.shの実行時にクラスタ管理サーバーからアクセスできる必要があります。

表2-4 bds-database-create-bundle.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

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

--jdk-tar-path

デフォルトのJDKパスをオーバライドします。相対パスを指定せず、--jdk-tar-path=<jdk tarfile absolute path>を使用します。

--clean-previous

以前のバンドル・ファイルとディレクトリをbds-database-install/から削除します クラスタ管理サーバーのクラスタ設定が変更された場合(たとえば、拡張、サービス・ノードの移行、セキュリティの追加または削除など)、データベース・サーバーでインストールを再実行する必要があります。この再インストールの一環として、--clean-previousを実行し、前のインストールからデータベース・サーバー側に残されたクラスタ情報をパージする必要があります。

--script-only

これは、データベース・サーバーに伝えるクラスタ構成の変更がなく、データベース側でファイル(クライアントtarballなど)をリフレッシュする必要がない場合に、データベース側での再インストールに便利です。このスイッチでは、bds-database-create-bundle.shは、データベース・インストール・スクリプトのみを含み、tarballなどの他のコンポーネントはバンドルしないzipファイルを生成します。これらがすでにデータベース・サーバーに存在する場合には、--script-onlyを使用してこれらの大きいファイルのダウンロードおよびパッケージングを省略できます。この場合、--clean-previousを含めないでください。

--hdfs-conf-ws

HDFS構成zipファイルをダウンロードするためのURLを指定します。

--no-hdfs-conf-ws

このダウンロードを除外します(HDPのみ)。

--mapreduce-conf-ws

MapReduce構成zipファイルをダウンロードするためのURLを指定します(HDPのみ)。

--no-mapreduce-conf-ws

このダウンロードを除外します(HDPのみ)。

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

デフォルトのダウンロード・サイトの1つ以上がクラスタ管理サーバーからアクセスできない場合、この問題を回避する方法が2つあります。

- 先に別のサーバーからファイルをダウンロードしてから、代替パスで引数としてbds-database-create-bundle.shを指定します。次に例を示します。

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

- スクリプトが最初にローカルの/bds-database-installでリソースを検索するため、ファイルを別のサーバーにダウンロードしてから、クラスタ管理サーバー上の/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-create-bundle.sh

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

scpを使用して、作成したデータベース・バンドルをOracle Databaseサーバーにコピーできます。次の例では、dbnodeがデータベース・サーバーです。ここでのLinuxアカウントおよびターゲット・ディレクトリは任意です。指定されたパスにscpする権限のある任意のアカウントを使用します。

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

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

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

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

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

この項の情報は、Oracle Big Data Applianceに接続されたOracle Exadata Database MachineへのOracle Big Data SQLのインストールには適用されません。

重要

複数ノード・データベースでは、このインストールをデータベースのノードごとに繰り返す必要があります。各ノードに対して、正しいネットワーク・インタフェースを特定するために、インストール・バンドルのDATABASE_IPパラメータを変更する必要があります。これは、「構成済のDatabase_IPアドレスを変更する必要がある場合」の項で説明されています。

必要なソフトウェア

サポートされるLinuxディストリビューション、Oracle Databaseリリース・レベルおよび必要なパッチについては、My Oracle Supportの『Oracle Big Data SQL Master Compatibility Matrix』(Doc ID 2119369.1)を参照してください。

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

推奨されるHadoopクラスタへのネットワーク接続

Oracle DatabaseとHadoopクラスタの間では10Gb/sのイーサネット接続をお薦めします。

Big Data SQLインストール・スクリプトの抽出および実行

この項の手順は、sudoが示されている場合を除き、oracleユーザーとして実行します。

1. クラスタ管理サーバーからコピーしたデータベース・バンドルzipファイル特定します。

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

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

4. bds-database-install.shを実行します。表2-5に示されるオプション・パラメータを参照してください。
bds-database-install.shで/etc/oracle/cell/network-config/cellinit.oraが見つかり、これを更新した場合、インストールは完了します。そうでない場合、次のプロンプトが表示されます。

Please run as root:
<temporary location>/bds-root-cluster-cellconfigdir.sh
Waiting for root script to complete. Press <Enter> to continue checking or press q<Enter> to quit.

このプロンプトは、network-configディレクトリ、cellinit.ora、またはその両方が/etc/oracle/cell/network-config/cellinit.oraに見つからない場合にのみ表示されます。次の訂正処置を実行できるよう、インストールは一時的に停止されます。(この時点で続行しない場合には、[q]を押してから[Enter]を押すとインストールを取り消すことができます。)

5. 別のシェルを起動し、セカンダリ・スクリプトbds-root-cluster-cellconfigdir.shをrootとして、またはsudoを介して実行します。
スクリプトは、必要であれば完全なパスを作成します。cellinit.oraがない場合にはこのファイルが作成され、インストールを続行できる一時IPアドレスを使用して移入されます。

6. bds-root-cluster-cellconfigdir.shが完了したら、元のシェルに戻り[Enter]を押してインストールを再開します。
インストールでデータベースの正しいIPアドレスおよび他の必要なパラメータがcellinit.oraに入力されます。

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

パラメータ

機能

--db-name

Oracle Database SIDを指定します。

--debug

シェルのトレース・モードをアクティブにします。問題を報告する場合に、Oracleサポートがこの出力を確認する必要とする場合があります。

--grid-home

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

--info

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

--ip-cell

db_cellプロセスに特定のIPアドレスを設定します。次の「構成済のDatabase_IPアドレスを変更する必要がある場合」を参照してください。

--install-as-secondary

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

--jdk-home

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

--root-script-only

rootスクリプトのみを生成します。

--uninstall-as-primary

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

--uninstall-as-secondary

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

--version

bds-database-install.shスクリプトのバージョンを示します。

構成済のDatabase_IPアドレスを変更する必要がある場合

bds-config.jsonファイル内のDATABASE_IPパラメータは、データベース・ノードのネットワーク・インタフェースを指定します。パラメータを渡さずにbds-database-install.shを実行した場合、使用可能なネットワーク・インタフェースの中から(特にその長さの)IPアドレスが検索されます。構成済のDATABASE_IP設定をオーバライドするために、bds-database-install.shに––ip-cellパラメータを渡すことができます。

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

これを実行する考えられ得る理由は次のとおりです。

- bds-database-install.shがエラーで終了する。構成されたIPアドレス(または長さ)が間違っている可能性がある。

- クラスタに追加のデータベース・ノードがあり、定義されたDATABASE_IPアドレスが現在のノードのネットワーク・インタフェースではない。

- 接続が複数ノード・データベースへのものである。この場合、各データベース・ノードでインストールを実行します。各ノードで、––ip-cellパラメータを使用して正しいDATABASE_IP値を設定します。

ip-cellの正しい値を判断するには、次のようにノード上のすべてのネットワーク・インタフェースを一覧表示します。

/sbin/ip -o -f inet addr show

2.3.8 Oracle Big Data SQLの削除

Oracle Big Data SQLは、Hadoopクラスタ管理サーバー、またはクラスタ管理サーバーに接続されたOracle Databaseサーバーから削除できます。手順は、すべてのHadoopプラットフォームと同じです。

Oracle Big Data SQLを削除するガイドラインは次のとおりです。

- Oracle Big Data SQLの完全削除を実行するには、クラスタ管理サーバーおよびBDSサービスに接続された各Oracle Databaseサーバーから、このソフトウェアを削除します。
これは各サーバーでの単一のスクリプト実行です。他の手動の手順は必要ありません。

- クラスタ管理サーバーから先に削除することも、データベース・サーバーから先に削除することもできます。
ただし、クラスタ管理サーバーから先に削除した場合、処理中の問合せは失敗します。

- データベース・サーバー側で、プライマリ・ノードから削除する前に、セカンダリ・ノードから削除します。
これは削除のプロセスにとって重大ではありませんが、プライマリ・ノードがサービスから切断された場合、セカンダリ・ノードからのアクティブの問合せは失敗します。

- Hadoopクラスタ管理サーバー上のBig Data SQLサービスの動作に影響を与えずに、1つ以上のセカンダリ・データベース・ノードから削除できます。

Hadoopクラスタ管理サーバーからのソフトウェアの削除

- bds-database-installディレクトリから、次のコマンドをrootとして実行します。

# ./setup-bds --uninstall bds-config.json

スクリプトは次の標準出力を返します。この例の目的のため、注釈および名前の変更が含まれています。

Big Data SQL  //including the version
Big Data SQL: Loading Configuration File
Big Data SQL: Configuration File Loaded Successfully
Big Data SQL: Beginning API setup, you will be asked for your Ambari admin user and password.
Big Data SQL: REST API port is 8080
Big Data SQL: Identifying protocol for connection..
Big Data SQL: REST API version is v1

Ambari Admin User:   //or Configuration Manager admin user
Password:

Big Data SQL: API setup finished successfully.
Big Data SQL: Cluster myclusterexample verified.
Big Data SQL: Big Data SQL service was detected. Beginning uninstall
Big Data SQL: Stopping Big Data SQL service in order to begin uninstall.
Big Data SQL: Executing Asynchronous Command....
Big Data SQL: Asynchronous Command Completed!
Big Data SQL: Big Data SQL service Stopped!
Big Data SQL: Cell nodes: myclusterexample-adm.myregion.mydomain.com,mybdanode08-adm.myregion.mydomain.com,mybdanode09-adm.myreqion.mydomain.com
Big Data SQL: Executing Asynchronous Command...
Big Data SQL: Asynchronous Command Completed!
Big Data SQL: Deleted previous Big Data SQL service.
Big Data SQL: Beginning Cleanup of the Ambari Server Node.
Big Data SQL: Stack root directory found: /var/lib/ambari-server/resources/stacks/HDP/2.4/services
Big Data SQL: Removing Big Data SQL Stack directory
Big Data SQL: Removing Big Data SQL Log directory
Big Data SQL: Cleaning up installation...
Big Data SQL: Finished!

Oracle Databaseサーバーからのソフトウェアの削除

- Oracle Big Data SQLを削除する任意のデータベース・サーバーで、次の適切なコマンドをデータベース所有者(通常はoracleユーザー)として実行します。

# ./bds-database-install.sh --uninstall-as-secondary

または

# ./bds-database-install.sh --uninstall-as-primary

--uninstall-as-secondaryスイッチを使用してソフトウェアをプライマリ・ノードから削除する場合、データベース・オブジェクトのクリーン・アップが不完全になります。これは削除を再度実行することで修正できます。クリーンアップの目的で2回目の削除を実行した場合、エラーメッセージが表示される場合がありますが、クリーン・アップは正常に完了するはずです。

次の例は、bds-database-install.sh --uninstall-as-primaryの出力を示しています。--uninstall-as-secondaryの出力も同様です。この場合、コマンドはCDHクラスタで実行されますが、HDPクラスタでの出力の違いはわずかです。

oracle@mynode42bda06$ ./bds-database-install.sh --uninstall-as-primary
bds-database-install: platform is               : Linux
bds-database-install: setup script started at   : Wed May 25 11:49:07 PDT 2016
bds-database-install: cluster type              : cdh
bds-database-install: cluster name              : myclusterexample
bds-database-install: hive version              : hive-1.1.0-cdh5.7.0
bds-database-install: hadoop version            : hadoop-2.6.0-cdh5.7.0
bds-database-install: bds version               : Big Data SQL 3.0.1
bds-database-install: bds install date          : Fri May 13 10:45:59 PDT 2016
bds-database-install: bd_cell version           : bd_cell-12.1.2.0.100_LINUX.X64_151208.1100-1.x86_64
bd_cell-12.1.2.0.100_LINUX.X64_160511.1100-1.x86_64
bds-database-install: cell config dir           : /etc/oracle/cell/network-config
bds-database-install: configured cell network   : 10.101.4.13/20
bds-database-install: allow multiple subnets    : _skgxp_ant_options=1
bds-database-install: use UDP protocol          : _skgxp_dynamic_protocol=2
bds-database-install: cellaffinity.ora file     : missing
bds-database-install: configured DB network     : 10.245.129.72/21
bds-database-install: action                    : uninstall
bds-database-install: crs                       : true
bds-database-install: db resource               : orcl
bds-database-install: database type             : SINGLE
bds-database-install: cardinality               : 1
bds-database-uninstall: removing: oracle-hadoop-sql.jar ora-hadoop-common.jar oraloader.jar kvclient.jar orahivedp.jar
bds-database-uninstall: removing: client jars hadoop-2.6.0-cdh5.7.0
bds-database-uninstall: removing: client jars hive-1.1.0-cdh5.7.0
bds-database-uninstall: mta setting agent home as : /u03/app/oracle/product/12.1.0/dbhome_1/hs/admin
bds-database-uninstall: stopping crs resource     : bds_orcl_myclusterexample
CRS-2673: Attempting to stop 'bds_orcl_myclusterexample' on 'mynode42bda06'
CRS-2677: Stop of 'bds_orcl_myclusterexample' on 'mynode42bda06' succeeded
bds-database-uninstall: deleting crs resource     : bds_orcl_myclusterexample
bds-database-uninstall: removing /u03/app/oracle/product/12.1.0/dbhome_1/hs/admin/initbds_orcl_myclusterexample.ora
bds-database-uninstall: dropping mta related db links
catcon: ALL catcon-related output will be written to /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon_catcon_5$51.lst
catcon: See /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon*.log files for output generated by scripts
catcon: See /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon_*.lst files for spool files, if any
catcon.pl: completed successfully
catcon: ALL catcon-related output will be written to /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon_catcon_5$01.lst
catcon: See /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon*.log files for output generated by scripts
catcon: See /u03/app/oracle/product/12.1.0/dbhome_1/install/bdscatcon_*.lst files for spool files, if any
catcon.pl: completed successfully
bds-database-uninstall: uninstalled               : myclusterexample

2.3.9 Big Data SQLの保護

Oracle Big Data Appliance以外のHortonworks HDPおよびCDHベースのシステム上のOracle Big Data SQLを保護する手順は、このガイドのこのバージョンでは対応していません。詳細は、この項で参照されているMOSドキュメントを参照してください。

2.3.9.1 Big Data SQLの通信とセキュアなHadoopクラスタ

Big Data SQLとの使用においてHadoopクラスタを保護するガイドラインについては、My Oracle SupportのMOSドキュメント2123125.1を参照してください。

2.3.9.2 Oracle Big Data SQLおよびOracle Secure External Password Storeの設定

Oracle Secure External Password StoreをOracle Big Data SQLとともに使用するために必要な変更については、MOSドキュメント2126903.1を参照してください

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とは

Oracle Big Data SQLには、Oracle Copy to Hadoopユーティリティが含まれています。このユーティリティを使用すると、Oracleデータの識別とHadoop Distributed File Systemへのコピーが簡単になります。これには、コマンドライン・インタフェースまたはOracle SQL Developerを介してアクセスできます。Copy to HadoopによってHadoopクラスタにエクスポートされたデータは、Oracle Data Pump形式で格納されます。この形式は、次のようにBig Data SQLを介した問合せを最適化します。

- データはOracleデータ型として格納される – データ型変換がなくなる

- データが直接問い合される – Java SerDesに関連するオーバーヘッドを必要としない

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

Copy to Hadoopは、Oracle Big Data SQLでライセンス供与されます。ユーティリティを使用するには、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をインストールした後で追加の手順が必要です。手順はMOSノート、『Big Data SQL 3.0: Installing and Configuring Copy to Hadoop』 (Doc ID 2115762.1)を参照してください。質問がある場合、Oracleサポートに問い合せてください。

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

Copy to Hadoopを使用するには、Oracle Big Data SQLをインストールした後で追加の構成手順が必要です。手順はMOSノート、『Big Data SQL 3.0: Installing and Configuring Copy to Hadoop』 (Doc ID 2115762.1)を参照してください。質問がある場合、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

4.7 Oracle Shell for Hadoop LoadersのCopy to Hadoopとの使用

4.7.1 Oracle Shell for Hadoop Loadersの概要

Oracle Shell for Hadoop Loadersとは

Oracle Shell for Hadoop Loadersは、Oracle Loader for Hadoop、Oracle SQL Connector for HDFSおよびCopy to Hadoopに簡単に使用できるコマンドライン・インタフェースを提供するヘルパー・シェルです。 コマンドライン・リコール、履歴、親プロセスからの環境変数の継承、 新規または既存の変数の設定、およびコマンドラインでの環境の取替えの実行などの基本的なシェル機能があります。

Oracle Shell for Hadoop Loadersの中心的な機能には次のものが含まれます。

- Oracle Shell for Hadoop Loadersが対話してロード・タスクを実行する名前付き外部リソースの定義。

- ロード操作用のデフォルト値の設定。

- ロード・コマンドの実行。

- 単純な事前および事後ロード・タスクの、オペレーティング・システム、HDFS、HiveおよびOracleへの委任。 これらのタスクには、ロードされるデータの表示およびロード後のターゲット表でのデータの表示が含まれます。

Oracle Shell for Hadoop Loadersの概要

OHSHキットのexamplesディレクトリには、Oracle Shell for Hadoop Loadersを使用してリソースを定義したり、データをロードする多くの例が含まれています。 これらを実行する例および手順の詳細は、<OHSH_KIT>/examples/README.txtを参照してください。

ヘルプの表示

OHSHシェルには、すべてのコマンドのオンライン・ヘルプがあります。

可能なすべてのOHSHコマンドのリストを表示するには、次のコマンドを実行します。

ohsh> help

特定のコマンドのヘルプを表示するには、helpの後にそのコマンドを続けます。

ohsh> help show

4.7.2 Oracle Shell for Hadoop Loadersの設定

前提条件

Oracle Databaseサーバー上での前提条件は次のとおりです。

- Copy to Hadoopがインストールされている

- HadoopおよびHiveのクライアント・ライブラリがインストールされ、構成されている

- SQL*Plusがインストールされている

- Oracle DatabaseへのJDBCアクセスがある。

Oracle Big Data ConnectorsのOLHおよびOSCHのインストールはオプションです。

Oracle Shell for Hadoop Loadersのインストール

Oracle Databaseサーバー上にOracle Shell for Hadoop Loadersを設定するには、次の各項の手順に従います。

1. Oracle Big Data SQLがインストールされた後で、$ORACLE_HOME/bigdatasql/ohsh-<version>.zipでOracle Shell for Hadoop Loadersのダウンロード・パッケージを探します。

2. ohsh-<version>.zipの内容をデータベース上の選択したディレクトリに抽出します。
この抽出によって、README.txtファイルと次のサブディレクトリを持つohsh-<version>という名前のディレクトリが作成されます。

README.txt
/bin
/conf
/doc
/examples
/jlib

3. README.txtの手順に従って、Oracle Shell for Hadoop Loadersを構成します。

/docディレクトリには、Hadoopノード、データベース・ノードおよびエッジ・ノードにソフトウェアをインストールする手順、Hive表のロードのセキュリティ・モデルの説明、および他の役立つ情報が記載された追加のREADMEファイルがあります。

[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について」を参照してください。

データ型変換は、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.buffersize

大きいレコード読取りのバッファ・サイズをKBで設定します。デフォルトのバッファ・サイズよりも大きいレコードを読み取る必要がある場合にこの値を設定します。

デフォルト値

1000 KB

構文

com.oracle.bigdata.buffersize: n

例

次の例ではバッファ・サイズを100 MBに設定します。

com.oracle.bigdata.buffersize: 100000

5.2.5 com.oracle.bigdata.colmap

ソース・データの列をOracle外部表の列にマップします。ソース・フィールド名がOracle列名の最大長を超える場合、または外部表で別の列名を使用する場合、このプロパティを使用します。

デフォルト値

Hive列と同じ名前を持つ外部表の列

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

colmap ::=

図GUID-C05929CA-F411-4AA6-AF75-C8AB5D5A4415-default.gifの説明

colmap_entry ::=

図GUID-F5297772-47C7-446F-A8A6-43EC0F184B06-default.gifの説明

セマンティクス

"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.6 com.oracle.bigdata.datamode

SmartScanがHadoopデータ・ソースをスキャンするために使用する方法を指定します。方法によって、パフォーマンスに大きな違いが生じる可能性があります。

デフォルト値

automatic

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

datamode ::=

図GUID-D083D311-F550-4175-A280-AD44A0CDD564-default.gifの説明

セマンティクス

automatic

メタデータに基づいて適切なモードを自動的に選択します。可能な場合はcモードを選択します。データにcモードでサポートされていない形式が含まれる場合は、javaモードを選択します。

c

ファイル・バッファを読み取る場合はJavaを使用しますが、データを処理してOracle形式に変換する場合はCコードを使用します。デリミタ付きデータにこのモードを指定します。

データにCコードでサポートされていない形式が含まれる場合は、エラーが返されます。

java

データを処理してOracle形式に変換する場合は、Java SerDesおよびInputFormatsを使用します。Parquet、RCFileおよびSerDeを必要とする他のデータ形式にこのモードを指定します。

5.2.7 com.oracle.bigdata.erroropt

列の値の計算中に発生するエラーを処理する方法を示します。

デフォルト値

{"action":"setnull"}

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

erroropt ::=

図GUID-CA586EB8-2E8D-47D4-8018-DECC0662AE2B-default.gifの説明

error_element ::=

図GUID-110FDB97-AA66-4097-9AD2-A11DAF2E7756-default.gifの説明

セマンティクス

"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.8 com.oracle.bigdata.fields

データ・ソースのフィールド名およびデータ型をリストします。

デフォルト値

未定義

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

fields ::=

図GUID-2C1A06F9-2265-4791-BED0-1B4BFEB4869B-default.gifの説明

data_type ::=

図GUID-A0274462-64B6-4681-81FE-0A3949C02932-default.gifの説明

primitive_type ::=

図GUID-871BD759-DF97-4775-9119-4AE7FC2E4567-default.gifの説明

セマンティクス

構文は、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.9 com.oracle.bigdata.fileformat

ORACLE_HDFSによって生成されたHive表のROW FORMAT句に基づいて、データ・ソースの行形式を説明します。

デフォルト値

TEXTFILE

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

fileformat ::=

図GUID-BF35CE98-E2AD-4207-87BD-6DDCD1596240-default.gifの説明

セマンティクス

ORC

最適化された行カラムナ・ファイル形式

PARQUET

列指向、バイナリ・ファイル形式

RCFILE

レコード・カラムナ・ファイル形式

SEQUENCEFILE

圧縮ファイル形式

TEXTFILE

プレーン・テキスト・ファイル形式

INPUTFORMAT

データ・ファイルからレコードを抽出できるJavaクラスを識別します。

OUTPUTFORMAT

出力レコードを目的の形式に設定できるJavaクラスを識別します。

5.2.10 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.11 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.12 com.oracle.bigdata.overflow

外部表の列には長すぎる文字列データの処理方法を示します。データ・ソースは文字またはバイナリになります。Hiveの場合、データ・ソースはSTRUCT、UNIONTYPES、MAPまたはARRAYにすることもできます。

デフォルト値

{"action":"truncate"}

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

overflow ::=

図GUID-F90E50DA-90F5-4509-8A11-7E56A0E5941A-default.gifの説明

overflow_element ::=

図GUID-2444400E-F7B3-4350-94BF-D4ABBAE0BE43-default.gifの説明

セマンティクス

"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.13 com.oracle.bigdata.rowformat

アクセス・ドライバがファイル内のレコードからフィールドを抽出するために必要な情報を提供します。

デフォルト値

DELIMITED

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

rowformat ::=

図GUID-11FC174B-0111-4392-B6D6-6BE0E869EF3E-default.gifの説明

セマンティクス

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.14 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は含まれていません。

Oracle Shell for Hadoop Loadersのサードパーティ・ライセンス

Oracle Shell for Hadoop Loadersは、Oracle Big Data SQLのインストール・バンドルに含まれています。Oracle Shell for Hadoop Loadersに含まれるサードパーティ・プロジェクトは次のとおりです。

- ANTLR 4.5.2

- JLine 2.13

- Apache Commons Exec 1.3

- Apache Commons CLI 1.3.1

特に断りがないかぎり、あるいは、サードパーティ・ライセンス(LGPLなど)の条項で求められている場合、Apache Licensed Codeに関連するすべてのステートメントを含めた、この項のライセンスとステートメントは、告知のみを目的とするものです。

A.1.1 ANTLR 4.5.2

Copyright (c) 2015 Terence Parr, Sam Harwell

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

3. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

A.1.2 JLine 2.13

Copyright (c) 2002-2015 Marc Prud'hommeaux <mwp1@cornell.edu>

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

Neither the name of JLine nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

A.1.3 Apache Commons Exec 1.3

ライセンスの下、複数の製品がライセンス供与される場合であっても、ドキュメントには次のライセンス情報を1回のみ含めます。

次のことはApache 2.0ライセンスの下でライセンス供与されるすべての製品に適用されます。

Apache License Version 2.0 (「ライセンス」)に従わない場合は、これらのファイルを使用できない場合があります。

ライセンスのコピーは、http://www.apache.org/licenses/LICENSE-2.0から入手できます。ライセンスのコピーは次の条件で複製することができます。

A.1.4 Apacheのライセンス

- Version 2.0, January 2004

- http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity.For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.

"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship.For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner.For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.

2. Grant of Copyright LicenseSubject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.

3. Grant of Patent LicenseSubject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted.If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.

4. Redistribution.You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:

a. You must give any other recipients of the Work or Derivative Works a copy of this License; and

b. You must cause any modified files to carry prominent notices stating that You changed the files; and

c. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and

d. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear.The contents of the NOTICE file are for informational purposes only and do not modify the License.You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.

You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.

5. Submission of Contributions.Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions.Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.

6. Trademarks.This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty.Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.

8. Limitation of Liability.In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.

9. Accepting Warranty or Additional LiabilityWhile redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License.However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work

To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information.(Don't include the brackets!)The text should be enclosed in the appropriate comment syntax for the file format.We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.ライセンスのコピーは、次から入手できます

http://www.apache.org/licenses/LICENSE-2.0

適用法により求められた場合、または書面をもって同意された場合を除き、ライセンスに基づいて配布されたソフトウェアは、明示的、黙示的を問わず一切の保証または条件なしに「現状のまま」で提供されています。特定の言語下のライセンス許諾事項および制限事項については、ライセンスを確認してください。

This product includes software developed by The Apache Software Foundation (http://www.apache.org/) (listed below):

索引

A  B  C  D  E  F  H  I  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.buffersize 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 , 2

- HDFS透過的暗号化 1

- Hive列 1

- Hiveデータ

- Oracle Databaseからのアクセス 1

- Hiveデータベース 1

- Hive表 1

- Hive表ソース 1

- Hiveビュー 1

I

- インストール

- Oracle Shell for Hadoop Loadersの設定 1

L

- ライセンス, サードパーティ 1

- 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

- Oracle Shell for Hadoop Loadersの設定

- インストール 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

- サードパーティ・ライセンス 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を参照してください。