Tous les produits
Search
Centre de documentation

MaxCompute:Interroger des données non structurées

Dernière mise à jour :Aug 10, 2026

MaxCompute V2.0 vous permet d'utiliser des tables externes pour accéder à des services de stockage tels qu'Object Storage Service (OSS) et Tablestore. MaxCompute Studio fournit des modèles de code pour vous aider à interroger des données non structurées. Cette rubrique décrit comment utiliser MaxCompute Studio pour interroger des données non structurées.

Prérequis

Assurez-vous que les conditions suivantes sont remplies :

Écrire un programme StorageHandler, Extractor ou Outputer

  1. Dans le volet Project, cliquez avec le bouton droit sur le répertoire source du module (c'est-à-dire src > main > java), puis sélectionnez New > MaxCompute Java.

  2. Saisissez un Name, sélectionnez Extractor, StorageHandler ou Outputer comme type, puis appuyez sur Entrée.

    • Name : nom de la classe Java MaxCompute. Si aucun package n'a été créé, saisissez packagename.classname pour créer automatiquement un package.

    • Sélectionnez Extractor, StorageHandler ou Outputer comme type.

      Remarque

      Vous pouvez sélectionner Extractor, StorageHandler ou Outputer en fonction de vos besoins métier.

      • Extractor : classe permettant de configurer une logique personnalisée pour la lecture de données non structurées.

      • StorageHandler : classe utilisée pour mettre en œuvre la logique définie dans le programme Extractor ou Outputer.

      • Outputer : classe permettant de configurer une logique personnalisée pour l'écriture de données non structurées.

  3. Une fois la classe créée, développez un programme Java dans l'éditeur de code. Le modèle Java est automatiquement rempli avec le code du framework. Il vous suffit de compiler le code logique selon vos besoins.

Déboguer le programme Extractor ou Outputer

Vous pouvez vous inspirer des exemples de tests unitaires présents dans le répertoire examples pour écrire des cas de test.

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);
    }
}

Empaqueter et charger le programme

Après avoir débogué le programme, compressez-le dans un package JAR et chargez ce package sur le serveur MaxCompute en tant que ressource. Pour plus d'informations, reportez-vous à la section Empaqueter un programme Java, charger le package et créer une UDF MaxCompute.

Interroger des données non structurées

  1. Dans la fenêtre d'outils Project, cliquez avec le bouton droit sur scripts et sélectionnez New > MaxCompute SQL Script.

  2. Dans le champ Script Name, saisissez un nom de script. Dans la liste déroulante MaxCompute Project, sélectionnez le projet cible. Puis, cliquez sur OK.

  3. Dans l'éditeur de code, saisissez l'instruction SQL utilisée pour créer une table externe, puis cliquez sur l'icône 运行.

    --name:osd
    --author:liuyi
    --create time: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. Créez un script SQL MaxCompute, saisissez l'instruction d'interrogation suivante, puis cliquez sur l'icône 运行 pour interroger les données.

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

Références

Exemple : Créer une table externe OSS à l'aide d'un extracteur personnalisé