MaxCompute では、外部テーブルを使用して、OSS などの外部ストレージシステムに保存されているデータに対してクエリや分析を実行できます。
機能紹介
MaxCompute SQL は、分散データ処理の主要なツールであり、エクサバイト級のオフラインデータを迅速に処理できます。ビッグデータサービスの拡大に伴い、新しいデータシナリオが出現し続けており、大量のデータがデータレイク、リアルタイムデータウェアハウス、NoSQL データベース、またはその他のシステムに集中しています。
MaxCompute は、データウェアハウスとデータレイクの両方のシナリオに適しています。その基盤となるアーキテクチャは、ビッグデータ向けの分散ストレージと分散コンピューティングを使用しています。これにより、データレイクシナリオで必要とされる容量、コンピューティングスループット、マルチエンジン機能、およびオープン性が提供されます。したがって、外部データをコンピューティングするための主要なパターンは 2 つ存在します。
パターン 1:インポートしてからコンピューティング
データを MaxCompute にインポートできます。テーブル形式の構造化データは、SQL を使用してコンピューティングしたり、サードパーティのエンジンに公開したりできます。非構造化データも MaxCompute に保存してコンピューティングできます。このアプローチにより、より高いデータ読み書き効率と、MaxCompute 内でのより統合されたエクスペリエンスが提供されます。
パターン 2:外部データで直接コンピューティング
データレイクに基づいたより柔軟なデータアーキテクチャを構築するために、MaxCompute SQL は、データウェアハウス外のデータを処理するためのコンピュートエンジンとしても機能します。
MaxCompute は、厳密に管理されたデータウェアハウスのフレームワーク内でコンピューティング機能を提供し、外部のデータストレージシステムとその管理フレームワークに接続することもできます。外部データにアクセスする最も直接的な方法は、外部テーブルを使用することです。
定義と原則
データ定義言語 (DDL) 文を使用して、外部データにアクセスするためのテーブル名、スキーマ、プロパティ、権限、場所、およびプロトコルを定義できます。この情報は MaxCompute のメタデータに記録されます。
その後、SQL はこのメタデータを使用して外部データソースに接続し、各外部テーブルのフォーマットに適したメソッドを適用します。このプロセスには、外部データのメタデータの取得または更新、およびデータの読み取り、コンピューティング、書き込みの有効化が含まれます。
主なユースケース
外部テーブルを使用すると、MaxCompute の外部にあるデータを直接コンピューティングできます。また、MaxCompute の管理範囲内で外部データソースを管理し、定義された管理システムの下でデータを使用することもできます。例としては、データレイク内の構造化データまたは非構造化データのバッチ処理、データ共有と交換、リアルタイムデータウェアハウスからデータウェアハウスモデルへのデータのアーカイブなどがあります。
課金情報
ストレージコスト
結論:ストレージコストは発生しません。
理由:外部テーブルを使用する場合、データはコピーされて MaxCompute に保存されるわけではありません。データは外部システムに残ります。MaxCompute は、データウェアハウスのストレージコストを請求しません。ストレージコストについては、データソースの課金ルールをご参照ください。
コンピューティングコスト
コンピューティングコストは、MaxCompute 計算リソースの課金ルールに従います。コストは課金方法によって異なります。サブスクリプションまたは弾性予約コンピューティングユニット (CU) の場合:
外部テーブルのコンピューティングコストは、計算リソースの前払い料金に含まれます。
従量課金方法の場合:
課金対象部分:現在、課金はコンピューティングタスクが OSS および Tablestore にアクセスする際にスキャンされるデータ量にのみ基づいています。
非課金対象部分:HDFS、Hologres、RDS、HBase、Lindorm などのデータソースへのアクセスは、現在課金対象外です。これは、外部テーブルまたは Data Lakehouse 2.0 の外部スキーマメソッドを介してアクセスする場合にも適用されます。スキャンされたデータ量は追跡されず、コンピューティングコストは発生しません。
ネットワークコスト
パブリックな MaxCompute エンドポイントを使用して外部テーブルに接続する場合、インターネットトラフィックとダウンロード料金が発生します。MaxCompute の料金の詳細については、「課金項目と課金方法」をご参照ください。
外部データソースのコストに関する注意
MaxCompute 外部テーブルを使用して外部データソースにアクセスすると、データソース側でコンピューティング、アクセス、データ転送のコストが発生する場合があります。具体的な料金は、外部データソースの課金方法によって異なります。詳細については、対応するプロダクトのドキュメントをご参照ください。
適用範囲
Tunnel 機能と Tunnel SDK は、外部テーブルでの操作をサポートしていません。Tunnel を使用して、データを MaxCompute の内部テーブルに直接アップロードできます。また、OSS Python SDK を使用してデータを OSS にアップロードし、MaxCompute の外部テーブルを使用してマッピングを作成することもできます。
MaxCompute 外部テーブルは、データソースへのデータ書き込みをサポートしています。ただし、書き込み機能と一貫性は外部システムによって制限されます。例:
Hologres:MaxCompute は Java Database Connectivity (JDBC) プロトコルに基づいて Hologres のメタデータにアクセスするため、書き込みトランザクション制御の原子性を保証できません。MaxCompute SQL エンジンは、Hologres の基盤となる Pangu データを読み取ることしかできず、書き込むことはできません。MaxCompute の分散コンピューティング環境における複数プロセスによる並列書き込みの複雑さのため、MaxCompute から Hologres へのデータ書き込みは
INSERT OVERWRITEセマンティクスをサポートしていません。ジョブが失敗した場合、データの一部しか書き込まれない可能性があります。HDFS:同様に、Hive Metastore (HMS) に基づいている場合、HDFS への書き込みには、わずかながら不整合が発生する可能性があります。
OSS:OSS 外部テーブルに書き込む際、.odps メタデータファイルを使用して制御することで、不完全な書き込みの可能性を低減できます。ただし、エンジン互換性のためにこの制御メカニズムを放棄した場合、同様に不完全な書き込みが発生するわずかな可能性があります。
INSERT OVERWRITEセマンティクスを使用して MaxCompute から外部データソースにデータを書き込む場合、まず新しいデータが書き込まれます。次に、DDL コミットフェーズで、テーブルまたはパーティション内の既存のデータが削除され、新しいデータに置き換えられます。MaxCompute は削除されたデータをロールバックまたは回復することはできません。事前にデータをバックアップしておく必要があります。書き込み操作後、データ検証を実行してください。問題が見つかった場合は、完全な書き込み操作を再度実行できます。
関連トピック
サポートされる外部テーブル
MaxCompute は、OSS、Hologres、RDS など、さまざまな外部テーブルをサポートしています。
外部テーブルの例
以下の例を使用して、MaxCompute 外部テーブルを使用してさまざまな種類の非構造化データを処理する方法を学びます。
OSS および Tablestore (OTS) の非構造化データにアクセスするには、「OSS 外部テーブル」および「OTS の非構造化データへのアクセス」をご参照ください。
外部テーブル用にカスタム RAM ロールを使用して MaxCompute に OSS へのアクセス権限を付与するには、「STS モードの権限付与」をご参照ください。
MaxCompute の非構造化データフレームワークは、INSERT 文を使用して MaxCompute から OSS にデータを直接書き込むことをサポートしています。詳細については、「OSS へのデータ書き込み」をご参照ください。
さまざまなオープンソースフォーマットのデータを処理するには、「OSS 外部テーブル」をご参照ください。
DataWorks を MaxCompute と組み合わせて使用すると、外部テーブルを視覚的に作成、検索、クエリ、設定、処理、分析できます。詳細については、「外部テーブル」をご参照ください。