主コンテンツへ
Oracle® Big Data SQLユーザーズ・ガイド
リリース3.2.1
E92089-05
目次へ移動
目次
索引へ移動
索引

前
次

4 Oracle Big Data SQLリファレンス

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

4.1 DBMS_HADOOP PL/SQLパッケージ

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

4.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
);

パラメータ

表4-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データ型の間のデフォルトのマッピングに基づいています。「データ型変換について」を参照してください。

4.1.1.1

次の問合せは、デフォルトのHiveデータベースからmy_hive_tableCREATE 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

4.2 DBMS_BDSQL PL/SQLパッケージ

DBMS_BDSQL PL/SQLパッケージには、ユーザー・マップを追加および削除するプロシージャが含まれています。

以前のリリースのOracle Big Data SQLでは、HadoopおよびHiveのデータに対する問合せはoracleユーザーとして実行され、ユーザーを変更するオプションはありません。どのような場合もoracleは基礎となるユーザーであることにかわりありませんが、oracleアカウントが別の指定されたユーザーのかわりにタスクを実行するようにするマルチユーザー認証を使用できるようになりました(Hadoop Secure Impersonationに基づきます)。これにより、単一のoracleユーザーではなく、現在問合せを実行しているユーザーに基づいたHDFSデータ・アクセスが可能になります。

DBMS_BDSQLパッケージを使用すると、現在接続されているユーザーを識別するルールを指定して、接続されているユーザーを偽装されたユーザーにマップできます。ユーザーは数多くの方法でOracle Databaseに接続できるため、このユーザーはデータベース・ユーザーであることも、LDAPやKerberosなどをソースとするユーザーであることもあります。ファイルに対する認可ルールはそのユーザーに適用され、監査はそのユーザーにも反映されます。

注意:

指定された管理者に新しいBDSQL_ADMINロールを付与して、これらのプロシージャを起動できるようにします。

4.2.1 ADD_USER_MAP

ADD_USER_MAPプロシージャは、問合せを実行している実際のユーザーを識別するためのルールを指定する場合に使用します。

問合せの実行時に、データベースはBDSQL_USER_MAP表に対する参照を実行して、現在のデータベース・ユーザー(current_database_user)を判断します。その後で、syscontext_namespaceパラメータとsyscontext_parm_hadoop_userパラメータを使用して、実際のユーザーを識別します。

構文

procedure ADD_USER_MAP (  
    cluster_name                 IN VARCHAR2 DEFAULT '[DEFAULT]', 
    current_database_user        IN VARCHAR2 NOT NULL, 
    syscontext_namespace         IN VARCHAR2 DEFAULT NULL,
    syscontext_parm_hadoop_user  IN VARCHAR2 NOT NULL 
); 

表4-2 ADD_USER_MAPのパラメータ

パラメータ 説明
cluster_name マップが適用されるHadoopクラスタの名前。クラスタ名を[DEFAULT]とすることで、デフォルト・クラスタを指定します。
current_database_user 現在有効なデータベース・ユーザー。Oracleは、これを使用して発行局を確認します。値'*'は、他に条件に適合する行が存在しない場合に、この行が使用されることを示します。デフォルト値はありません。また、NULLの値は許可されません。
syscontext_namespace Oracle USERENVネームスペースの場合、許容される値はGLOBAL_UIDCLIENT_IDENTIFIERおよびAUTHENTICATED_IDENTITYのみです。

Oracle Databaseのインストールで認証にKerberos資格証明、SSL、Active DirectoryまたはLDAPを使用する場合、Hadoopシステムでも同じ認証フレームワークを使用している可能性があります。その場合は、AUTHENTICATED_IDENTITYを指定する必要があります。この識別子は、ユーザー名のみが含まれます。資格証明のドメイン・セグメントが含まれている場合は、クラスタ名と同様に切り捨てられます。たとえば、ユーザー名dirkrbは、dirkrb@HQ.TEST1.DBSEC2008.COMの認証済アイデンティティとして、Hadoopクラスタでの認可に使用されます。

syscontext_parm_hadoop_user 現在のデータベース・ユーザーを偽装するHadoopユーザー。

注意:

