DBMS_HADOOP
パッケージには、Hive表のCREATE EXTERNAL TABLE
DDLを生成するための関数が含まれています。
この関数は、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関数のパラメータ
パラメータ | 説明 |
---|---|
|
HiveメタストアがあるHadoopクラスタ |
|
Hiveデータベースの名前 |
|
Hive表の名前 |
|
表がパーティション化されている( |
|
作成されるOracle外部表の名前。すでに存在する名前にはできません。 |
|
生成された コマンドを確認または変更する場合は、コマンドを自動的に実行しないでください。 |
|
生成された |
使用上の注意
Oracle DatabaseシステムはOracle Big Data SQL用に構成する必要があります。「データベース・サーバー(Oracle Exadata Machineなど)上のOracle Big Data SQLについて」を参照してください。
データ型変換は、Hiveデータ型とOracleデータ型の間のデフォルトのマッピングに基づいています。「データ型変換について」を参照してください。
次の問合せは、デフォルトの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
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ロールを付与して、これらのプロシージャを起動できるようにします。
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_UID 、CLIENT_IDENTIFIER およびAUTHENTICATED_IDENTITY のみです。 Oracle Databaseのインストールで認証にKerberos資格証明、SSL、Active DirectoryまたはLDAPを使用する場合、Hadoopシステムでも同じ認証フレームワークを使用している可能性があります。その場合は、 |
syscontext_parm_hadoop_user |
現在のデータベース・ユーザーを偽装するHadoopユーザー。 |
注意:
current_database_user
とsyscontext_parm_hadoop_user
の値は、単一のアスタリスク文字(*)またはOracle simple_sql_name
アサーションの要件を満たす文字列になります。
名前は英字で始まる必要があります。2番目以降の文字位置には、英数文字と文字_、$、#を含めることができます。
引用符付きのSQL名も許容されます。
引用符付きの名前は、二重引用符で囲まれている必要があります。
引用符付きの名前は、引用符の間に任意の文字を使用できます。
名前の内側にある引用符は、行内で2つの引用符文字で表されます。たとえば、"a name with ""の内側の"は有効な引用符付きの名前です。
入力パラメータには、先頭や末尾に任意の数の空白を含めることができます。
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
パラメータの説明があります。
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 | この列値には、相対する解釈があります。
|
ここでは、データベースに対するログオン認証に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 | * |
この項では、ORACLE_HDFS
またはORACLE_HIVE
アクセス・ドライバを使用する外部表を作成するときに使用するプロパティについて説明します。CREATE TABLE ORGANIZATION EXTERNAL
文で、ACCESS PARAMETERS
のopaque_format_spec
句にパラメータを指定します。
この項の内容は次のとおりです。
プロパティのアルファベット順リスト
プロパティは、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 プロパティの特殊文字
エスケープ順序 | 文字 |
---|---|
|
バックスペース( |
|
水平タブ( |
|
行フィード( |
|
フォーム・フィード( |
|
キャリッジ・リターン( |
|
二重引用符( |
|
一重引用符( |
|
バックスラッシュ( 複数のバックスラッシュが行末にある場合、パーサーは奇数のバックスラッシュに対してのみ値を次の行に継続します。 |
|
2バイト、ビッグ・エンディアン、Unicodeコード・ポイント。 1文字に2コード・ポイント(4バイト)が必要な場合、パーサーは2番目のコード・ポイントに |
ORACLE_HDFS
アクセス・ドライバのアクセス・パラメータは、HDFS内のデータを特定するのに必要なメタデータを提供し、Hive表を作成します。
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"}
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/*"));
ORACLE_HIVE
は、Hiveカタログから外部データ・ソースに関するメタデータを取得します。通常、外部データ表の列への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"}
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}] ));
大きいレコード読取りのバッファ・サイズをKBで設定します。デフォルトのバッファ・サイズよりも大きいレコードを読み取る必要がある場合にこの値を設定します。
デフォルト値
1000 KB
構文
com.oracle.bigdata.buffersize: n
例
次の例ではバッファ・サイズを100 MBに設定します。
com.oracle.bigdata.buffersize: 100000
ソース・データの列を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"}]
SmartScanがHadoopデータ・ソースをスキャンするために使用する方法を指定します。方法によって、パフォーマンスに大きな違いが生じる可能性があります。
デフォルト値
automatic
構文
キーワード/値のペアを持つJSONドキュメントを次の図に示します。
datamode:
セマンティクス
automatic
メタデータに基づいて適切なモードを自動的に選択します。可能な場合はc
モードを選択します。データにc
モードでサポートされていない形式が含まれる場合は、java
モードを選択します。
c
ファイル・バッファを読み取る場合はJavaを使用しますが、データを処理してOracle形式に変換する場合はCコードを使用します。デリミタ付きデータにこのモードを指定します。
データにCコードでサポートされていない形式が含まれる場合は、エラーが返されます。
java
データを処理してOracle形式に変換する場合は、Java SerDesおよびInputFormatsを使用します。Parquet、RCFileおよびSerDeを必要とする他のデータ形式にこのモードを指定します。
列の値の計算中に発生するエラーを処理する方法を示します。
デフォルト値
{"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"]
データ・ソースのフィールド名およびデータ型をリストします。
デフォルト値
未定義
構文
キーワード/値のペアを持つJSONドキュメントを次の図に示します。
fields:
data_type:
primitive_type:
セマンティクス
構文は、Hive表のフィールド・リストと同じです。フィールド・リストを複数行に分割する場合、バックスラッシュを使用して改行文字をエスケープする必要があります。
field_name
Hiveフィールドの名前。英数字およびアンダースコア(_)のみ使用します。最大長は128文字です。フィールド名は大/小文字を区別します。
data_type
Hiveフィールドのデータ型。オプション。デフォルトはSTRING
です。文字セットはUTF8である必要があります。
データ型は複合またはプリミティブになります。
Hive複合データ型
ARRAY
: 索引付け可能なリスト
MAP
: キー値のタプル
STRUCT
: 要素のリスト
UNIONTYPE
: 複数のデータ型
Hiveプリミティブ・データ型
INT
: 4バイトの整数
BIGINT
: 8バイトの整数
SMALLINT
: 2バイトの整数
TINYINT
: 1バイトの整数
BOOLEAN
: TRUE
またはFALSE
FLOAT
: 単精度
DOUBLE
: 倍精度
STRING
: 文字列
関連項目:
Apache Hive Language Manualのデータ型に関する項を参照してください。
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types
COMMENT col_comment
一重引用符で囲まれた文字列リテラル。Hive表のメタデータとして格納されます(TBLPROPERTIES
のcomment
プロパティ)。
ORACLE_HDFS
によって生成されたHive表のROW FORMAT
句に基づいて、データ・ソースの行形式を説明します。
デフォルト値
TEXTFILE
構文
キーワード/値のペアを持つJSONドキュメントを次の図に示します。
fileformat:
セマンティクス
ORC
最適化された行カラムナ・ファイル形式
PARQUET
列指向、バイナリ・ファイル形式
RCFILE
レコード・カラムナ・ファイル形式
SEQUENCEFILE
圧縮ファイル形式
TEXTFILE
プレーン・テキスト・ファイル形式
INPUTFORMAT
データ・ファイルからレコードを抽出できるJavaクラスを識別します。
OUTPUTFORMAT
出力レコードを目的の形式に設定できるJavaクラスを識別します。
アクセス・ドライバが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の変数
変数 | 値 |
---|---|
|
オペレーティング・システム・プロセス識別子(PID) |
|
プロセスを一意に識別する番号。 |
|
パーセント記号( |
例
次の例では、PIDおよび一意の番号を含むログ・ファイル名(xtlogp_hive14_3413_57
など)を生成します。
com.oracle.bigdata.log.exec= xtlogp_hive14_%p_%a
アクセス・ドライバが問合せのログ・ファイルを生成する方法を指定します。
デフォルト値
未定義(ロギングなし)
構文
[directory_object:]file_name_template
セマンティクス
directory_object
ログ・ファイルが書き込まれるパスを指すOracleディレクトリ・オブジェクトの名前。この値を省略すると、ログは外部表のデフォルト・ディレクトリに書き込まれます。
file_name_template
ファイル名の生成に使用する文字列。表4-6に、文字列で使用できるオプションの変数を示します。
表4-6 com.oracle.bigdata.log.qcの変数
変数 | 値 |
---|---|
|
オペレーティング・システム・プロセス識別子(PID) |
|
パーセント記号( |
例
この例では、PIDおよびパーセント記号を含むログ・ファイル名(xtlogp_hive213459_%
など)を作成します。
com.oracle.bigdata.log.qc= xtlogp_hive21%p_%%
外部表の列には長すぎる文字列データの処理方法を示します。データ・ソースは文字またはバイナリになります。Hiveの場合、データ・ソースはSTRUCT
、UNIONTYPES
、MAP
または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"}
アクセス・ドライバがファイル内のレコードからフィールドを抽出するために必要な情報を提供します。
重要:
com.oracle.bigdata.rowformat
は、"type ORACLE_LOADER"を使用する従来の外部表のアクセス・パラメータ構文とは無関係です。FIELDS
、TERMINATED
などのキーワードもあれば、両方の句に現れるキーワードもありますが、ネーミングにおける共通性は偶然であり、共通機能を意味するものではありません。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}) .*")
ソース・データを含む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
Oracle Databaseカタログには、Hive表の複数の静的データ・ディクショナリ・ビューが含まれています。これらのデータ・ディクショナリ・ビューを問い合せて、アクセスできるHive表に関する情報を検出できます。
Oracle DatabaseからHiveデータベースにアクセスする場合、ORACLE_BIGDATA_CONFIG
ディレクトリ・オブジェクトの読取りアクセス権が必要です。
ALL_HIVE_DATABASES
は、現在のユーザーにアクセスできるHiveメタストア内のすべてのデータベースを示します。
関連ビュー
DBA_HIVE_DATABASES
は、Hiveメタストア内のすべてのデータベースを示します。
USER_HIVE_DATABASES
は、現在のユーザーが所有するHiveメタストア内のデータベースを示します。
列 | データ型 | NULL | 説明 |
---|---|---|---|
|
|
|
HiveメタストアがあるHadoopクラスタ |
|
|
|
Hiveデータベース名 |
|
|
Hiveデータベースの説明 |
|
|
|
|
|
|
|
HiveデータベースのURI |
ALL_HIVE_TABLES
は、現在のユーザーにアクセスできるHiveメタストア内のすべての表を示します。
Oracle Big Data SQL構成は、現在のユーザーのデフォルトのHiveデータベースを識別する必要があります。現在のユーザーには、ORA_BIGSQL_CONFIG
データベース・ディレクトリのREAD
権限も必要です。「bigdata_configディレクトリについて」を参照してください。
関連ビュー
DBA_HIVE_TABLES
は、Hiveメタストア内のすべての表を示します。
USER_HIVE_TABLES
は、Hiveメタストア内の現在のユーザーが所有するデータベースの表を示します。
列 | データ型 | NULL | 説明 |
---|---|---|---|
|
|
|
HiveメタストアがあるHadoopクラスタ |
|
|
|
Hiveデータベースの名前 |
|
|
|
Hive表の名前 |
|
|
||
|
|
Hive表内の列の数 |
|
|
|
表が作成された時刻 |
|
|
|
最新のアクセス時刻 |
|
|
|
Hive表の所有者 |
|
|
|
|
Hive表のタイプ(外部、管理対象など) |
|
|
表がパーティション化されている( |
|
|
|
パーティションの数 |
|
|
|
入力形式 |
|
|
|
出力形式 |
|
|
|
SerDeシリアル化情報 |
|
|
|
表が圧縮されている( |
|
|
|
HiveデータベースのURI |
ALL_HIVE_COLUMNS
は、現在のユーザーにアクセスできるすべてのHive表の列を示します。
Oracle Big Data SQL構成は、現在のユーザーのデフォルトのHiveデータベースを識別する必要があります。現在のユーザーには、ORA_BIGSQL_CONFIG
データベース・ディレクトリのREAD
権限も必要です。「bigdata_configディレクトリについて」を参照してください。
関連ビュー
DBA_HIVE_COLUMNS
は、Hiveメタストア内のすべての表の列を示します。
USER_HIVE_COLUMNS
は、現在のユーザーが所有するHiveデータベースの表の列を示します。
列 | データ型 | NULL | 説明 |
---|---|---|---|
|
|
|
HiveメタストアがあるHadoopクラスタ |
|
|
|
Hiveデータベースの名前。空白の場合は、デフォルト・データベース |
|
|
|
Hive表の名前 |
|
|
|
Hive列の名前 |
|
|
|
Hive列のデータ型 |
|
|
|
Hiveデータ型と同等のOracleデータ型 |
|
|
||
|
|
Hive表の所有者 |
|
|
|
表が作成された時刻 |
|
|
|
HiveデータベースのURI |
DBA_HIVE_DATABASES
は、Hiveメタストア内のすべてのデータベースを示します。列はALL_HIVE_DATABASES
の列と同じです。
関連項目:
DBA_HIVE_TABLES
は、Hiveメタストア内のすべての表を示します。列はALL_HIVE_TABLES
の列と同じです。
Oracle Big Data SQL構成は、現在のユーザーのデフォルトのHiveデータベースを識別する必要があります。「bigdata_configディレクトリについて」を参照してください。
関連項目:
USER_HIVE_DATABASES
は、現在のユーザーが所有するHiveメタストア内のデータベースを示します。列(OWNER
を除く)はALL_HIVE_DATABASES
の列と同じです。
関連項目:
USER_HIVE_TABLES
は、Hiveメタストア内の現在のユーザーが所有するデータベースの表を示します。列(OWNER
を除く)はALL_HIVE_TABLES
の列と同じです。
Oracle Big Data SQL構成は、現在のユーザーのデフォルトのHiveデータベースを識別する必要があります。現在のユーザーには、ORA_BIGSQL_CONFIG
データベース・ディレクトリのREAD
権限も必要です。「bigdata_configディレクトリについて」を参照してください。
関連項目:
USER_HIVE_COLUMNS
は、現在のユーザーが所有するHiveデータベースの表の列を示します。列(OWNER
を除く)はALL_HIVE_COLUMNS
の列と同じです。
Oracle Big Data SQL構成は、現在のユーザーのデフォルトのHiveデータベースを識別する必要があります。現在のユーザーには、ORA_BIGSQL_CONFIG
データベース・ディレクトリのREAD
権限も必要です。「bigdata_configディレクトリについて」を参照してください。
関連項目: