All Products
Search
Document Center

MaxCompute:Membaca data Parquet di Data Lake menggunakan Schemaless Query

Last Updated:Jun 21, 2026

Artikel ini menggunakan klaster Serverless Spark E-MapReduce sebagai contoh untuk menjelaskan cara membaca file Parquet yang dihasilkan oleh Spark SQL di MaxCompute dengan metode Schemaless Query, lalu mengirimkan hasil komputasi kembali ke OSS melalui perintah UNLOAD setelah proses selesai.

Prasyarat

Langkah 1: Menghasilkan data Parquet berbasis Serverless Spark

  1. Login ke Konsol E-MapReduce. Di panel navigasi kiri, pilih EMR Serverless > Spark.

  2. Pada halaman Spark, klik nama workspace yang telah dibuat. Setelah masuk ke halaman EMR Serverless Spark, klik Data Development di panel kiri.

  3. Buat tugas Spark SQL baru, masukkan perintah SQL berikut untuk membuat tabel dalam format Parquet dan menulis data, lalu klik 运行.

    Penting

    Sebelum menjalankan perintah berikut, pastikan direktori data dan database yang dipilih di pojok kanan atas halaman sudah terkait dengan path bucket OSS yang telah dibuat.

    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. Setelah berhasil dijalankan, Anda dapat melihat tabel example_table01 yang telah dihasilkan pada halaman 元数据管理 di Konsol DLF Data Lake Formation. Pada halaman Manajemen Metadata, pilih tab Data Table untuk melihat tabel example_table01 yang telah dibuat dengan format Parquet.

    Anda juga dapat melihat file Parquet yang dihasilkan di direktori bucket OSS. Di direktori example_table01/ di OSS, Anda akan melihat file penanda _SUCCESS dan dua file data .snappy.parquet, yang menunjukkan bahwa data Parquet telah berhasil ditulis.

Langkah 2: Membaca data melalui Schemaless Query

Untuk membaca file Parquet di MaxCompute, lihat detailnya di Feature: Schemaless Query.

Karena saat menulis tabel Parquet akan dihasilkan file bernama _SUCCESS, Anda perlu menggunakan parameter file_pattern_blacklist untuk menambahkan file _SUCCESS ke dalam blacklist agar file tersebut tidak dibaca. Jika parameter ini tidak ditambahkan, sistem akan mengembalikan error.

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

Hasil yang dikembalikan sebagai berikut:

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

Langkah 3: Melakukan komputasi menggunakan SQL

Menanyakan jumlah total orang yang berusia lebih dari 30 tahun.

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;

Hasil yang dikembalikan sebagai berikut:

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

Langkah 4: Mengirimkan hasil komputasi kembali ke OSS melalui perintah UNLOAD

MaxCompute mendukung ekspor data dari proyek MaxCompute ke penyimpanan eksternal OSS agar dapat digunakan oleh engine komputasi lainnya. Untuk penggunaan spesifik, lihat UNLOAD.

  1. Jalankan perintah berikut di MaxCompute untuk mengekspor hasil komputasi dari Langkah 3: Melakukan komputasi menggunakan SQL ke OSS dalam format Parquet.

    Sebelum menjalankan kode berikut, Anda harus membuat direktori unload_schemaless di dalam bucket 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. Login ke Konsol OSS dan periksa apakah proses UNLOAD berhasil.