MaxCompute の外部テーブルを使用すると、OSS などの外部ストレージシステムに格納されているデータをクエリし、分析できます。
仕組み
MaxCompute SQL は、エクサバイト規模のオフラインデータを処理します。ビッグデータのワークロードが拡大するにつれて、データはデータレイク、リアルタイムデータウェアハウス、NoSQL データベースなど、さまざまなシステムに存在するようになっています。
MaxCompute は、分散ストレージとコンピュートのアーキテクチャにより、データウェアハウスとデータレイクの両方のシナリオをサポートします。外部データを処理するために、次の 2 つのモードを利用できます:
モード 1:インポートしてから計算
データを MaxCompute にインポートします。構造化データは、SQL クエリまたはサードパーティエンジンからのアクセス用にテーブルとして保存されます。非構造化データも MaxCompute に保存して処理でき、I/O 効率を高められます。
モード 2:インプレースで計算
MaxCompute SQL をコンピュートエンジンとして使用し、データレイクなどの外部ストレージ内のデータを直接クエリします。
MaxCompute は強力なデータウェアハウスガバナンスを提供し、外部ストレージシステムと統合します。外部テーブルは、外部データにアクセスするための主要な仕組みです。
定義と仕組み
DDL ステートメントで、テーブル名、スキーマ、プロパティ、権限、ロケーション、および外部データにアクセスするためのプロトコルを定義します。これらのメタデータは MaxCompute に保存されます。
SQL クエリは、このメタデータを使用して外部データソースに接続し、メタデータの取得または更新を行い、データの読み取り、計算、書き込みを実行します。
ユースケース
外部テーブルを使用すると、外部データに対する直接計算、MaxCompute のガバナンス内での外部データソース管理、構造化または非構造化のレイクデータのバッチ処理、データ交換、リアルタイムデータウェアハウスのアーカイブが可能になります。
課金
ストレージ料金
ストレージ料金は発生しません。
外部テーブルのデータは外部システムに保持され、MaxCompute にコピーされません。MaxCompute は外部テーブルに対してストレージ料金を課金しません。ストレージコストについては、外部データソースの課金ルールをご確認ください。
コンピュート料金
コンピュート料金は、MaxCompute のコンピュートリソースの課金ルールに従います:サブスクリプションまたはリザーブド CU リソース:
外部テーブルのコンピュート料金は、前払いのコンピュートリソース料金に含まれます。
従量課金:
外部テーブルを参照する SQL ジョブ (OSS、OTS、Hologres、HBase、JDBC (RDS など)、HDFS、OSSHDFS、および Object Table ジョブを含む) が課金されます。
ネットワーク料金
MaxCompute のパブリックエンドポイント経由で外部テーブルに接続すると、パブリックネットワークのトラフィック料金とダウンロード料金が発生します。詳細については、課金対象項目と課金方法をご参照ください。
外部データソース料金
外部データソースでは、コンピュート料金、アクセス料金、またはデータ転送料金が課金される場合があります。該当サービスの課金ルールをご確認ください。
適用範囲
現在、Tunnel および Tunnel SDK は外部テーブルをサポートしていません。Tunnel を使用してデータを MaxCompute の内部テーブルにアップロードするか、OSS Python SDK を使用して OSS にアップロードし、MaxCompute の外部テーブルでデータをマッピングしてください。
外部テーブルは外部データソースへのデータ書き込みをサポートしますが、書き込み機能と整合性は外部システムの制約の影響を受けます:
Hologres: MaxCompute は JDBC 経由で Hologres のメタデータにアクセスするため、書き込みにおけるトランザクションの原子性を保証できません。MaxCompute SQL エンジンは Hologres Pangu データを直接読み取れますが、書き込むことはできません。分散された複数プロセスによる並列書き込みは複雑であるため、MaxCompute は Hologres に対する
INSERT OVERWRITEをサポートしていません。ジョブが失敗した場合、データが部分的に書き込まれる可能性があります。HDFS: HMS にも基づいています。HDFS への書き込みでは、低い確率で不整合が発生する可能性があります。
OSS: OSS 外部テーブルの書き込みでは、書き込み不完全となる確率を低減するために .odps メタデータファイルを使用します。エンジン互換性のために .odps メタデータファイルを無効化した場合も、低い確率で書き込みが不完全となる可能性があります。
INSERT OVERWRITEを使用して外部データを書き込む場合、MaxCompute は最初に新しいデータを書き込み、その後 DDL のコミットフェーズでテーブルまたはパーティション内の既存データを削除し、新しいデータに置き換えます。削除されたデータはロールバックできません。書き込み前にデータをバックアップし、書き込み完了後に結果を検証してください。問題が発生した場合は、フル書き込みを再実行してください。
関連ドキュメント
サポートされている外部テーブル
MaxCompute は、OSS、Hologres、RDS などのサービス向けの外部テーブルをサポートしています:
外部テーブルの例
次の例では、MaxCompute の外部テーブルを使用して非構造化データを処理する方法を示します:
OSS および TableStore (OTS) の非構造化データにアクセスします: OSS 外部テーブルおよび OTS の非構造化データにアクセスする。
外部テーブル経由で OSS にアクセスするための MaxCompute の RAM 認可をカスタマイズします: 外部データソースの認可。
INSERT を使用して MaxCompute のデータを OSS に書き込みます: OSS 外部テーブル。
オープンソース形式のデータを処理します: OSS 外部テーブル。
DataWorks と MaxCompute を併用して、外部テーブルを視覚的に作成、検索、クエリ、設定、処理、および分析します: 外部テーブル。