MaxCompute catalog
StarRocks は v3.3 以降、Alibaba Cloud MaxCompute (以前は ODPS として知られていました) の catalog をサポートしています。
MaxCompute catalog は、データを取り込むことなく MaxCompute からデータをクエリすることを可能にする一種の external catalog です。
MaxCompute catalog を使用すると、INSERT INTO を使用して MaxCompute からデータを直接変換してロードすることもできます。
使用上の注意
MaxCompute catalog は、MaxCompute からデータをクエリするためにのみ使用できます。MaxCompute catalog を使用して、MaxCompute クラスター内のデータを削除、削除、または挿入することはできません。
統合準備
MaxCompute catalog を作成する前に、StarRocks クラスターが MaxCompute サービスに適切にアクセスできることを確認してください。
MaxCompute catalog の作成
構文
CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
"type" = "odps",
CatalogParams,
ScanParams,
CachingMetaParams
)
パラメータ
catalog_name
MaxCompute catalog の名前です。命名規則は次のとおりです。
- 名前には文字、数字 (0-9)、およびアンダースコア (_) を含めることができます。文字で始める必要があります。
- 名前は大文字と小文字を区別し、長さは 1023 文字を超えることはできません。
comment
MaxCompute catalog の説明です。このパラメータはオプションです。
type
データソースのタイプです。値を odps
に設定します。
CatalogParams
StarRocks が MaxCompute クラスターのメタデータにアクセスする方法に関する一連のパラメータです。
次の表は、CatalogParams
で設定する必要があるパラメータを説明しています。
パラメータ | 必須 | 説明 |
---|---|---|
odps.endpoint | はい | MaxCompute サービスの接続アドレス (すなわち、エンドポイント) です。MaxCompute プロジェクトを作成する際に選択したリージョンおよびネットワーク接続モードに応じてエンドポイントを設定する必要があります。異なるリージョンおよびネットワーク接続モードで使用されるエンドポイントの詳細については、Endpoint を参照してください。現在、Alibaba Cloud の 2 つのネットワーク接続モードのみがサポートされており、最良の体験を提供します: VPC およびクラシックネットワーク。 |
odps.project | はい | アクセスしたい MaxCompute プロジェクトの名前です。標準モードのワークスペースを作成した場合、このパラメータを設定する際に本番環境と開発環境 (_dev) のプロジェクト名の違いに注意してください。MaxCompute Console にログインし、Workspace > Project Management ページで MaxCompute プロジェクト名を取得できます。 |
odps.access.id | はい | Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID です。AccessKey Management ページにアクセスして AccessKey ID を取得できます。 |
odps.access.key | はい | AccessKey ID に対応する AccessKey Secret です。AccessKey Management ページにアクセスして AccessKey Secret を取得できます。 |
odps.tunnel.endpoint | いいえ | Tunnel サービスのパブリックネットワークアクセスリンクです。Tunnel エンドポイントを設定していない場合、Tunnel は自動的に MaxCompute サービスが所在するネットワークに一致する Tunnel エンドポイントにルーティングします。Tunnel エンドポイントを設定している場合、設定されたエンドポイントが使用され、自動ルーティングされません。 |
odps.tunnel.quota | はい | MaxCompute にアクセスするために使用されるクォータの名前です。MaxCompute はデータ転送のために 2 種類のリソースを提供します: MaxCompute Tunnel 用の専用リソースグループ (サブスクリプション) とストレージ API (従量課金制)。リソースタイプに基づいてクォータ名を取得するために、次の操作を実行できます。 MaxCompute Tunnel 用の専用リソースグループ: MaxCompute console にログインします。トップナビゲーションバーでリージョンを選択します。左側のナビゲーションペインで Workspace > Quotas を選択して、利用可能なクォータを表示します。詳細については、Manage quotas for computing resources in the MaxCompute console を参照してください。 Storage API: MaxCompute console にログインします。左側のナビゲーションペインで Tenants > Tenant Property を選択します。Tenants ページで Storage API Switch をオンにします。詳細については、Use storage API (pay-as-you-go) を参照してください。ストレージ API のデフォルト名は "pay-as-you-go" です。 |
ScanParams
StarRocks が MaxCompute クラスターに保存されているファイルにアクセスする方法に関する一連のパラメータです。このパラメータセットはオプションです。
次の表は、ScanParams
で設定する必要があるパラメータを説明しています。
パラメータ | 必須 | 説明 |
---|---|---|
odps.split.policy | いいえ | データスキャン時に使用されるシャードポリシーです。 有効な値: size (データサイズでシャード) および row_offset (行数でシャード)。デフォルト値: size 。 |
odps.split.row.count | いいえ | odps.split.policy が row_offset に設定されている場合のシャードごとの最大行数です。デフォルト値: 4 * 1024 * 1024 = 4194304 。 |
CachingMetaParams
StarRocks が Hive のメタデータをキャッシュする方法に関する一連のパラメータです。このパラメータセットはオプションです。
次の表は、CachingMetaParams
で設定する必要があるパラメータを説明しています。
パラメータ | 必須 | 説明 |
---|---|---|
odps.cache.table.enable | いいえ | StarRocks が MaxCompute テーブルのメタデータをキャッシュするかどうかを指定します。有効な値: true および false 。デフォルト値: true 。値 true はキャッシュを有効にし、値 false はキャッシュを無効にします。 |
odps.cache.table.expire | いいえ | StarRocks が MaxCompute テーブルまたはパーティションのキャッシュされたメタデータを自動的に削除する時間間隔 (秒単位) です。デフォルト値: 86400 (24 時間)。 |
odps.cache.table.size | いいえ | StarRocks がキャッシュする MaxCompute テーブルのメタデータエントリの数です。デフォルト値: 1000 。 |
odps.cache.partition.enable | いいえ | StarRocks が MaxCompute テーブルのすべてのパーティションのメタデータをキャッシュするかどうかを指定します。有効な値: true および false 。デフォルト値: true 。値 true はキャッシュを有効にし、値 false はキャッシュを無効にします。 |
odps.cache.partition.expire | いいえ | StarRocks が MaxCompute テーブルのすべてのパーティションのキャッシュされたメタデータを自動的に削除する時間間隔 (秒単位) です。デフォルト値: 86400 (24 時間)。 |
odps.cache.partition.size | いいえ | StarRocks がすべてのパーティションのメタデータをキャッシュする MaxCompute テーブルの数です。デフォルト値: 1000 。 |
odps.cache.table-name.enable | いいえ | StarRocks が MaxCompute プロジェクトからのテーブル情報をキャッシュするかどうかを指定します。有効な値: true および false 。デフォルト値: false 。値 true はキャッシュを有効にし、値 false はキャッシュを無効にします。 |
odps.cache.table-name.expire | いいえ | StarRocks が MaxCompute プロジェクトからのテーブル情報を自動的に削除する時間間隔 (秒単位) です。デフォルト値: 86400 (24 時間)。 |
odps.cache.table-name.size | いいえ | StarRocks がキャッシュする MaxCompute プロジェクトの数です。デフォルト値: 1000 。 |
例
次の例は、odps_project
をウェアハウスプロジェクトとして使用する odps_catalog
という名前の MaxCompute catalog を作成します。
CREATE EXTERNAL CATALOG odps_catalog
PROPERTIES (
"type"="odps",
"odps.access.id"="<maxcompute_user_access_id>",
"odps.access.key"="<maxcompute_user_access_key>",
"odps.endpoint"="<maxcompute_server_endpoint>",
"odps.project"="odps_project"
);
MaxCompute catalog の表示
現在の StarRocks クラスター内のすべての catalog をクエリするには、SHOW CATALOGS を使用できます。
SHOW CATALOGS;
また、SHOW CREATE CATALOG を使用して external catalog の作成ステートメントをクエリすることもできます。次の例は、odps_catalog
という名前の MaxCompute catalog の作成ステートメントをクエリします。
SHOW CREATE CATALOG odps_catalog;
MaxCompute catalog の削除
external catalog を削除するには、DROP CATALOG を使用できます。
次の例は、odps_catalog
という名前の MaxCompute catalog を削除します。
DROP CATALOG odps_catalog;
MaxCompute テーブルのスキーマを表示
MaxCompute テーブルのスキーマを表示するには、次のいずれかの構文を使用できます。
-
スキーマを表示
DESC[RIBE] <catalog_name>.<database_name>.<table_name>;
-
CREATE ステートメントからスキーマと場所を表示
SHOW CREATE TABLE <catalog_name>.<database_name>.<table_name>;
MaxCompute テーブルをクエリ
-
MaxCompute クラスター内のデータベースを表示するには、SHOW DATABASES を使用します。
SHOW DATABASES FROM <catalog_name>;
-
現在のセッションで目的の catalog に切り替えるには、SET CATALOG を使用します。
SET CATALOG <catalog_name>;
次に、現在のセッションでアクティブなデータベースを指定するには、USE を使用します。
USE <db_name>;
または、目的の catalog でアクティブなデータベースを直接指定するには、USE を使用します。
USE <catalog_name>.<db_name>;
-
指定されたデータベース内の目的のテーブルをクエリするには、SELECT を使用します。
SELECT count(*) FROM <table_name> LIMIT 10;
MaxCompute からデータをロード
StarRocks クラスターに olap_tbl
という名前の OLAP テーブルがあり、MaxCompute クラスターに mc_table
という名前のテーブルがあるとします。MaxCompute テーブル mc_table
から StarRocks テーブル olap_tbl
にデータを変換してロードするには、次のようにします。
INSERT INTO default_catalog.olap_db.olap_tbl SELECT * FROM mc_table;
データ型のマッピング
MaxCompute catalog は、MaxCompute のデータ型を StarRocks のデータ型にマッピングします。次の表は、MaxCompute のデータ型と StarRocks のデータ型のマッピングを示しています。
MaxCompute データ型 | StarRocks データ型 |
---|---|
BOOLEAN | BOOLEAN |
TINYINT | TINYINT |
SMALLINT | SMALLINT |
INT | INT |
BIGINT | BIGINT |
FLOAT | FLOAT |
DOUBLE | DOUBLE |
DECIMAL(p, s) | DECIMAL(p, s) |
STRING | VARCHAR(1073741824) |
VARCHAR(n) | VARCHAR(n) |
CHAR(n) | CHAR(n) |
JSON | VARCHAR(1073741824) |
BINARY | VARBINARY |
DATE | DATE |
DATETIME | DATETIME |
TIMESTAMP | DATETIME |
ARRAY | ARRAY |
MAP | MAP |
STRUCT | STRUCT |
TIMESTAMP 型は、StarRocks での型変換により精度が失われます。
CBO 統計の収集
現在のバージョンでは、MaxCompute catalog は MaxCompute テーブルの CBO 統計を自動的に収集できないため、オプティマイザが最適なクエリプランを生成できない可能性があります。そのため、MaxCompute テーブルの CBO 統計を手動でスキャンして StarRocks にインポートすることで、クエリを効果的に高速化できます。
MaxCompute クラスターに mc_table
という名前の MaxCompute テーブルがあるとします。ANALYZE TABLE を使用して CBO 統計を収集するための手動収集タスクを作成できます。
ANALYZE TABLE mc_table;
メタデータキャッシュの手動更新
デフォルトでは、StarRocks はクエリパフォーマンスを向上させるために MaxCompute のメタデータをキャッシュします。そのため、スキーマ変更や MaxCompute テーブルへのその他の更新を行った後、REFRESH EXTERNAL TABLE を使用してテーブルのメタデータを手動で更新し、StarRocks が最新のメタデータを迅速に取得できるようにします。
REFRESH EXTERNAL TABLE <table_name> [PARTITION ('partition_name', ...)]