Tüm Ürünler
Search
Belge Merkezi

MaxCompute:Query Parquet data with Schemaless Query

Son Güncelleme:Oct 04, 2026

Bu konu, E-MapReduce Serverless Spark kümesi örneği üzerinden MaxCompute'te Schemaless Query özelliğinin nasıl kullanılacağını gösterir. Senaryoda, Spark SQL tarafından oluşturulan Parquet dosyaları okunur ve sonuçlar UNLOAD komutu kullanılarak Object Storage Service (OSS) hizmetine aktarılır.

Ön Koşullar

1. Adım: Serverless Spark kullanarak Parquet verisi oluşturma

  1. E-MapReduce konsolunda oturum açın. Sol gezinme bölmesinde EMR Serverless > Spark seçeneğini belirleyin.

  2. Spark sayfasında çalışma alanınızın adına tıklayın. EMR Serverless Spark sayfasında sol gezinme bölmesinden Data Development seçeneğine tıklayın.

  3. Bir Spark SQL işi oluşturun. Parquet tablosu oluşturmak ve bu tabloyu verilerle doldurmak için aşağıdaki SQL komutlarını girin. Ardından Run düğmesine tıklayın.

    Önemli

    Aşağıdaki komutları çalıştırmadan önce sayfanın sağ üst köşesinde seçili olan veri dizini ve veritabanının OSS paket yolunuzla eşleştiğinden emin olun.

    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. Çalıştırma işlemi başarılı olduktan sonra oluşturulan example_table01 tablosunu Data Lake Formation konsolundaki Metadata sayfasında görüntüleyebilirsiniz. Metadata sayfasında Tables sekmesini seçerek oluşturduğunuz example_table01 tablosunu görebilirsiniz. Tablo Parquet formatındadır.

    Parquet dosyalarını OSS paketinizde de görüntüleyebilirsiniz. example_table01/ dizininde bir _SUCCESS işaretçi dosyası ve iki adet .snappy.parquet veri dosyası bulunur. Bu durum, Parquet verilerinin başarıyla yazıldığını gösterir.

2. Adım: Schemaless Query kullanarak verileri okuma

MaxCompute'te Parquet dosyalarının okunması hakkında daha fazla bilgi edinmek için bkz. Schemaless Query.

Spark, bir Parquet tablosuna veri yazdığında _SUCCESS adlı bir işaretçi dosyası oluşturur. MaxCompute'in bu dosyayı veri dosyası olarak okumasını ve hata oluşmasını önlemek için file_pattern_blacklist parametresini kullanarak _SUCCESS dosyasını engelleme listesine eklemelisiniz.

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

Aşağıdaki sonuç döndürülür:

+------------+------------+------------+
| 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         |
+------------+------------+------------+

3. Adım: SQL kullanarak hesaplama yapma

Yaşı 30'dan büyük olan kişilerin sayısını sorgulayın.

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;

Aşağıdaki sonuç döndürülür:

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

4. Adım: Sonucu OSS'e aktarma

MaxCompute kullanarak verileri OSS gibi harici depolama alanlarına aktarabilir ve diğer hesaplama motorlarının kullanımına sunabilirsiniz. Ayrıntılı bilgi için bkz. UNLOAD.

  1. 3. Adımdaki hesaplama sonucunu Parquet formatında OSS'e aktarmak için MaxCompute'te aşağıdaki komutu çalıştırın.

    Aşağıdaki kodu çalıştırmadan önce oss-mc-test OSS paketinde unload_schemaless dizinini oluşturmanız gerekir.

    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. UNLOAD işleminin başarılı olduğunu doğrulamak için OSS konsolunda oturum açın.