Tous les produits
Search
Centre de documentation

MaxCompute:Query Parquet data with Schemaless Query

Dernière mise à jour :Aug 10, 2026

Cette rubrique utilise un cluster E-MapReduce Serverless Spark comme exemple pour montrer comment utiliser Schemaless Query dans MaxCompute afin de lire des fichiers Parquet générés par Spark SQL, puis exporter les résultats vers Object Storage Service (OSS) à l'aide de la commande UNLOAD.

Prérequis

  • Vous disposez d'un espace de travail EMR Serverless Spark.

    Cette rubrique utilise la région Chine (Hangzhou) comme exemple. Supposons que l'espace de travail est nommé schemaless_test et que le compartiment OSS est nommé oss-mc-test.

  • Vous disposez d'un projet MaxCompute.

Étape 1 : Générer des données Parquet à l'aide de Serverless Spark

  1. Connectez-vous à la console E-MapReduce. Dans le volet de navigation de gauche, sélectionnez EMR Serverless > Spark.

  2. Sur la page Spark, cliquez sur le nom de votre espace de travail. Sur la page EMR Serverless Spark, cliquez sur Data Development dans le volet de navigation de gauche.

  3. Créez une tâche Spark SQL, saisissez les commandes SQL suivantes pour créer une table Parquet et la remplir avec des données, puis cliquez sur Run.

    Important

    Avant d'exécuter les commandes ci-dessous, assurez-vous que le répertoire de données et la base de données sélectionnés dans le coin supérieur droit de la page sont associés au chemin de votre compartiment OSS.

    CREATE TABLE example_table01 (
        id INT,
        name STRING,
        age INT
    ) USING PARQUET;
    INSERT INTO example_table01 VALUES
    (1, 'Alice', 30),
    (2, 'Bob', 25),
    (3, 'Charlie', 35),
    (4, 'David', 40),
    (5, 'Eve', 32),
    (6, 'Frank', 28),
    (7, 'Grace', 33),
    (8, 'Hannah', 29),
    (9, 'Ian', 36),
    (10, 'Julia', 31);
    SELECT * FROM example_table01;
  4. Une fois l'exécution terminée avec succès, consultez la table example_table01 générée sur la page Metadata de la console Data Lake Formation. Sur la page Metadata, sélectionnez l'onglet Tables pour afficher la table example_table01 créée. La table est au format Parquet.

    Vous pouvez également visualiser les fichiers Parquet dans votre compartiment OSS. Dans le répertoire example_table01/, vous trouverez un fichier marqueur _SUCCESS et deux fichiers de données .snappy.parquet. Cela indique que les données Parquet ont été écrites avec succès.

Étape 2 : Lire les données à l'aide de Schemaless Query

Pour en savoir plus sur la lecture des fichiers Parquet dans MaxCompute, consultez la rubrique Schemaless Query.

Lorsque Spark écrit des données dans une table Parquet, il génère un fichier marqueur nommé _SUCCESS. Utilisez le paramètre file_pattern_blacklist pour ajouter le fichier _SUCCESS à la liste de blocage. Cela empêche MaxCompute de le lire comme un fichier de données, ce qui provoquerait une erreur.

SELECT * FROM 
LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/oss-mc-test/example_table01/' 
(
  'file_format'='parquet',
  'file_pattern_blacklist'='.*_SUCCESS.*'
);

Le résultat suivant s'affiche :

+------------+------------+------------+
| id         | name       | age        |
+------------+------------+------------+
| 1          | Alice      | 30         |
| 2          | Bob        | 25         |
| 3          | Charlie    | 35         |
| 4          | David      | 40         |
| 5          | Eve        | 32         |
| 6          | Frank      | 28         |
| 7          | Grace      | 33         |
| 8          | Hannah     | 29         |
| 9          | Ian        | 36         |
| 10         | Julia      | 31         |
+------------+------------+------------+

Étape 3 : Effectuer des calculs à l'aide de SQL

Interrogez le nombre de personnes âgées de plus de 30 ans.

SELECT COUNT(*) FROM 
LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/oss-mc-test/example_table01/' 
(
  'file_format'='parquet',
  'file_pattern_blacklist'='.*_SUCCESS.*'
)
WHERE age>30;

Le résultat suivant s'affiche :

+------------+
| _c0        |
+------------+
| 6          |
+------------+

Étape 4 : Exporter le résultat vers OSS

Utilisez MaxCompute pour exporter des données vers un stockage externe, tel qu'OSS, afin de les rendre disponibles pour d'autres moteurs de calcul. Pour plus de détails, consultez la rubrique UNLOAD.

  1. Exécutez la commande suivante dans MaxCompute pour exporter le résultat du calcul de l'étape 3 vers OSS au format Parquet.

    Avant d'exécuter le code ci-dessous, créez le répertoire unload_schemaless dans le compartiment OSS oss-mc-test.

    UNLOAD FROM  
    (
      SELECT COUNT(*) FROM 
      LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/oss-mc-test/example_table01/' 
      ('file_format'='parquet','file_pattern_blacklist'='.*_SUCCESS.*')
      WHERE age>30
    )
    INTO
    LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/oss-mc-test/unload_schemaless/'
    ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' 
    WITH SERDEPROPERTIES ('odps.properties.rolearn'='acs:ram::<uid>:role/AliyunODPSDefaultRole') 
    STORED AS PARQUET 
    PROPERTIES('mcfed.parquet.compression'='SNAPPY')
    ;
  2. Connectez-vous à la console OSS pour vérifier que l'opération UNLOAD a réussi.