説明
このステートメントは、Locationオブジェクトを作成するために使用されます。Locationオブジェクトは、外部テーブルや一時的外部テーブルにアクセスする際のパスと認証情報を格納し、データベースが外部データを読み書きするために利用されます。
説明
OceanBaseデータベースV4.4.x系では、V4.4.1バージョンから CREATE LOCATION ステートメントをサポートしています。
権限要件
実行権限:
CREATE LOCATIONステートメントを実行するには、現在のユーザーがCREATE LOCATION権限を持っている必要があります。OceanBaseデータベースの権限の詳細については、Oracleモードの権限分類を参照してください。認証資格情報の権限:
提供された
ACCESSIDとACCESSKEYは、対象ストレージサービスへの合法的なアクセス権限を持っている必要があります。
構文
CREATE [OR REPLACE] LOCATION location_name
URL = 'file_path'
[CREDENTIAL = (
ACCESSID = 'string'
ACCESSKEY = 'string'
HOST = 'string'
[S3_REGION = 'string']
[PRINCIPAL = 'string']
[KEYTAB = 'string']
[KRB5CONF = 'string']
[CONFIGS = 'string']
[USERNAME = 'string']
)
];
パラメータ説明
パラメータ |
説明 |
|---|---|
| OR REPLACE | オプションです。OR REPLACE を指定すると、対応する Location オブジェクトが既に存在する場合、新しい Location オブジェクトの定義で既存のものを上書きします。 |
| location_name | 作成する Location オブジェクトの名前を表します。 |
| URL = 'file_path' | 外部ストレージパスを指定するために使用されます。現在サポートされているストレージタイプは、ローカルファイル、HDFS、OSS、およびS3です。詳細については、以下の file_path を参照してください。 |
| CREDENTIAL | オプションです。パスへのアクセスに必要な情報を指定するために使用されます。ローカルパスではこのパラメータは不要です。 |
| ACCESSID | オブジェクトストレージにアクセスするユーザーのAccessKey IDを指定するために使用されます。 |
| ACCESSKEY | オブジェクトストレージにアクセスするユーザーのAccessKey Secretを指定するために使用されます。 |
| HOST | オブジェクトストレージサービスのホストアドレスを指定するために使用されます。 |
| S3_REGION | オプションです。S3オブジェクトストレージのサービスリージョンを指定するために使用されます。 |
| PRINCIPAL | オプションです。ターゲットのHDFSクラスタがKerberos環境を備えている場合、ログイン認証ユーザーを設定する必要があります。 |
| KEYTAB | オプションです。ターゲットのHDFSクラスタがKerberos環境を備えている場合、認証キーテーブルファイルを設定する必要があります。 |
| KRB5CONF | オプションです。ターゲットのHDFSクラスタがKerberos環境を備えている場合、ユーザーがKerberos環境を使用することを指定するために使用されます。 |
| CONFIGS | オプションです。ターゲットのHDFSクラスタがKerberos環境を備えている場合、追加のHadoopクライアント設定パラメータを指定するために使用されます。key=value の形式で連結し、# で区切ります。詳細については、以下の configs_option を参照してください。 |
| USERNAME | オプションです。ターゲットのHDFSクラスタがKerberos環境を備えている場合、ユーザーの身元を一意に識別するために指定する必要があります。 |
file_path
外部テーブルファイルの保存パスは、以下の形式となります:
ローカルパスの形式:
URL = 'file://local_file_path'。ここで、local_file_pathは相対パスまたは絶対パスにすることができます。HDFSパスの形式:
URL = 'hdfs://localhost:port/PATH'。ここで、localhostはHDFSのアドレスを指し、portはHDFSのポート番号を指し、PATHはHDFS内のディレクトリパスを指します。オブジェクトストレージ(OSS/S3)パスの形式:
URL = '{oss | s3}://bucket/remote_file_path'。
注意
Locationオブジェクトを作成するパスには、パラメータを含めないでください。
configs_option
パラメータ |
機能 |
|---|---|
| dfs.data.transfer.protection=integrity | データ転送の整合性保護(SASL)を有効にすることを示します。 |
| dfs.nameservices=${nameservice id} | 現在のHAクラスタのnamesevice(エイリアス)を指定します。例えば、dfs.nameservices=myclusterは論理クラスタ名をmyclusterと定義することを意味します。 |
| dfs.ha.namenodes.${nameservice id}=${namenode1}, ${namenode2} | HAクラスタのnamenodeスタンバイIDリストを指定します。例えば、dfs.ha.namenodes.mycluster=nn1,nn2は、そのクラスタにnn1,nn2という2つのNameNodeがあることを指定します。 |
| dfs.namenode.rpc-address.${nameservice id}.${namenode1}=${namenode 1 address} | クライアントのルーティングを容易にするために、namenode1が具体的なnamenodeであることを設定します。例えば、dfs.namenode.rpc-address.mycluster.nn1=test1:18020はnn1のRPCアドレスを表します。 |
| dfs.namenode.rpc-address.${nameservice id}.${namenode2}=${namenode 2 address} | クライアントのルーティングを容易にするために、namenode2が具体的なnamenodeであることを設定します。例えば、dfs.namenode.rpc-address.mycluster.nn2=test2:18020はnn2のRPCアドレスを表します。 |
| dfs.ha.automatic-failover.enabled=${nameservice id}=true | 自動フェイルオーバーを有効にすることを示します。これにより、HAクラスタは関連するリクエストを取得した後、利用可能なnamenodeを自動的に取得してサービス応答を行います。 |
| dfs.client.failover.proxy.provider=${nameservice id}=org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider | HAクラスタのプライマリ/スタンバイ切り替えを行うロジックツールクラスを指示します。また、必要に応じてカスタムロジックをパッケージ化してHAクラスタにアップロードすることもできます。 |
例
ローカルに保存先を持つLocationオブジェクトを作成します。
obclient> CREATE LOCATION test_location_local URL = 'file://home/admin/test_csv';OSSに保存先を持つLocationオブジェクトを作成します。
obclient> CREATE LOCATION test_location_oss URL = 'oss://dir' CREDENTIAL = ( ACCESSID = '******' ACCESSKEY = '******' HOST = '****' );ユーザー認証モードのLocationオブジェクトを作成します。
Kerberosは不要ですが、特定のHDFSユーザーとしてアクセスする必要があります。
説明
Kerberos権限認証が有効でないクラスターに適用されますが、関連するHDFSパスには特定のユーザーがアクセスできる必要があるシナリオ。
CREATE LOCATION hdfs_user URL = 'hdfs://namenode:8020/' CREDENTIAL ( USER = 'hdfs_user_name' );Kerberosを有効にし、HDFSを単一NameNode(非HAモード)に設定したLocationオブジェクトを作成します。
説明
CONFIGS内のdfs.data.transfer.protectionは、HDFSクラスターの設定と一致させる必要があります。CREATE LOCATION hdfs_kerberos_single URL = 'hdfs://namenode.example.com:8020/' CREDENTIAL ( PRINCIPAL = "hdfs/xxx@xxx.COM", KEYTAB = "/data/hdfs.keytab", KRB5CONF = "/data/krb5.conf", CONFIGS = 'dfs.data.transfer.protection=integrity' );Kerberosを有効にし、HDFSを高可用性(HA)モードに設定したLocationオブジェクトを作成します。
CREATE LOCATION hdfs_kerberos_ha URL = 'hdfs://${nameservice id}' CREDENTIAL ( PRINCIPAL = "hdfs/xxx@xxx.COM", KEYTAB = "/etc/ob/hdfs.keytab", KRB5CONF = "/etc/krb5.conf", CONFIGS = 'dfs.data.transfer.protection=${string}#dfs.nameservices=${nameservice id}#dfs.ha.namenodes.${nameservice id}=${namenode1}, ${namenode2}#dfs.namenode.rpc-address.${nameservice id}.${namenode1}=${namenode 1 address}#dfs.namenode.rpc-address.${nameservice id}.${namenode2}=${namenode 2 address}#dfs.ha.automatic-failover.enabled.${nameservice id}=true#dfs.client.failover.proxy.provider.${nameservice id}=org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider' );Kerberosは有効ではありませんが、HDFSは高可用性(HA)モードです。
説明
Kerberosは有効ではありませんが、HDFSは高可用性(HA)モードです。
PRINCIPAL、KEYTAB、KRB5CONFパラメータは設定不要です。CREATE LOCATION hdfs_location_ha URL = 'hdfs://${nameservice id}' CREDENTIAL ( CONFIGS = 'dfs.nameservices=${nameservice id}#dfs.ha.namenodes.${nameservice id}=${namenode1}, ${namenode2}#dfs.namenode.rpc-address.${nameservice id}.${namenode1}=${namenode 1 address}#dfs.namenode.rpc-address.${nameservice id}.${namenode2}=${namenode 2 address}#dfs.ha.automatic-failover.enabled.${nameservice id}=true#dfs.client.failover.proxy.provider.${nameservice id}=org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider' );
関連ドキュメント
- Locationオブジェクト配下のファイルの情報を確認する方法については、SHOWを参照してください。
- Locationオブジェクトを変更する方法については、ALTER LOCATIONを参照してください。
- Locationオブジェクト配下のファイルを削除する方法については、REMOVEを参照してください。
- Locationオブジェクトを削除する方法については、DROP LOCATIONを参照してください。