この章では、Oracle Big Data SQLについて説明します。この項の内容は次のとおりです。
Oracle Big Data SQLは、Hadoopを含む複数のデータ・ソースに格納された大量のビッグ・データに対する問合せをサポートします。様々なデータ・ストアのすべてのデータを、Oracleデータベースに格納されているかのようにまとめて表示および分析できます。
Oracle Big Data SQLを使用すると、完全なSQL構文を使用してHadoopクラスタに格納されたデータを問い合せることができます。手動で、または既存のアプリケーションを使用して、Hadoop内のデータに対して最も複雑なSQL SELECT
文を実行し、最も重要な洞察を引き出すことができます。
次の項に詳細を示します。
Oracle Big Data SQLは、外部表で次世代のパフォーマンス向上を実現します。外部表は、データベース外のデータの場所を識別および記述するOracle Databaseオブジェクトです。他のデータベース表に使用するのと同じSQL SELECT
構文を使用して、外部表を問い合せることができます。
外部表はアクセス・ドライバを使用して、データベース外のデータを解析します。外部データのタイプごとに一意のアクセス・ドライバが必要です。Oracle Big Data SQLのこのリリースには、ビッグ・データ用の2つのアクセス・ドライバが含まれています。Apache Hiveに格納されているデータにアクセスするためのドライバ、およびHadoop Distributed File System (HDFS)ファイルに格納されているデータにアクセスするためのドライバです。
外部表への問合せによって、データが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は、これらのアクセス・ドライバを使用して問合せのパフォーマンスを最適化します。
通常、外部表に対する問合せには全表スキャンが必要なため、外部表には従来の索引はありません。ただし、Oracle Big Data SQLはOracle Big Data Appliance上にExadataストレージ・サーバー・ソフトウェアをインストールすることで、SmartScan機能(フィルタ述語オフロードなど)をOracle外部表に拡張します。このテクノロジを使用すると、Oracle Big Data Applianceは大部分(合計で最大99パーセント)の無関係なデータを破棄し、より小さい結果セットをOracle Exadata Database Machineに返すことができます。エンド・ユーザーが問合せの結果を得るまでの時間は大幅に短縮されます。これは、Oracle Databaseに対する負荷、およびネットワーク上のトラフィックが軽減されたことの直接的な結果です。
関連項目: 外部表の概要、およびOracle Databaseドキュメント・ライブラリ内の詳細情報への手引きについては、『Oracle Database概要』を参照してください。 |
Oracle Big Data Applianceには、Oracle Big Data Appliance上のCDHクラスタに格納されているデータを保護するための多数のセキュリティ機能がすでに用意されています。
Kerberos認証: ユーザーおよびクライアント・ソフトウェアは、クラスタにアクセスする前に資格証明を提供する必要があります。
Apacheセキュリティ認証: データおよびメタデータにファイングレインのロールベース認証を提供します。
オンディスク暗号化: ディスクにあるデータを保護します。通常のユーザー・アクセスでは、データは自動的に復号化されます。
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データに同じセキュリティ・ポリシーおよびルールを適用できます。
Oracle Big Data SQLは、Oracle Big Data Applianceに接続されたOracle Exadata Database Machineでのみ使用できます。Oracle Big Data SQLソフトウェアを両方のシステムにインストールする必要があります。
Oracle Exadata Database Machineは次の要件に準拠している必要があります。
Oracle Database 12.1.0.2以上を実行していること
Oracle Big Data Applianceと同じインフィニバンド・サブネット上で構成されていること
インフィニバンド・ネットワークで接続された、プル・アプリケーション用に構成されていること(第4章を参照)
Oracle Big Data SQLはOracle Big Data Appliance上のインストール・オプションです。ソフトウェアの初期インストール時またはその後で、サービスを有効化および無効化するための標準的な方法を使用して有効化できます。
ソフトウェアのインストールまたはアップグレード時にOracle Big Data SQLをインストールするには、次の手順を実行します。
Oracle Big Data Appliance構成生成ユーティリティの「Cluster」ページでオプションを選択します。Mammothによって、他のソフトウェアコンポーネントとともにOracle Big Data SQLが有効化されます。
詳細は、『Oracle Big Data Applianceオーナーズ・ガイド』を参照してください。
後でOracle Big Data SQLをインストールするには、次の手順を実行します。
Mammothがインストールされているノード(通常はクラスタ上の第1ノード)にroot
としてログインします。
bdacli
ユーティリティを使用します。
# bdacli enable big_data_sql
詳細は、『Oracle Big Data Applianceオーナーズ・ガイド』を参照してください。
Cloudera Managerを使用すると、Oracle Big Data SQLが稼働していることを確認できます。「Oracle Big Data SQLの管理」を参照してください。
Oracle Exadata Database MachineにOracle Big Data SQLをインストールするには、次の手順を実行します。
My Oracle SupportからOracle Big Data SQL用のデータベース・パッチをダウンロードしてインストールします。
Oracleインストールの所有者の名前を確認します。通常は、oracle
ユーザーがインストールを所有します。
Oracle Big Data Appliance上に同じユーザー名(oracle
など)が存在することを確認します。
Mammothがインストールされているノード(通常はクラスタ上の第1ノード)からbds-exa-install.sh
インストール・スクリプトをダウンロードします。wget
、curl
などのコマンドを使用できます。この例では、bda1node7からスクリプトをコピーします。
wget http://bda1node07/bda/bds-exa-install.sh
rootとしてスクリプトを実行し、システム識別子(SID)を渡します。この例では、SIDはorcl
です。
./bds-exa-install.sh oracle_sid=orcl
注意: Oracleインストールの所有者がoracle
ではない場合は、--install-user
オプションを使用します。「bds-exa-installスクリプトの実行」
スクリプトが完了すると、Oracle Big Data SQLがデータベース・システムで稼働します。ただし、イベントによってOracle Big Data SQLが停止した場合、再起動する必要があります。「Big Data SQLエージェントの起動および停止」を参照してください。
bds-exa-install
スクリプトは、Oracleホーム・ディレクトリの所有者によって実行されるカスタム・インストール・スクリプトを生成します。そのセカンダリ・スクリプトは、Oracle Big Data SQLで必要なすべてのファイルを$ORACLE_HOME/bigdatasql
ディレクトリにインストールします。また、データベース・ディレクトリ・オブジェクト、およびマルチスレッドのOracle Big Data SQLエージェントのデータベース・リンクも作成します。
Oracleホームを所有するオペレーティング・システム・ユーザーがoracle
という名前ではない場合は、--install-user
オプションを使用して所有者を指定します。
--generate-only
オプションを使用してセカンダリ・スクリプトを作成し、$ORACLE_HOME
の所有者として実行することもできます。
次にbds-exa-install
の構文を示します。
./bds-exa-install.sh oracle_sid=name [option]
オプション名の前には2つのハイフン(--)が付いています。
セカンダリ・スクリプトを生成するだけで実行しない場合は、true
に設定します。1つのステップでスクリプトを生成して実行する場合は、false
に設定します(デフォルト)。
Oracle Databaseインストールを所有するオペレーティング・システム・ユーザー。デフォルト値はoracle
です。
SQLのCREATE TABLE
文には、外部表の作成に特化した句があります。この句に指定する情報により、アクセス・ドライバは外部ソースからデータを読み取り、そのデータを外部表用に準備できます。
次に外部表のCREATE TABLE
文の基本的な構文を示します。
CREATE TABLE table_name (column_name datatype, column_name datatype[,...]) ORGANIZATION EXTERNAL (external_table_clause);
他の表と同様に、列名およびデータ型を指定します。ORGANIZATION EXTERNAL
は、表を外部表として識別します。
external_table_clauseはアクセス・ドライバを識別し、データのロードに必要な情報を提供します。「外部表の句について」を参照してください。
Apache Hive内のデータのOracle外部表を簡単に作成できます。Oracle Databaseはメタデータを使用できるため、Hive表に関する情報をデータ・ディクショナリに問い合せることができます。その後、PL/SQL関数を使用して基本的なSQLを生成できます。CREATE TABLE EXTERNAL ORGANIZATION
文。実行前に文を変更して、外部表をカスタマイズできます。
DBMS_HADOOP
PL/SQLパッケージには、CREATE_EXTDDL_FOR_HIVE
という名前の関数が含まれています。CREATE_EXTDDL_FOR_HIVE
関数は、外部表のデータ・ディクショナリ言語(DDL)を返します。この関数では、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
これらのデータ・ディクショナリ・ビューを問い合せて、次のものに関する情報を検出できます。
データ・ディクショナリからの情報とともに、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
を使用するか、CREATE TABLE
文を最初から作成するかを選択できます。どちらの場合にも、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
に設定します。
外部表の句の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
に設定されます。
ORACLE_HDFS
アクセス・ドライバを使用すると、HDFSに格納されている様々なタイプのデータにアクセスできますが、HDFSにはHiveメタデータはありません。テキスト・データのレコード形式を定義することも、特定のデータ形式のSerDeを指定することもできます。
HDFSファイルの外部表を手動で作成し、データを特定するためにアクセス・ドライバが必要とするすべての情報を提供して、レコードおよびフィールドを解析する必要があります。CREATE TABLE ORGANIZATION EXTERNAL
文のいくつかの例を次に示します。
次の文は、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) 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
に変換できない場合です。
ORACLE_HDFS
でも、ORACLE_HIVE
と同じアクセス・パラメータの多くを使用できます。
次の例は、「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 (NUMBER8,2)) ORGANIZATION EXTERNAL (TYPE oracle_hdfs 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
に設定されます。
次の例では、SerDeを使用してAvroコンテナ・ファイルにアクセスします。
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.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文字を超える値は切り捨てられます。
CREATE TABLE ORGANIZATION EXTERNAL
は、引数としてexternal_table_clauseを取ります。次の従属句があります。
関連項目: external_table_clauseの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。 |
TYPE
句はアクセス・ドライバを識別します。アクセス・ドライバのタイプによって、外部表定義の他の部分がどのように解釈されるかが決まります。
Oracle Big Data SQLに次の値のいずれかを指定します。
ORACLE_HDFS
: HDFSディレクトリ内のファイルにアクセスします。
ORACLE_HIVE
: Hive表にアクセスします。
注意: ORACLE_DATAPUMP およびORACLE_LOADER アクセス・ドライバは、Oracle Big Data SQLには関連付けられません。 |
DEFAULT DIRECTORY
句はOracle Databaseディレクトリ・オブジェクトを識別します。ディレクトリ・オブジェクトは、外部表が読取りおよび書込みを行うファイルを含むオペレーティング・システム・ディレクトリを識別します。
ORACLE_HDFS
およびORACLE_HIVE
はデフォルト・ディレクトリのみを使用して、Oracle Databaseシステムにログ・ファイルを書き込みます。
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/*
など)。ディレクトリ名のみは無効です。
ファイル名には、表6-1に説明されているパターン一致文字を含めることができます。
表6-1 パターン一致文字
文字 | 説明 |
---|---|
? |
任意の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}内の文字列に一致します。エスケープ文字(\)は、パス区切りとしてのコンマの意味を無効にします。 |
Oracle Databaseが問合せを停止し、エラーを返すまで、外部表の問合せ中に許可される変換エラーの数を制限します。
行が拒否される処理エラーは、制限に対してカウントされます。拒否制限は、各並列問合せ(PQ)プロセスに個別に適用されます。すべてのPQプロセスについて、拒否されたすべての行の合計ではありません。
ACCESS PARAMETERS
句は、アクセス・ドライバがデータを外部表に正しくロードするために必要な情報を提供します。「CREATE TABLE ACCESS PARAMETERS句」を参照してください。
アクセス・ドライバは、データを外部表にロードする際に、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番目の例では、外部表に対する問合せはより速くなります。これは、アクセス・ドライバがデータ変換のみを実行するためです。
表6-2は、データを外部表にロードするときにORACLE_HIVE
が実行できるデータ型変換を示します。
表6-2 サポートされている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 |
はい脚注 1 |
はい脚注 2 |
はい脚注 2 |
はい |
いいえ |
いいえ |
BINARY |
はい |
いいえ |
はい |
はい |
いいえ |
いいえ |
STRING |
はい |
はい |
はい |
はい |
はい |
はい |
TIMESTAMP |
はい |
いいえ |
いいえ |
いいえ |
はい |
いいえ |
STRUCT ARRAY UNIONTYPE MAP |
はい |
いいえ |
いいえ |
いいえ |
いいえ |
いいえ |
脚注 1 FALSEは文字列FALSE
にマップされ、TRUEは文字列TRUE
にマップされます。
脚注 2 FALSEは0にマップされ、TRUEは1にマップされます。
ユーザーは、他の表を問い合せる場合と同じように、SQL SELECT
文を使用して外部表を問い合せることができます。
Hadoopクラスタ上のデータを問い合せるユーザーには、外部表、およびクラスタ・ディレクトリを指すデータベース・ディレクトリ・オブジェクトへのOracle Database内のREAD
アクセス権が必要です。「クラスタ・ディレクトリについて」を参照してください。
デフォルトでは、列の値を計算しているときにエラーが発生した場合、問合せはデータを返しません。ほとんどのエラー(特に、列の値を計算中にスローされたエラー)の後も処理は続行します。
エラーの処理方法を決定するには、com.oracle.bigdata.erroropt
パラメータを使用します。
Oracle Big Data SQLは、Oracle Exadata Database Machineに接続されたOracle Big Data Applianceがあるシステム上で排他的に実行されます。Oracle Exadata Storage Server Softwareは、構成可能な数のOracle Big Data Applianceサーバー上にデプロイされます。これらのサーバーは、CDHノードとOracle Exadata Storage Serverの機能を結合します。
Mammothユーティリティは、Oracle Big Data ApplianceとOracle Exadata Database Machineの両方にBig Data SQLソフトウェアをインストールします。この項の情報では、MammothがOracle Databaseシステムに対して行う変更について説明します。
この項の内容は次のとおりです。
注意: Oracle SQL Connector for HDFSは、Oracle Exadata Database Machineに接続されていないラックを含む、すべてのOracle Big Data ApplianceラックにHadoopデータへのアクセスを提供します。ただし、Oracle Big Data SQLのパフォーマンス上の利点はなく、Oracle Big Data Applianceライセンスにも含まれません。『Oracle Big Data Connectorsユーザーズ・ガイド』を参照してください。 |
agtctl
ユーティリティは、マルチスレッドBig Data SQLエージェントを起動および停止します。次の構文があります。
agtctl {startup | shutdown} bds_clustername
共通ディレクトリには、すべてのHadoopクラスタに共通の構成情報が含まれています。このディレクトリは、Oracle DatabaseシステムのOracleホーム・ディレクトリの下にあります。oracle
ファイル・システムのユーザー(またはOracle Databaseインスタンスを所有するユーザー)は、共通ディレクトリを所有します。ORACLE_BIGDATA_CONFIG
という名前のデータベース・ディレクトリは共通ディレクトリを指します。
Mammothインストール・プロセスでは、次のファイルが作成され、共通ディレクトリに格納されます。
Oracle DBAは、必要に応じてこれらの構成ファイルを編集できます。
共通ディレクトリ内のbigdata.properties
ファイルには、HDFS内のデータにアクセスするために必要なJavaクラス・パスおよびネイティブ・ライブラリ・パスを定義するプロパティ/値のペアが含まれています。
次のプロパティを設定する必要があります。
次のリストで、bigdata.properties
で許可されているすべてのプロパティを説明します。
bigdata.properties
デフォルトのHadoopクラスタの名前。アクセス・パラメータがクラスタを指定しない場合、アクセス・ドライバはこの名前を使用します。必須。
デフォルトのクラスタ名を変更すると、明示的なクラスタ名なしで以前に作成された外部表が使用できなくなる可能性があります。
Hadoopクラスタ名のコンマ区切りのリスト。オプション。
Hadoopクラス・パス。必須。
Hiveクラス・パス。必須。
Oracle JXAD Java JARファイルへのパス。必須。
ユーザーJARファイルへのパス。オプション。
JVM共有ライブラリ(libjvm.so
など)への完全なファイル・パス。必須。
JVMに渡されるオプションのコンマ区切りのリスト。オプション。
この例では、最大ヒープ・サイズを2GBに設定し、Java Native Interface (JNI)呼出しの詳細なロギングを設定します。
Xmx2048m,-verbose=jni
Hadoopネイティブ・ライブラリを検索するためのディレクトリ・パスのコロン区切りの(:)リスト。推奨。
このオプションを設定した場合は、java.options
でjava.libraryパスを設定しないでください。
例6-1は、サンプルのbigdata.properties
ファイルを示します。
例6-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
共通ディレクトリのbigdata-log4j.properties
ファイルは、外部表に対する問合せのロギング動作をJavaコードで定義します。このファイルでは、すべてのlog4j
プロパティを使用できます。
例6-2は、サンプルのbigdata-log4j.properties
ファイルと関連するlog4j
プロパティを示します。
例6-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
クラスタ・ディレクトリには、CDHクラスタの構成情報が含まれています。Oracle DatabaseがOracle Big Data SQLを使用してアクセスする各クラスタにクラスタ・ディレクトリがあります。このディレクトリは、Oracle Databaseシステムの共通ディレクトリの下にあります。たとえば、bda1_cl_1という名前のクラスタには、共通ディレクトリに同じ名前(bda1_cl_1
)のディレクトリがあります。
クラスタ・ディレクトリには、次のようなクラスタにアクセスするためのCDHクライアント構成ファイルが含まれています。
core-site.xml
hdfs-site.xml
hive-site.xml
mapred-site.xml
(オプション)
log4j
プロパティ・ファイル(hive-log4j.properties
など)
データベース・ディレクトリ・オブジェクトはクラスタ・ディレクトリを指します。クラスタ内のデータにアクセスするユーザーには、ディレクトリ・オブジェクトの読取りアクセス権が必要です。
oracle
オペレーティング・システム・ユーザー(またはOracle Databaseインストール・ディレクトリを所有するユーザー)には次の設定が必要です。
ログ・ディレクトリを指すデータベース・ディレクトリへの読取り/書込みアクセス権。これらの権限を使用すると、アクセス・ドライバはログ・ファイルを作成し、ユーザーはそれを読み取ることができます。
Oracle Big Data Applianceで定義されている、該当するoracle
オペレーティング・システム・ユーザー。ソース・データが格納されているHDFSディレクトリへのオペレーティング・システム内の読取りアクセス権を持ちます。