すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:非構造化データのクエリ

最終更新日:Jun 23, 2026

MaxCompute V2.0 では、外部テーブルを使用して Object Storage Service (OSS) や Tablestore などのストレージサービスにアクセスできます。MaxCompute Studio には、非構造化データのクエリに役立つコードテンプレートが用意されています。このトピックでは、MaxCompute Studio を使用して非構造化データをクエリする方法について説明します。

前提条件

以下の前提条件を満たしている必要があります。

StorageHandler、Extractor、または Outputer プログラムの作成

  1. [Project] ペインで、モジュールのソースコードディレクトリ (つまり、src > main > java) を右クリックし、新規 > MaxCompute Java を選択します。

  2. [名前] を入力し、タイプとして ExtractorStorageHandler、または Outputer を選択して、Enter キーを押します。

    • [名前]:MaxCompute Java クラスの名前。Package が作成されていない場合は、packagename.classname と入力して Package を自動的に作成します。

    • タイプとして ExtractorStorageHandler、または Outputer を選択します。

      説明

      ビジネス要件に応じて、Extractor、StorageHandler、または Outputer を選択できます。

      • Extractor:非構造化データを読み取るロジックをカスタム構成できるクラス。

      • StorageHandler:Extractor または Outputer プログラムで定義されたロジックを実装するために使用されるクラス。

      • Outputer:非構造化データを書き込むロジックをカスタム構成できるクラス。

  3. クラスが作成されたら、コードエディタで Java プログラムを開発します。Java テンプレートにはフレームワークコードが自動的に入力されます。要件に基づいてロジックコードをコンパイルするだけで済みます。

Extractor または Outputer プログラムのデバッグ

examples ディレクトリにあるサンプル単体テストを参照して、テストケースを作成できます。

import ...
public class ExtractorTest {
    private String ambulanceFullSchema =
            "vehicle:bigint;id:bigint;patient:bigint;calls:bigint;latitude:d...";
    private String speechDataFullSchema = "sentence_snr:double;id:string";
    @Test
    public void testTextExtractor() throws Exception {
        /**
         * Equivalent to the following SQL:
         *    CREATE EXTERNAL TABLE  ambulance_data_external
         *    ( vehicle bigint, id bigint, patient bigint, calls bigint,
         *      Latitude double, Longitude double, time string, direction string)
         *    STORED BY 'com.aliyun.odps.udf.example.text.TextStorageHandler'
         *    LOCATION 'oss://.../data/ambulance_csv/'
         *    USING 'jar_file_name.jar';
         *
         *    SELECT * FROM ambulance_data_external;
         */
        Column[] externalTableSchema = UnstructuredUtils.parseSchemaString(
                ambulanceFullSchema);
    }
}

プログラムのパッケージ化とアップロード

プログラムをデバッグした後、プログラムを JAR パッケージに圧縮し、リソースとして MaxCompute サーバーにアップロードします。詳細については、「Java プログラムのパッケージ化、アップロード、および MaxCompute UDF の作成」をご参照ください。

非構造化データのクエリ

  1. [プロジェクト] ツールウィンドウで、[スクリプト]を右クリックし、[新規] > [MaxCompute SQL スクリプト]を選択します。

  2. [スクリプト名] フィールドにスクリプト名を入力します。[MaxCompute プロジェクト] ドロップダウンリストから、ターゲットプロジェクトを選択します。次に、[OK] をクリックします。

  3. コードエディタで、外部テーブルを作成するための SQL ステートメントを入力し、运行 アイコンをクリックします。

    --名前:osd
    --作成者:liuyi
    --作成時間:2017-03-07 17:06
    set odps.service.mode=off;
    CREATE EXTERNAL TABLE IF NOT EXISTS myun_src_external
    (
    vehicleId bigint,
    recordId bigint,
    patientId bigint,
    calls bigint,
    locationLatitute double,
    locationLongtitue double,
    recordTime string,
    direction string
    )
    STORED BY 'myun.MyStorageHandler'
    WITH SERDEPROPERTIES('delimiter'='|')
    LOCATION 'oss://oss-cn-hangzhou-zmf.aliyuncs.com/074799/demo/SampleData/CSV/src/'
    USING 'myun.jar';
  4. MaxCompute SQL スクリプトを作成し、次のクエリ文を入力してから、运行 アイコンをクリックしてデータをクエリします。

    set odps.task.major.version=unstructured_data;
    select * from myun_src_external where patientId > 25;

参考資料

例:カスタム Extractor を使用した OSS 外部テーブルの作成