適用シナリオ
プラン |
適用シナリオ |
|---|---|
| ODPS Catalog | クイックプロブ検索、テーブル作成不要、メタデータの自動同期 |
| ODPS外部テーブル + Tunnel API | 公開ネットワークアクセス、互換性優先 |
| ODPS外部テーブル + Storage API | VPC内での高性能分析、HTAP混合負荷 |
前提条件
このチュートリアルでは、MaxCompute(ODPS)に標準TPC-Hのlineitemテーブルが既に存在することを前提とします。その構造とサンプルデータは以下のとおりです:
+------------+-----------+-----------+--------------+------------+------------------+------------+-------+--------------+--------------+------------+------------+-------------+--------------------+------------+----------------------------------+
| l_orderkey | l_partkey | l_suppkey | l_linenumber | l_quantity | l_extendedprice | l_discount | l_tax | l_returnflag | l_linestatus | l_shipdate | l_commitdate | l_receiptdate | l_shipinstruct | l_shipmode | l_comment |
+------------+-----------+-----------+--------------+------------+------------------+------------+-------+--------------+--------------+------------+------------+-------------+--------------------+------------+----------------------------------+
| 1 | 1551894 | 76910 | 1 | 17.00 | 33078.94 | 0.04 | 0.02 | N | O | 1996-03-13 | 1996-02-12 | 1996-03-22 | DELIVER IN PERSON | TRUCK | egular courts above the |
| 1 | 673091 | 73092 | 2 | 36.00 | 38306.16 | 0.09 | 0.06 | N | O | 1996-04-12 | 1996-02-28 | 1996-04-20 | TAKE BACK RETURN | MAIL | ly final dependencies: slyly bold|
| 1 | 636998 | 36999 | 3 | 8.00 | 15479.68 | 0.10 | 0.02 | N | O | 1996-01-29 | 1996-03-05 | 1996-01-31 | TAKE BACK RETURN | REG AIR | riously. regular, express dep |
| 1 | 21315 | 46316 | 4 | 28.00 | 34616.68 | 0.09 | 0.06 | N | O | 1996-04-21 | 1996-03-30 | 1996-05-16 | NONE | AIR | lites. fluffily even de |
| 1 | 240267 | 15274 | 5 | 24.00 | 28974.00 | 0.10 | 0.04 | N | O | 1996-03-30 | 1996-03-14 | 1996-04-01 | NONE | FOB | pending foxes. slyly re |
+------------+-----------+-----------+--------------+------------+------------------+------------+-------+--------------+--------------+------------+------------+-------------+--------------------+------------+----------------------------------+
環境の準備
開始する前に、以下の前提条件を満たしていることを確認してください:
- OceanBaseバージョンがV4.3.5 BP2以上であること(ODPS Catalogをサポート)。
- JDK 8または11をデプロイし、Javaサポートを有効にしていること(
ob_enable_java_env = true)。 - OceanBase JAVA SDK環境のデプロイが完了していること。具体的なデプロイ手順については、OceanBaseデータベースJAVA SDK環境のデプロイを参照してください。
方法1:ODPS Catalogを使用したデータのクイックプローブ(推奨)
OceanBaseはV4.3.5 BP2からODPS Catalogをサポートしており、MaxComputeテーブルに直接アクセスできます。外部テーブルを手動で作成する必要はありません。
ODPS Catalogの作成
CREATE EXTERNAL CATALOG odps_lineitem_test
PROPERTIES (
TYPE = 'ODPS',
ACCESSID = 'XXXXXXXXXXXX',
ACCESSKEY = 'xxxxxxxxxxxxxx',
ENDPOINT = 'https://service.cn-hangzhou.maxcompute.aliyun.com/api',
TUNNEL_ENDPOINT = '',
PROJECT_NAME = 'bigdata_public_dataset'
);
パラメータ説明:
- TUNNEL_ENDPOINTは空欄のままにしてもかまいません。システムが自動的に推定します。
- この方法はデフォルトでTunnel APIを使用し、パブリックネットワーク環境、またはOBServerとODPSが異なるVPCに配置されているシナリオに適しています。
bigdata_public_dataset:詳細なデータセットのアドレスについては、公開データセットの概要を参照してください。
データのクエリ検証
SET CATALOG odps_lineitem_test;
USE odps_lineitem_test.test_db;
SELECT * FROM lineitem LIMIT 5;
期待される結果:ソーステーブルと完全に一致する5行のデータが返されます。
利点:
- テーブル構造とパーティション情報が自動的に同期されます。
- 列型を定義する必要がないため、手動マッピングによる誤りを回避できます。
- データのクイックプローブとメタデータの検証に適しています。
方法2:ODPS外部テーブルを作成する(きめ細かい制御が必要な場合)
列マッピングを明示的に制御したり、Storage APIを有効にしたり、古いバージョンとの互換性を確保したりする必要がある場合は、ODPS外部テーブルを作成できます。
OceanBaseのデータベースに切り替える
まず方法1を試した場合は、その後OceanBaseのデータベースに切り戻す必要があります。
USE internal.test;
外部テーブルの作成
CREATE EXTERNAL TABLE external_lineitem (
l_orderkey BIGINT,
l_partkey BIGINT,
l_suppkey BIGINT,
l_linenumber BIGINT,
l_quantity DECIMAL(15,2),
l_extendedprice DECIMAL(15,2),
l_discount DECIMAL(15,2),
l_tax DECIMAL(15,2),
l_returnflag CHAR(1),
l_linestatus CHAR(1),
l_shipdate DATE,
l_commitdate DATE,
l_receiptdate DATE,
l_shipinstruct CHAR(25),
l_shipmode CHAR(10),
l_comment VARCHAR(44)
)
PROPERTIES (
TYPE = 'ODPS',
ACCESSID = 'XXXXXXXXXXXX',
ACCESSKEY = 'xxxxxxxxxxxxxx',
ENDPOINT = 'https://service.cn-hangzhou.maxcompute.aliyun.com/api',
TUNNEL_ENDPOINT = '',
PROJECT_NAME = 'bigdata_public_dataset',
SCHEMA_NAME = 'tpch_10g',
TABLE_NAME = 'lineitem',
QUOTA_NAME = '',
COMPRESSION_CODE = 'zstd'
);
重要な設定の説明:
COMPRESSION_CODE = 'zstd':圧縮を有効にしてネットワーク転送効率を向上させます。- デフォルトでは
Tunnel APIが使用され、一般的なネットワーク環境に適しています。 - 列定義はMaxComputeテーブルと一致させる必要があります。
bigdata_public_dataset:詳細なデータセットのアドレスについては、公開データセットの概要を参照してください。
検証と高度な操作
外部テーブルの読み取りを検証する
SELECT * FROM external_lineitem LIMIT 5;
期待される出力:ソーステーブルと完全に一致する5行のデータが返されます。
(オプション)内部テーブルにインポートして分析を高速化する
頻繁なクエリや複雑な集計が必要な場合は、データをOceanBaseの内部テーブルにインポートできます:
-- 内部テーブルの作成
CREATE TABLE ob_lineitem LIKE external_lineitem;
-- バッチインポート
INSERT INTO ob_lineitem SELECT * FROM external_lineitem;
-- 検証
SELECT COUNT(*) FROM ob_lineitem;
(オプション)データをMaxComputeにエクスポートする
INSERT OVERWRITE ステートメントを使用して、OceanBaseのデータをMaxComputeに書き戻します:
-- ターゲット外部テーブルlineitem_targetが既に作成されていることを前提とします
INSERT OVERWRITE lineitem_target
SELECT * FROM ob_lineitem
WHERE l_shipdate >= '1996-01-01';
制限事項:
- ターゲットテーブルとソーステーブルの列数、順序、型は完全に一致している必要があります。
- INSERT INTO / OVERWRITE ... SELECT構文のみサポートされています。
補足:APIモードの選択ガイド
OceanBaseは2種類のMaxComputeアクセスモードをサポートしており、デプロイ環境に応じて選択する必要があります。
シナリオ1:VPC内での高性能アクセス(推奨)
適用条件:OceanBaseがAlibaba Cloud ECSにデプロイされており、MaxComputeと同じリージョンのVPCを使用している場合。
CREATE EXTERNAL TABLE lineitem1 ( /* フィールドは上記と同じ */ )
PROPERTIES (
TYPE = 'ODPS',
ACCESSID = 'XXXXXXXXXXXX',
ACCESSKEY = 'xxxxxxxxxxxxxx',
ENDPOINT = 'https://service.cn-hangzhou-vpc.maxcompute.aliyun-inc.com/api',
PROJECT_NAME = 'test_obqa',
TABLE_NAME = 'lineitem1',
QUOTA_NAME = 'pay-as-you-go', -- 定額制である必要があります
API_MODE = 'storage_api', -- Storage APIを有効化
SPLIT = 'byte', -- バイト単位でシャーディングします(行サイズが不均一な場合は推奨)
COMPRESSION_CODE = 'zstd'
);
利点:
- 述語プッシュダウンと列プルダウンをサポートします。
- 微小なレイテンシと高スループットを実現します。
- 自動並列シャーディングを行います。
シナリオ2:パブリックネットワークまたは汎用環境(互換性優先)
CREATE EXTERNAL TABLE lineitem ( /* フィールドは上記と同じ */ )
PROPERTIES (
TYPE = 'ODPS',
ACCESSID = 'XXXXXXXXXXXX',
ACCESSKEY = 'xxxxxxxxxxxxxx',
ENDPOINT = 'https://service.cn-hangzhou.maxcompute.aliyun.com/api',
PROJECT_NAME = 'bigdata_public_dataset',
SCHEMA_NAME = 'tpch_10g',
TABLE_NAME = 'lineitem',
COMPRESSION_CODE = 'zstd'
-- デフォルトではTunnel APIを使用します
);
利点:
- VPCネットワークの設定が不要です。
- すべてのデプロイ環境と互換性があります。
- 設定が簡単で、すぐに始められます。
詳細については、ODPS外部テーブルを参照してください。