current_database_usersyscontext_parm_hadoop_userの値は、単一のアスタリスク文字(*)またはOracle simple_sql_nameアサーションの要件を満たす文字列になります。

  • 名前は英字で始まる必要があります。2番目以降の文字位置には、英数文字と文字_、$、#を含めることができます。

  • 引用符付きのSQL名も許容されます。

  • 引用符付きの名前は、二重引用符で囲まれている必要があります。

  • 引用符付きの名前は、引用符の間に任意の文字を使用できます。

  • 名前の内側にある引用符は、行内で2つの引用符文字で表されます。たとえば、"a name with ""の内側の"は有効な引用符付きの名前です。

  • 入力パラメータには、先頭や末尾に任意の数の空白を含めることができます。

4.2.2 REMOVE_USER_MAP

REMOVE_USER_MAPは、BDSQL_USER_MAP表から行を削除する場合に使用します。これにより、特定のHadoopユーザーから特定のOracle Databaseユーザーへの関連付けを解除します。

構文

procedure REMOVE_USER_MAP ( 
   cluster_name IN VARCHAR2 DEFAULT '[DEFAULT]', 
   current_database_user IN VARCHAR2 NOT NULL
); 

関連項目:

ADD_USER_MAPのリファレンス・ページには、cluster_nameパラメータとcurrent_database_userパラメータの説明があります。

4.2.3 マルチユーザー認証セキュリティ表

SYS.BDSQL_USER_MAPは、マルチユーザー認証セキュリティ表です。この表の更新には、ADD_USER_MAPプロシージャとREMOVE_USER_MAPプロシージャを使用します。

主キーは、(cluster_name, current_database_user)です。

表4-3 SYS.BDSQL_USER_MAP

データ型 説明
cluster_name varchar2 Hadoopクラスタの名前デフォルトは[DEFAULT]です。
current_database_user varchar2 現在有効なデータベース・ユーザー(デフォルト値はありません、NULLは禁止です)。Oracleは、この列を特定のOracle Databaseユーザーに対応する認可ルールを確認するために使用します。行内の値'*'は、他に条件に適合する行がない場合に、この行が使用されるようにするディレクティブです。
syscontext_namespace varchar2 これは、Oracle SYS_CONTEXTネームスペースに対するオプションの指定です(カスタマ・セキュリティが設定されている場合)。Oracle USERENVネームスペースの場合、許容される値は'GLOBAL_UID''CLIENT_IDENTIFIER''AUTHENTICATED_IDENTITY'のみです。
syscontext_parm_hadoop_user varchar2 この列値には、相対する解釈があります。
  • syscontext_namespaceに値がある場合、syscontext_parm_hadoop_usersyscontext_namespaceに固有のパラメータを示します。

    ただし、値が'*'の場合、これは偽装にcurrent_database_userの値を使用するようにするディレクティブになります。この場合は、syscontext_namespace列をNULLにする必要があります。

  • syscontext_namespaceがNULLの場合、syscontext_parm_hadoop_userにはHDFSファイルにアクセスする前に偽装されるHadoopユーザーが格納されています。

ここでは、データベースに対するログオン認証にActive Directory、Kerberos、SSLまたはLDAPを使用しています。この場合は、Hadoopユーザーの管理に同じActive Directoryフレームワークを使用しているため、AUTHENTICATED_IDENTITYが指定されてます。

後述する例は、現在接続されているユーザーに対して次のSQLクエリを実行する場合と同様になります。

select sys_context('USERENV', 'AUTHENTICATED_IDENTITY') from dual;

この例では、Hadoopクラスタに対する認証にユーザー名のみ("@<domain>"セグメントなし)が使用されます。AUTHENTICATED_IDENTITYの形式が<username>/<cluster>@<domain_name>になる場合もあります。

cluster_name current_database_user syscontext_namespace syscontext_parm_hadoop_user
[DEFAULT] * USERENV AUTHENTICATED_IDENTITY

この例では、"HRAPP"はHRアプリケーションです。このアプリケーションでは、常にHRAPPデータベース・ユーザーを使用してデータベースに接続して、DBMS_SESSION.SET_IDENTIFIERプロシージャによってプログラムでアプリケーション・ユーザーを設定します。CLIENT_IDENTIFIERで指定された複数の「軽量」ユーザーが存在します(これは、sys_context('USERENV', 'CLIENT_IDENTIFIER') [DEFAULT] * USERENV GLOBAL_UIDなどで、select sys_context('USERENV', 'CLIENT_IDENTIFIER') from dual;を実行することと同様です)。

