AnalyticDB for MySQL Data Lakehouse Edition (V3.0) を使用すると、CREATE EXTERNAL TABLEステートメントを実行して、Object Storage Service (OSS) 、ApsaraDB RDS for MySQL、ApsaraDB for MongoDB、Tablestore、MaxComputeなどのさまざまなサービスに基づいて外部テーブルを作成できます。
前提条件
AnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスターが作成されます。
クラスターのマイナーバージョンは3.1.8.0以降です。
説明クラスターのマイナーバージョンをクエリする方法については、AnalyticDB for MySQLクラスターのバージョンを照会するにはどうすればよいですか? クラスターのマイナーバージョンを更新するには、テクニカルサポートにお問い合わせください。
外部データベースが作成されます。 詳細については、「外部データベースの作成」をご参照ください。
使用上の注意
Alibaba Cloudアカウント全体で外部テーブルを作成することはできません。
OSS外部テーブル
OSS外部テーブルが作成されるOSSバケットは、AnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスターと同じリージョンに存在する必要があります。
Hudi外部テーブルは、V3.1.9.2以降のAnalyticDB for MySQLクラスターに対してのみ作成できます。
構文
CREATE EXTERNAL TABLE [存在しない場合] table_name
(column_name column_type[, ...])
[PARTITIONED BY (column_name column_type[, ...])]
'、' によって終了するROW FORMAT DELIMITED FIELDS
{TEXTFILE | ORC | PARQUET | JSON | RCFIL | HUDI} として保存
ロケーション 'OSS_ロケーション ';
[TBLPROPERTIES ()
'type' = 'cow | mor'
'auto.create.location' = 'true | false')
パラメーター
パラメーター | 必須 | 説明 |
| 可 | 外部テーブルの名前とスキーマ。 テーブル名と列名は、命名規則に準拠している必要があります。 詳細については、「制限」トピックの「命名制限」セクションをご参照ください。 |
| 任意 | パーティションキー列。 外部テーブルがパーティションテーブルの場合、このパラメーターを指定する必要があります。 マルチレベルパーティションテーブルを作成するには、複数のパーティションを指定できます。 |
| 可 | 列の区切り文字。 ファイル内の区切り文字と同じ文字を指定できます。 この例では、コンマ (,) が使用されます。 重要 このパラメーターは、 |
| 可 | ファイルの保存形式。 TXTおよびCSVファイルの場合、このパラメーターを 重要 V3.1.8.0以降のAnalyticDB for MySQLクラスターのみが、STRUCTデータ型の |
| 可 | OSSオブジェクトのパスまたはディレクトリ。 OSSディレクトリを指定する場合は、次のルールに従うことを推奨します。 そうしないと、クエリエラーまたはデータ例外が発生する可能性があります。
パーティション化された外部テーブルを作成するときは、LOCATIONパラメーターをパーティションの上位ディレクトリに設定する必要があります。 たとえば、OSSオブジェクトのパスは 重要
|
| 任意 | Hudi外部テーブルのタイプ。 有効な値:
重要 このパラメーターは、 |
| 任意 | OSSパスまたはディレクトリを自動的に作成するかどうかを指定します。 有効な値:
重要 このパラメーターは、パーティション化された外部テーブルを作成した場合にのみ有効です。 |
例
例1: パーティション分割されていない外部テーブルの作成
ファイルの保存形式をTEXTFILEに設定します。
存在しない場合は外部テーブルを作成するadb_external_demo.osstest1 (id int, 名前文字列, 年齢int, 都市文字列) '、' によって終了するROW FORMAT DELIMITED FIELDS テキストファイルとして保存 LOCATION 'oss:// testBucketName/osstest/p1=hangzhou/p2=2023-06-13/data.csv ';
ファイルの保存形式をHUDIに設定します。
存在しない場合は外部テーブルを作成するadb_external_demo.osstest2 (id int, 名前文字列, 年齢int, 都市文字列) HUDIとして保存 ロケーション 'oss:// testBucketName/osstest/test' TBLPROPERTIES ('type' = 'cow');
重要Hudi外部テーブルを作成すると、
_hoodie_commit_time
、_hoodie_commit_seqno
、_hoodie_record_key
、_hoodie_partition_path
、および_hoodie_file_name
列が自動的に作成されます。ファイルの保存形式をPARQUETに設定します。
存在しない場合は外部テーブルを作成するadb_external_demo.osstest3 ( STRUCT < var1:string, var2:int> ) PARQUETとして保存 ロケーション 'oss:// testBucketName/osstest/Parquet';
例2: パーティション化外部テーブルの作成
存在しない場合は外部テーブルを作成するadb_external_demo.osstest4
(id int,
名前文字列,
年齢int,
都市文字列)
PARTITIONED BY (p2文字列)
'、' によって終了するROW FORMAT DELIMITED FIELDS
テキストファイルとして保存
LOCATION 'oss:// testBucketName/osstest/p1=hangzhou/';
例3: マルチレベルパーティション外部テーブルの作成
存在しない場合は外部テーブルを作成するadb_external_demo.osstest5
(id int,
名前文字列,
年齢int,
都市文字列)
PARTITIONED BY (p1文字列、p2文字列)
'、' によって終了するROW FORMAT DELIMITED FIELDS
テキストファイルとして保存
ロケーション 'oss:// testBucketName/osstest/';
ApsaraDB RDS for MySQL外部テーブル
ApsaraDB RDS for MySQL外部テーブルを作成する場合、AnalyticDB for MySQLコンソールの クラスター情報 ページでElastic Network Interface (ENI) を有効にする必要があります。
ApsaraDB RDS for MySQLインスタンスは、AnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスターと同じ仮想プライベートクラウド (VPC) に存在する必要があります。
構文
CREATE EXTERNAL TABLE [存在しない場合] table_name
(column_name column_type[, ...])
エンジン='MYSQL'
TABLE_PROPERTIES='{
"url":"mysql_vpc_address" 、"tablename":"mysql_table_name" 、"username":"mysql_user_name" 、"password":"mysql_user_password"
[,"charset":"{gbk | utf8 | utf8mb4}"]
}';
パラメーター
パラメーター | 必須 | 説明 |
| 可 | 外部テーブルの名前とスキーマ。 テーブル名と列名は、命名規則に準拠している必要があります。 詳細については、「制限」トピックの「命名制限」セクションをご参照ください。 |
| 可 | 外部テーブルのストレージエンジン。 ApsaraDB RDS for MySQLデータを読み書きするには、ストレージエンジンをMYSQLに設定します。 |
| 可 | 外部テーブルのプロパティ。 |
| 可 | ApsaraDB RDS for MySQLインスタンスのVPCエンドポイントとポート番号、およびインスタンス内のデータベースの名前。 ApsaraDB RDS For MySQLインスタンスのVPCエンドポイントを取得する方法については、「ApsaraDB RDS for MySQLインスタンスの内部およびパブリックエンドポイントとポート番号の表示と変更」をご参照ください。 |
| 可 | ApsaraDB RDS for MySQL外部テーブルの名前。 |
| 可 | ApsaraDB RDS for MySQLインスタンスのデータベースアカウント。 |
| 可 | データベースアカウントのパスワードを設定します。 |
| 任意 | ApsaraDB RDS for MySQLインスタンスのデータベースで使用される文字セット。 有効な値:
|
例
adb_external_demo.mysqltestが存在しない場合は外部テーブルを作成します (
id int,
名前varchar(1023) 、年齢int
) エンジン='MYSQL'
TABLE_PROPERTIES = '{
"url":"jdbc:mysql:// rm-bp1gx6h1tyd04 **** .mysql.rds.aliyuncs.com:3306/test_adb" 、
"tablename":"person" 、
"username":"testUserName" 、
"password":"testUserPassword" 、
"charset":"utf8"
} ';
ApsaraDB for MongoDB外部テーブル
ApsaraDB for MongoDB外部テーブルを作成する場合、AnalyticDB for MySQLコンソールの クラスター情報 ページでENIを有効にする必要があります。
ApsaraDB for MongoDBインスタンスは、AnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスターと同じVPCに存在する必要があります。
構文
CREATE EXTERNAL TABLE [存在しない場合] table_name
(column_name column_type[, ...])
エンジン='モンゴル'
TABLE_PROPERTIES = '{
"mapped_name":"テーブル" 、
"location":"location" 、
"username":"user" 、
"password":"password" 、} ';
Parameters
パラメーター | 必須 | 説明 |
| 可 | 外部テーブルの名前とスキーマ。 テーブル名と列名は、命名規則に準拠している必要があります。 詳細については、「制限」トピックの「命名制限」セクションをご参照ください。 |
| 可 | 外部テーブルのストレージエンジン。 ApsaraDB for MongoDBデータを読み書きするには、ストレージエンジンをMONGODBに設定します。 |
| 可 | 外部テーブルのプロパティ。 |
mapped_name | 可 | ApsaraDB for MongoDBコレクションの名前。 |
場所 | 可 | ApsaraDB for MongoDBインスタンスへの接続に使用されるVPCエンドポイント。 VPCエンドポイントの取得方法については、「」をご参照ください。インスタンス接続の概要 |
username | 可 | ApsaraDB for MongoDBインスタンスへの接続に使用されるデータベースアカウントの名前。 データベースアカウントの作成方法については、「MongoDBデータベースユーザーの権限の管理」をご参照ください。 説明 ApsaraDB for MongoDBは、指定されたデータベースアカウントとパスワードを検証します。 ApsaraDB for MongoDBインスタンスのVPCエンドポイントに含まれるデータベースアカウントを使用する必要があります。 ご不明な点がございましたら、テクニカルサポートにお問い合わせください。 |
password | 可 | データベースアカウントのパスワードを設定します。 |
例
外部テーブルの作成adb_external_demo.person (
id int,
名前文字列,
年齢int
) ENGINE = 'MONGODB' TABLE_PROPERTIES ='{
"mapped_name":"person" 、"location":"mongodb:// testuser:**** @ dds-bp113d414bca8 **** .mongodb.rds.aliyuncs.com:3717、dds-bp113d414bca8 **** .mongodb.rds.aliyuncs.com:3717/test_mongodb" 、"username":"testuser" 、"password":"password" 、} ';
Tablestore外部テーブル
TablestoreインスタンスがバインドされているVPCは、AnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスターが存在するVPCと同じである必要があります。
構文
CREATE EXTERNAL TABLE [存在しない場合] table_name
(column_name column_type[, ...])
エンジン='OTS'
TABLE_PROPERTIES = '{
"mapped_name":"table_name" 、"location":"tablestore_vpc_address"
} ';
パラメーター
パラメーター | 必須 | 説明 |
| 可 | 外部テーブルの名前とスキーマ。 テーブル名と列名は、命名規則に準拠している必要があります。 詳細については、「制限」トピックの「命名制限」セクションをご参照ください。 |
| 可 | 外部テーブルのストレージエンジン。 Tablestoreデータを読み書きするには、ストレージエンジンをOTSに設定します。 |
| 可 | Tablestoreインスタンスのテーブルの名前。 テーブルの名前を表示するには、Tablestoreコンソールにログインし、[インスタンス管理] ページに移動します。 |
| 可 | TablestoreインスタンスのVPCエンドポイント。 インスタンスのVPCエンドポイントを表示するには、Tablestoreコンソールにログインし、[インスタンス管理] ページに移動します。 |
例
adb_external_demo.otstestが存在しない場合は外部テーブルを作成します (
id int,
名前文字列,
年齢int
) エンジン='OTS'
TABLE_PROPERTIES = '{
"mapped_name":"person" 、"location":"https:// w0 **** la.cn-hangzhou.vpc.tablestore.aliyuncs.com"
} ';
MaxCompute外部テーブル
MaxComputeプロジェクトは、AnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスターと同じリージョンに存在する必要があります。
構文
CREATE EXTERNAL TABLE [存在しない場合] table_name
(column_name column_type[, ...])
エンジン='ODPS'
TABLE_PROPERTIES='{
"endpoint":"endpoint" 、"accessid":"accesskey_id" 、"accesskey":"accesskey_secret" 、["partition_column":"partition_column"] 、"project_name":"project_name" 、"table_name":"table_name"
} ';
パラメーター
パラメーター | 必須 | 説明 |
| 可 | 外部テーブルの名前とスキーマ。 テーブル名と列名は、命名規則に準拠している必要があります。 詳細については、「制限」トピックの「命名制限」セクションをご参照ください。 重要 定義されたテーブルスキーマには、partition_columnパラメーターを含める必要があります。 |
| 可 | 外部テーブルのストレージエンジン。 MaxComputeデータを読み書きするには、ストレージエンジンをODPSに設定します。 |
| 可 | MaxComputeプロジェクトのエンドポイント。 説明 MaxComputeには、VPCエンドポイントを使用してのみアクセスできます。 詳細については、「エンドポイント」をご参照ください。 |
| 可 | MaxComputeへのアクセスに使用されるAlibaba CloudアカウントまたはRAM (Resource Access Management) ユーザーのAccessKey ID。 AccessKey IDとAccessKeyシークレットの取得方法については、「アカウントと権限」をご参照ください。 |
| 可 | MaxComputeへのアクセスに使用されるAlibaba CloudアカウントまたはRAMユーザーのAccessKeyシークレット。 AccessKey IDとAccessKeyシークレットの取得方法については、「アカウントと権限」をご参照ください。 |
| 任意 | パーティションキー列。 外部テーブルがパーティションテーブルの場合、このパラメーターを指定する必要があります。 |
| 可 | MaxCompute プロジェクトの名前を設定します。 |
| 可 | MaxComputeテーブルの名前。 |
例
adb_external_demo.mctestが存在しない場合は外部テーブルを作成します (
id int,
名前varchar(1023) 、年齢int,
dtストリング
) エンジン='ODPS'
TABLE_PROPERTIES='{
"accessid":"LTAILd4 ****" 、"endpoint":" http://service.cn-hangzhou.maxcompute.aliyun.com/api " 、"accesskey":"4A5Q7ZVzcYnWMQPysX ****" 、"partition_column":"dt" 、"project_name":"test_adb" 、"table_name":"person"
} ';
関連ドキュメント
OSS外部テーブル: 外部テーブルを使用してdata Lakehouse Editionにデータをインポート
ApsaraDB RDS for MySQL外部テーブル: 外部テーブルを使用してdata Lakehouse Editionにデータをインポート
ApsaraDB for MongoDB外部テーブル: ApsaraDB for MongoDBからAnalyticDB for MySQLへのデータのインポート
Tablestore外部テーブル: Tablestoreからデータをインポート
MaxCompute外部テーブル: 外部テーブルを使用してdata Lakehouse Editionにデータをインポート