MaxCompute は、OSS などの外部ストレージシステムに格納されているデータのクエリと分析に外部テーブルを使用することをサポートしています。 このメカニズムにより、外部データを MaxCompute 内部ストレージにインポートすることなく操作できるため、データ処理の柔軟性と利便性が向上します。
背景情報
分散データ処理の主要なエントリポイントである MaxCompute SQL は、EB レベルのオフラインデータを迅速に処理および保存できます。 ビッグデータビジネスの拡大に伴い、新しいデータ活用シナリオが次々と登場し、MaxCompute の計算フレームワークは進化を続けています。 当初は独自の内部データ形式向けに設計された MaxCompute の強力な計算機能は、現在、さまざまな外部データソースをサポートするように拡張されています。
現在、MaxCompute SQL は、主に内部 MaxCompute テーブルに格納されている構造化データを AliORC 形式で処理します。 MaxCompute テーブル外のさまざまなユーザーデータ (テキストやさまざまな非構造化データを含む) については、計算前にさまざまなツールを使用して MaxCompute テーブルにインポートする必要があります。 OSS を例にとると、MaxCompute で OSS のデータを処理するには、通常、次の 2 つの方法があります。
OSS SDK またはその他のツールを使用して OSS からデータをダウンロードし、MaxCompute Tunnel を使用してデータをテーブルにインポートします。
UDF を記述し、UDF 内で OSS SDK を直接呼び出して OSS データにアクセスします。
ただし、どちらの方法にも欠点があります。
最初の方法では、MaxCompute システム外の中間転送が必要です。 OSS データ量が非常に大きい場合は、同時実行性によってどのように高速化するかを検討する必要もあり、MaxCompute の大規模計算機能を十分に活用できません。
2 番目の方法では、通常、UDF ネットワークアクセス権限の申請が必要であり、開発者はジョブの同時実行性を制御し、データシャーディングの問題を自分で解決する必要があります。
そのため、MaxCompute はこれらの問題を解決するために外部テーブルを提供しています。 外部テーブル機能は、MaxCompute 内部テーブル以外のデータの処理機能を提供することを目的としています。 シンプルな DDL 文を使用して、MaxCompute 上に外部テーブルを作成し、MaxCompute テーブルと外部データソース間の関連付けを確立し、さまざまなデータへのアクセスおよび出力機能を提供できます。 作成された外部テーブルは、通常の MaxCompute テーブルと同様に使用でき (ほとんどのシナリオで)、MaxCompute SQL の強力な計算機能をフルに活用できます。
外部テーブル機能を使用する場合、外部テーブルのデータは MaxCompute にコピーおよび保存されないため、ストレージ料金は発生しません。
外部テーブルは全文検索をサポートしています。
Tunnel 機能と Tunnel SDK は現在、外部テーブル操作をサポートしていません。 Tunnel を使用して MaxCompute 内部テーブルに直接データをアップロードするか、OSS Python SDK を使用して OSS にアップロードしてから、MaxCompute で外部テーブルを使用してマッピングできます。
DataWorks と MaxCompute を使用して、外部テーブルを視覚的に作成、検索、クエリ、構成、処理、分析できます。 詳細については、「外部テーブル」をご参照ください。
外部テーブルは、MaxCompute 側で計算料金のみが発生し、MaxCompute 計算リソースの課金ルールに従います。 外部テーブルのデータは MaxCompute に保存されないため、MaxCompute のストレージ料金は発生しません。 ストレージ料金については、データソースストレージ側の課金ルールを参照してください。 パブリックネットワーク MaxCompute エンドポイントを使用して外部テーブルに接続する場合、パブリックネットワークトラフィック料金とダウンロード料金が発生します。 MaxCompute 料金の詳細については、「課金対象項目と課金方法」をご参照ください。
MaxCompute 外部テーブルを使用して外部データソースにアクセスする場合、外部データソースで計算、アクセス、データ転送などの料金が発生する場合があります。 具体的な課金方法は、外部データソースによって異なります。 対応する製品の説明書を参照してください。
外部テーブルの例
次の例を使用して、MaxCompute 外部テーブル機能を使用してさまざまな非構造化データを処理する方法を深く理解できます。
OSS および TableStore (OTS) の非構造化データにアクセスするには、「OSS 外部テーブル」および「OTS 非構造化データへのアクセス」をご参照ください。
カスタム RAM ロールを使用して OSS にアクセスするための MaxCompute 権限を付与する方法については、「STS モードの承認」をご参照ください。
MaxCompute の非構造化フレームワークは、INSERT メソッドを使用して MaxCompute データを OSS に直接出力することをサポートしています。 詳細については、「OSS へのデータの書き込み」をご参照ください。
さまざまなオープンソース形式のデータを処理するには、「OSS 外部テーブル」をご参照ください。
課金情報
外部テーブルのデータは外部システムに保存され、MaxCompute はデータウェアハウス側でストレージ料金を請求しません。
外部テーブルの計算では、サブスクリプション計算リソースまたはエラスティック予約 CU 計算リソースを使用する場合、外部テーブルの計算料金はプリペイド計算リソース料金に含まれます。
従量課金モデルを使用する場合、外部テーブルの計算料金は、現在、計算タスクが OSS および OTS にアクセスするときにスキャンされるデータ量のみをカウントします。 外部テーブルを介した HDFS、Hologres、RDS、HBase、および Lindorm へのアクセス、またはデータレイクハウス 2.0 の外部スキーマ方式を介したアクセスを含む、その他の外部テーブルアクセス方式は、現在、スキャンされるデータ量をカウントせず、計算料金は発生しません。
関連トピック
MaxCompute は、OSS、Hologres、RDS など、さまざまな外部テーブルをサポートしています。 詳細については、「参照」 (CSV/TSV 外部テーブル、Parquet 外部テーブル、ORC 外部テーブル、Paimon 外部テーブル、JSON 外部テーブル、AVRO 外部テーブル、Hudi 外部テーブル、Delta Lake 外部テーブル、RCFILE 外部テーブル、SEQUENCEFILE 外部テーブル)、「Tablestore 外部テーブル」、「Hologres 外部テーブル」、Apache Paimon 外部テーブル」をご参照ください。