現在のデータベースには、別の有効なユーザーが含まれています。これは、Oracle Internet Directory for Enterprise User Securityによって管理されるログオンを持つエンタープライズ・ユーザーです。このような場合は、GLOBAL_UIDがHadoop偽装に使用されます。

cluster_name current_database_user syscontext_namespace syscontext_parm_hadoop_user
[DEFAULT] HRAPP USERENV CLIENT_IDENTIFIER
[DEFAULT] * USERENV GLOBAL_UID

この例では、BIAPPはビジネス・インテリジェンス・アプリケーションです。このアプリケーションは、そのユーザー名に独自のコンテキストを持ちます。アプリケーションを使用するカスタマの場合、そのカスタマに指定されたIDがHadoopアクセスに使用されます。つまり、現在のユーザーが'BIAPP'の場合、偽装にはsys_context('BIVPD','USERID')を使用します。それ以外のユーザーには、そのユーザーの現在のデータベース・ユーザー名が偽装に使用されるように、単に[DEFAULT] * *を指定します。

cluster_name current_database_user syscontext_namespace syscontext_parm_hadoop_user
[DEFAULT] BIAPP BIVPD USERID
[DEFAULT] *   *

この例では、Oracleユーザー名SCOTTがHDFSアクセスのためにhdpusr1 Hadoopユーザーによって偽装されます。ユーザーADAMは、HDFSアクセスのためにhdpusr2によって偽装されます。

その他すべてのユーザーはより制限されたアクセスを持つため、それらのユーザーを指定するために'lowprivuser'のsyscontext_namespace値を使用します。

cluster_name current_database_user syscontext_namespace syscontext_parm_hadoop_user
hadoop_cl_1 SCOTT   hdpusr1
hadoop_cl_1 ADAM lowprivuser hdpusr2
hadoop_cl_1 *    

4.3 CREATE TABLE ACCESS PARAMETERS句

この項では、ORACLE_HDFSまたはORACLE_HIVEアクセス・ドライバを使用する外部表を作成するときに使用するプロパティについて説明します。CREATE TABLE ORGANIZATION EXTERNAL文で、ACCESS PARAMETERSopaque_format_spec句にパラメータを指定します。

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

4.3.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
  • 先頭の空白の各物理行を削除して行を連結することで、論理行を作成できます。パーサーは、論理行からプロパティ名および値を抽出します。

  • 文字の前に代入を示すバックスラッシュ(エスケープ文字)を付けることで、プロパティ名またはプロパティ値に特殊文字を埋め込むことができます。表4-4に特殊文字を示します。

表4-4 プロパティの特殊文字

エスケープ順序 文字

\b

バックスペース(\u0008)

\t

水平タブ(\u0009)

\n

行フィード(\u000a)

\f

フォーム・フィード(\u000c)

\r

キャリッジ・リターン(\u000d)

\"

二重引用符(\u0022)

\'

一重引用符(\u0027)

\\

バックスラッシュ(\u005c)

複数のバックスラッシュが行末にある場合、パーサーは奇数のバックスラッシュに対してのみ値を次の行に継続します。

\uxxxx

2バイト、ビッグ・エンディアン、Unicodeコード・ポイント。

1文字に2コード・ポイント(4バイト)が必要な場合、パーサーは2番目のコード・ポイントに\uを要求します。

4.3.2 ORACLE_HDFSアクセス・パラメータ

ORACLE_HDFSアクセス・ドライバのアクセス・パラメータは、HDFS内のデータを特定するのに必要なメタデータを提供し、Hive表を作成します。

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

CREATE TABLE文からすべてのアクセス・パラメータを省略した場合、ORACLE_HDFSは次のデフォルト値を使用します。

com.oracle.bigdata.rowformat=DELIMITED
com.oracle.bigdata.fileformat=TEXTFILE
com.oracle.bigdata.overflow={"action":"error"}
com.oracle.bigdata.erroropt={"action":"setnull"}

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

ORACLE_HDFSは、次のオプションのcom.oracle.bigdataパラメータをサポートしています。このパラメータは、opaque_format_spec句で指定できます。

例4-1に、複数のアクセス・パラメータが設定されているCREATE TABLE文を示します。

例4-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/*"));

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

ORACLE_HIVEは、Hiveカタログから外部データ・ソースに関するメタデータを取得します。通常、外部データ表の列へのHiveデータのデフォルト・マッピングは適切です。ただし、状況によっては、特殊なパラメータ設定が必要です。独自の理由でデフォルト値を上書きする場合もあります。

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

CREATE TABLE文からすべてのアクセス・パラメータを省略した場合、ORACLE_HIVEは次のデフォルト値を使用します。

com.oracle.bigdata.tablename=name of external table
com.oracle.bigdata.overflow={"action":"error"}
com.oracle.bigdata.erroropt={"action":"setnull"}

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

ORACLE_HIVEは、次のオプションのcom.oracle.bigdataパラメータをサポートしています。このパラメータは、opaque_format_spec句で指定できます。

例4-2に、複数のアクセス・パラメータが設定されているCREATE TABLE文を示します。

例4-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}]
));

4.3.4 com.oracle.bigdata.buffersize

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

デフォルト値

1000 KB

構文

com.oracle.bigdata.buffersize: n

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

com.oracle.bigdata.buffersize: 100000

4.3.5 com.oracle.bigdata.colmap

ソース・データの列をOracle外部表の列にマップします。1つまたは複数の列マッピングのペアを定義できます。ソース・フィールド名がOracle列名の最大長を超える場合、または外部表で別の列名を使用する場合、このプロパティを使用します。

デフォルト値

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

構文

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

colmap:

colmap_entry:

セマンティクス

"col":name

"col": キーワードは小文字を使用して、引用符で囲む必要があります。

name: Oracle外部表の列の名前。大/小文字を区別し、引用符で囲む必要があります。

"field":name

"field": キーワードは小文字を使用して、引用符で囲む必要があります。

name: データ・ソースのフィールドの名前。大/小文字は区別しませんが、引用符で囲む必要があります。「プロパティを指定するための構文ルール」を参照してください。

この例は、ORDER_LINE_ITEM_COUNTという名前のHive列をITEM_CNTという名前のOracle列にマップします。

com.oracle.bigdata.colMap={"col":"ITEM_CNT", \
                           "field":"order_line_item_count"}

次の例は、複数の列のマッピングを示しています。

com.oracle.bigdata.colmap:[{"col":"KOL1", "field":"PROJECT_NAME"},{ "col":"KOL2","field":"wsdl_name"},{"col":"KOL3", "field":"method"}]

4.3.6 com.oracle.bigdata.datamode

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

デフォルト値

automatic

構文

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

datamode:

セマンティクス

automatic

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

c

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

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

java

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

4.3.7 com.oracle.bigdata.erroropt

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

デフォルト値

{"action":"setnull"}

構文

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

erroropt:

error_element:

セマンティクス

"action""reject""setnull""replace""value"および"col"キーワードは小文字を使用して、引用符で囲む必要があります。「プロパティを指定するための構文ルール」を参照してください。

"action":value

value: 次のキーワードのいずれかになります。

  • "reject": 行をロードしません。

  • "setnull": 列をNULLに設定します。

  • "replace": 列を指定された値に設定します。

"value":string

string: 外部表の不正な値を置換します。引用符で囲む必要があります。

"col":name

name: 外部表の列を識別します。列名は大/小文字を区別し、引用符で囲む必要があります。リストできるのは1回のみです。

この例では、Hive値によってエラーが発生した場合、CUST_NUMまたはORDER_NUM列の値をINVALIDに設定します。その他の列では、エラーによってHive値が拒否されます。

com.oracle.bigdata.errorOpt: {"action":"replace",\
                              "value":"INVALID", \
                              "col":["CUST_NUM","ORDER_NUM"]

4.3.8 com.oracle.bigdata.fields

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

デフォルト値

未定義

構文

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

fields:

data_type:

primitive_type:

セマンティクス

構文は、Hive表のフィールド・リストと同じです。フィールド・リストを複数行に分割する場合、バックスラッシュを使用して改行文字をエスケープする必要があります。

field_name

Hiveフィールドの名前。英数字およびアンダースコア(_)のみ使用します。最大長は128文字です。フィールド名は大/小文字を区別します。

data_type

Hiveフィールドのデータ型。オプション。デフォルトはSTRINGです。文字セットはUTF8である必要があります。

データ型は複合またはプリミティブになります。

Hive複合データ型

  • ARRAY: 索引付け可能なリスト

  • MAP: キー値のタプル

  • STRUCT: 要素のリスト

  • UNIONTYPE: 複数のデータ型

Hiveプリミティブ・データ型

  • INT: 4バイトの整数

  • BIGINT: 8バイトの整数

  • SMALLINT: 2バイトの整数

  • TINYINT: 1バイトの整数

  • BOOLEAN: TRUEまたはFALSE

  • FLOAT: 単精度

  • DOUBLE: 倍精度

  • STRING: 文字列

関連項目:

Apache Hive Language Manualのデータ型に関する項を参照してください。

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types

COMMENT col_comment

一重引用符で囲まれた文字列リテラル。Hive表のメタデータとして格納されます(TBLPROPERTIEScommentプロパティ)。

4.3.9 com.oracle.bigdata.fileformat

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

デフォルト値

TEXTFILE

構文

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

fileformat:

セマンティクス

ORC

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

PARQUET

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

RCFILE

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

SEQUENCEFILE

圧縮ファイル形式

TEXTFILE

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

INPUTFORMAT

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

OUTPUTFORMAT

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

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

ファイル名の生成に使用する文字列。表4-4に、テンプレートで使用できるオプションの変数を示します。

表4-5 com.oracle.bigdata.log.execの変数

変数

%p

オペレーティング・システム・プロセス識別子(PID)

%a

プロセスを一意に識別する番号。

%%

パーセント記号(%)

次の例では、PIDおよび一意の番号を含むログ・ファイル名(xtlogp_hive14_3413_57など)を生成します。

com.oracle.bigdata.log.exec= xtlogp_hive14_%p_%a

4.3.11 com.oracle.bigdata.log.qc

アクセス・ドライバが問合せのログ・ファイルを生成する方法を指定します。

デフォルト値

未定義(ロギングなし)

構文

[directory_object:]file_name_template

セマンティクス

directory_object

ログ・ファイルが書き込まれるパスを指すOracleディレクトリ・オブジェクトの名前。この値を省略すると、ログは外部表のデフォルト・ディレクトリに書き込まれます。

file_name_template

ファイル名の生成に使用する文字列。表4-6に、文字列で使用できるオプションの変数を示します。

表4-6 com.oracle.bigdata.log.qcの変数

変数

%p

オペレーティング・システム・プロセス識別子(PID)

%%

パーセント記号(%)

この例では、PIDおよびパーセント記号を含むログ・ファイル名(xtlogp_hive213459_%など)を作成します。

com.oracle.bigdata.log.qc= xtlogp_hive21%p_%%

4.3.12 com.oracle.bigdata.overflow

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

デフォルト値

{"action":"error"}

構文

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

overflow ::=

overflow_element ::=

セマンティクス

"action""truncate""error"および"col"タグは小文字を使用して、引用符で囲む必要があります。「プロパティを指定するための構文ルール」を参照してください。

"action":value

"action"の値は次のキーワードのいずれかになります。

  • truncate: 列に収まるようにデータを短くします。

  • error: エラーをスローします。com.oracle.bigdata.erroroptプロパティは、エラーの結果を制御します。

"col":name

name: 外部表の列を識別します。名前は大/小文字を区別し、引用符で囲む必要があります。

この例では、DESCRIPTION列のソース・データが列幅を超える場合、ソース・データを切り捨てます。

com.oracle.bigdata.overflow={"action":"truncate", \
                             "col":"DESCRIPTION"}

4.3.13 com.oracle.bigdata.rowformat

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

重要:

com.oracle.bigdata.rowformatは、"type ORACLE_LOADER"を使用する従来の外部表のアクセス・パラメータ構文とは無関係です。FIELDSTERMINATEDなどのキーワードもあれば、両方の句に現れるキーワードもありますが、ネーミングにおける共通性は偶然であり、共通機能を意味するものではありません。com.oracle.bigdata.rowformatアクセス・パラメータは、デフォルトのHive SerDeに対する変更なしに渡されます。行から列を抽出するHive SerDeは意図的に制限されます。複雑な場合は、専用のSerDesによって処理されます。

デフォルト値

DELIMITED

構文

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

rowformat:

セマンティクス

DELIMITED

レコード内のフィールドを区切るために使用する文字を示します。

  • FIELDS TERMINATED BY: レコード内の各フィールドを区切る文字。オプションのESCAPED BY文字は、フィールド値内に表示される場合、デリミタ文字の前に付けます。

  • COLLECTION ITEMS TERMINATED BY: 配列要素の終了を示す文字。列がコレクションまたはネストされたレコードの場合に使用します。その場合、結果の値はJSON配列になります。

  • MAP KEYS TERMINATED BY: MAPフィールドのエントリの終了を示す文字。列がコレクションまたはネストされたレコードの場合に使用します。結果の値はJSONオブジェクトです。

  • 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}) .*") 

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

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

Oracle Databaseカタログには、Hive表の複数の静的データ・ディクショナリ・ビューが含まれています。これらのデータ・ディクショナリ・ビューを問い合せて、アクセスできるHive表に関する情報を検出できます。

Oracle DatabaseからHiveデータベースにアクセスする場合、ORACLE_BIGDATA_CONFIGディレクトリ・オブジェクトの読取りアクセス権が必要です。

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

4.4.2 ALL_HIVE_TABLES

ALL_HIVE_TABLESは、現在のユーザーにアクセスできるHiveメタストア内のすべての表を示します。

Oracle Big Data SQL構成は、現在のユーザーのデフォルトのHiveデータベースを識別する必要があります。現在のユーザーには、ORA_BIGSQL_CONFIGデータベース・ディレクトリのREAD権限も必要です。「bigdata_configディレクトリについて」を参照してください。

関連ビュー

  • 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

4.4.3 ALL_HIVE_COLUMNS

ALL_HIVE_COLUMNSは、現在のユーザーにアクセスできるすべてのHive表の列を示します。

Oracle Big Data SQL構成は、現在のユーザーのデフォルトのHiveデータベースを識別する必要があります。現在のユーザーには、ORA_BIGSQL_CONFIGデータベース・ディレクトリのREAD権限も必要です。「bigdata_configディレクトリについて」を参照してください。

関連ビュー

  • 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

4.4.4 DBA_HIVE_DATABASES

DBA_HIVE_DATABASESは、Hiveメタストア内のすべてのデータベースを示します。列はALL_HIVE_DATABASESの列と同じです。

4.4.5 DBA_HIVE_TABLES

DBA_HIVE_TABLESは、Hiveメタストア内のすべての表を示します。列はALL_HIVE_TABLESの列と同じです。

Oracle Big Data SQL構成は、現在のユーザーのデフォルトのHiveデータベースを識別する必要があります。「bigdata_configディレクトリについて」を参照してください。

関連項目:

「ALL_HIVE_TABLES」

4.4.6 DBA_HIVE_COLUMNS

DBA_HIVE_COLUMNSは、Hiveメタストア内のすべての表の列を示します。列はALL_HIVE_COLUMNSの列と同じです。

4.4.7 USER_HIVE_DATABASES

USER_HIVE_DATABASESは、現在のユーザーが所有するHiveメタストア内のデータベースを示します。列(OWNERを除く)はALL_HIVE_DATABASESの列と同じです。

4.4.8 USER_HIVE_TABLES

USER_HIVE_TABLESは、Hiveメタストア内の現在のユーザーが所有するデータベースの表を示します。列(OWNERを除く)はALL_HIVE_TABLESの列と同じです。

Oracle Big Data SQL構成は、現在のユーザーのデフォルトのHiveデータベースを識別する必要があります。現在のユーザーには、ORA_BIGSQL_CONFIGデータベース・ディレクトリのREAD権限も必要です。「bigdata_configディレクトリについて」を参照してください。

関連項目:

「ALL_HIVE_TABLES」

4.4.9 USER_HIVE_COLUMNS

USER_HIVE_COLUMNSは、現在のユーザーが所有するHiveデータベースの表の列を示します。列(OWNERを除く)はALL_HIVE_COLUMNSの列と同じです。

Oracle Big Data SQL構成は、現在のユーザーのデフォルトのHiveデータベースを識別する必要があります。現在のユーザーには、ORA_BIGSQL_CONFIGデータベース・ディレクトリのREAD権限も必要です。「bigdata_configディレクトリについて」を参照してください。