All Products
Search
Document Center

MaxCompute:Definisi tabel objek

Last Updated:Aug 29, 2026

MaxCompute memperkenalkan fitur tabel objek, yang memungkinkan mesin komputasi gudang data mengakses data tidak terstruktur dan metadata-nya di penyimpanan data lake. Topik ini menjelaskan sintaks perintah dan menyediakan contoh penggunaan.

Latar Belakang

Dalam banyak alur kerja AI, pengembang gudang data yang memahami data dan logika bisnis harus melakukan pra-pemrosesan atau memproses data tidak terstruktur untuk model besar. Tugas-tugas tersebut memanfaatkan daya komputasi skala besar berbiaya rendah dari platform data besar. Proses-proses ini dan hasilnya sering kali berinteraksi dengan data di gudang data atau data lake.

Menggunakan SQL untuk memproses data tidak terstruktur menghadirkan beberapa tantangan:

  • Saat membaca dari penyimpanan objek, mesin SQL data besar tidak dapat menentukan ukuran objek, sehingga menyulitkan optimasi rencana eksekusi serta pengendalian konkurensi atau peluncuran jumlah tugas konkuren yang sesuai. Tanpa penurunan predikat yang efektif, daya komputasi tidak dapat dimanfaatkan secara optimal, terutama dalam kasus kesenjangan data.

  • Membaca metadata dari penyimpanan objek menyebabkan latensi tinggi karena setiap kueri memerlukan panggilan remote ke layanan penyimpanan.

  • Daftar file dari penyimpanan objek hanya dapat diambil secara serial dalam satu proses pada fungsi tabel yang didefinisikan pengguna (UDTF), sehingga menghasilkan performa baca data yang buruk.

  • Anda harus menerapkan logika otorisasi dan konektivitas jaringan dalam fungsi yang didefinisikan pengguna (UDF) untuk terhubung ke layanan penyimpanan.

  • Gudang data tradisional tidak menyediakan fitur untuk mengunggah gambar kustom secara aman atau lingkungan eksekusi yang aman untuk UDF. Selain itu, panggilan remote memerlukan manajemen konkurensi yang kompleks dengan layanan komputasi terdistribusi.

Fitur

MaxCompute memperkenalkan fitur tabel objek, yang memungkinkan mesin komputasi gudang data mengakses data tidak terstruktur dan metadata-nya di penyimpanan data lake. Fitur ini menyediakan kemampuan berikut:

  • Memungkinkan mesin membaca metadata file OSS sebagai tabel.

  • Memanfaatkan tabel metadata untuk menyimpan cache metadata versi file OSS. Mesin SQL kemudian dapat menggunakan metadata ini untuk optimasi kueri, seperti penyaringan data dan penurunan predikat.

  • Menyediakan fungsi bawaan untuk membaca konten file data tidak terstruktur dengan berbagai cara.

  • Memungkinkan mesin SQL MaxCompute membuat split konkuren berdasarkan metadata tabel objek, sehingga membuka potensi komputasi terdistribusi skala besar untuk meningkatkan efisiensi pembacaan dan pemrosesan data.

  • Memungkinkan Anda mengunggah gambar kustom untuk membangun UDF yang memproses data tidak terstruktur yang dibaca oleh mesin.

  • Mendukung pemrosesan data tidak terstruktur untuk menghasilkan hasil terstruktur dan menuliskannya ke tabel internal atau eksternal di gudang data. Versi mendatang juga akan mendukung pembuatan hasil tidak terstruktur dan menuliskannya kembali ke OSS melalui tabel objek.

  • Mendukung mesin Maxframe dari ekosistem Python.

Batasan

  • Proyek MaxCompute harus memiliki skema yang diaktifkan. Untuk informasi selengkapnya, lihat Aktifkan skema.

  • MaxCompute harus mendukung Type System 2.0.

  • Tabel objek saat ini tidak mendukung partisi.

Penagihan

  • Tabel Objek menyimpan kumpulan metadata untuk file di OSS. Biaya penyimpanan dikenakan untuk metadata yang direfresh dan disimpan di Tabel Objek. Untuk informasi selengkapnya, lihat Harga penyimpanan. Karena file dari OSS tidak disimpan di dalam MaxCompute, MaxCompute tidak membebankan biaya penyimpanan untuk file tersebut. OSS membebankan biaya untuk penyimpanan dan akses data. Untuk informasi selengkapnya, lihat Harga penyimpanan OSS.

  • Untuk tugas yang mengekstraksi dan merefresh metadata OSS, inputsize untuk setiap file yang dipindai didasarkan pada ukuran metadatanya, bukan ukuran file sebenarnya. Oleh karena itu, total biaya pekerjaan refresh bergantung pada jumlah file, bukan ukuran totalnya. Untuk informasi selengkapnya, lihat Penagihan SQL untuk tabel eksternal.

  • Anda dikenai biaya komputasi saat menggunakan Tabel Objek dan metadatanya untuk menganalisis serta mengekstraksi data tidak terstruktur dari OSS.

    • Dalam langganan bayar sesuai penggunaan, analisis metadata Tabel Objek ditagih dengan cara yang sama seperti tabel internal. Untuk informasi selengkapnya, lihat Penagihan SQL Standar. Pemrosesan konten data tidak terstruktur dari OSS ditagih sebagai tabel eksternal. Untuk informasi selengkapnya, lihat Penagihan SQL untuk tabel eksternal.

    • Dalam paket penagihan langganan, Anda menggunakan sumber daya langganan prabayar. Untuk informasi selengkapnya, lihat Biaya komputasi (langganan).

Membuat Tabel Objek

Sintaks

CREATE OBJECT TABLE [IF NOT EXISTS] <objecttable_name> 
WITH SERDEPROPERTIES ('<key>' = '<value>') 
LOCATION '<location>' 
[TBLPROPERTIES ('<key>' = '<value>')] 
[COMMENT '<comment>'] 
;
Catatan
  • Tabel objek harus digunakan dalam proyek yang telah mengaktifkan skema, dan Anda harus mengaktifkan sakelar sintaks skema.

  • Anda tidak perlu mendefinisikan kolom untuk Tabel Objek karena kolom metadatanya disediakan oleh sistem.

Parameter

Parameter

Wajib

Deskripsi

objecttable_name

Ya

Nama tabel.

SERDEPROPERTIES ('<key>'='<value>')

Ya

Menentukan properti untuk serializer-deserializer (SerDe). Anda dapat menentukan RAM role untuk otorisasi dengan mengatur kunci odps.properties.rolearn. Jika Anda menghilangkan kunci ini, MaxCompute menggunakan RAM role AliyunODPSDefaultRole dari Akun Alibaba Cloud saat ini untuk mengakses OSS.

Contoh: 'odps.properties.rolearn'='acs:ram::uid:role/aliyunodpsdefaultrole'.

Sebelum menggunakan fitur ini, pastikan Anda telah menyelesaikan otorisasi satu klik untuk AliyunODPSDefaultRole. Otorisasi ini memungkinkan proyek MaxCompute mengakses langsung sumber daya OSS yang dimiliki oleh akun cloud saat ini melalui token STS.

Catatan

Otorisasi satu klik hanya dimungkinkan jika pemilik proyek MaxCompute dan pemilik akun OSS adalah pihak yang sama.

location

Ya

  • Jalur OSS yang dipetakan oleh Tabel Objek. Formatnya adalah oss://<oss_endpoint>/<bucket_name>/<oss_directory_name>/. Contohnya, oss://oss-cn-hangzhou-internal.aliyuncs.com/odps-external-****/ottest/.

  • Tabel Objek mengekstraksi metadata file dalam direktori yang ditentukan.

  • Untuk mendapatkan oss_endpoint:

    • Login ke Konsol OSS.

    • Pada halaman Buckets, klik Bucket Name yang dituju untuk membuka halaman Objects-nya.

    • Di area Port pada halaman Overview, dapatkan Endpoint untuk Access from ECS over the Classic Network (internal network).

TBLPROPERTIES ('<key>'='<value>')

Tidak

  • metadata.cache.mode: Mode refresh cache.

    • manual: Pemicu manual (default).

    • periodic: Pemicu periodik. Mode ini memerlukan parameter metadata.staleness.seconds untuk menentukan interval refresh.

  • metadata.staleness.seconds: Interval refresh dalam detik. Nilainya dapat berkisar antara 1 hingga 604800 (1 detik hingga 1 minggu). Parameter ini merupakan jaminan upaya terbaik, dan penjadwal akan mencoba menjalankan refresh sedekat mungkin dengan interval yang ditentukan.

comment

Tidak

Komentar untuk tabel.

Contoh

SET odps.namespace.schema=true; 
CREATE OBJECT TABLE ot_demo_day 
WITH serdeproperties ( 
 'odps.properties.rolearn'='acs:ram::xxxxxx:role/aliyunodpsdefaultrole') 
LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/odps-external-****/ottest/';

Menampilkan properti Tabel Objek

Sintaks

DESC <object_table_name>

Parameter

object_table_name: Wajib. Nama tabel.

Contoh

SET odps.namespace.schema=true; 
DESC ot_demo_day; 

Hasil berikut dikembalikan:

+------------------------------------------------------------------------------------+
| Owner:                    ALIYUN$****@test.aliyunid.com                        |
| Project:                  test_objecttable                                         |
| Schema:                   default                                                  |
| TableComment:                                                                      |
+------------------------------------------------------------------------------------+
| CreateTime:               2024-09-02 20:01:56                                      |
| LastDDLTime:              2024-09-02 20:01:56                                      |
| LastModifiedTime:         2024-09-02 20:01:56                                      |
+------------------------------------------------------------------------------------+
| InternalTable: YES      | Size: 0                                                  |
+------------------------------------------------------------------------------------+
| Native Columns:                                                                    |
+------------------------------------------------------------------------------------+
| Field           | Type       | Label | Comment                                     |
+------------------------------------------------------------------------------------+
| key             | varchar(2048) |       | The name of the object.                     |
| size            | bigint     |       | The size of the returned object in bytes.   |
| type            | varchar(32) |       | The type of the object and valid values: Normal, Multipart, Appendable, and Symlink. |
| last_modified   | timestamp  |       | The last modified time of the object.       |
| storage_class   | varchar(32) |       | The storage class of the object.            |
| etag            | varchar(64) |       | The entity tag (ETag). When an object is created, an ETag is created to identify the content of the object. |
| restore_info    | varchar(256) |       | The restoration status of the object.       |
| owner_id        | bigint     |       | The ID of the bucket owner.                 |
| owner_display_name | varchar(256) |       | The display name of the bucket owner.       |
+------------------------------------------------------------------------------------+

Tabel berikut menjelaskan kolom-kolom utama dalam hasil tersebut.

Parameter

Tipe

Boleh null

Deskripsi

key

VARCHAR(2048)

Batas panjang di OSS adalah 1.023 karakter.

Untuk informasi selengkapnya, lihat Aturan penamaan dan contoh objek OSS.

False

Jalur relatif objek dalam Tabel Objek.

size

BIGINT

False

Ukuran objek dalam byte.

type

VARCHAR(32)

False

Tipe objek di OSS: Normal, Multipart, Appendable, atau Symlink.

last_modified

TIMESTAMP_NTZ

False

Waktu terakhir data objek dimodifikasi di OSS.

storage_class

VARCHAR(32)

False

Kelas penyimpanan objek di OSS. Untuk daftar kelas penyimpanan, lihat Kelas penyimpanan.

etag

VARCHAR(64)

False

ETag adalah tag entitas yang dihasilkan untuk suatu objek. ETag mengidentifikasi apakah konten objek berubah antar pembaruan, tetapi bukan pengenal unik.

restore_info

VARCHAR(256)

True

Menunjukkan apakah objek telah dipulihkan dari penyimpanan dingin. Jika objek sedang dipulihkan, kolom ini memberikan informasi terkait.

owner_id

BIGINT

True

ID pemilik objek.

owner_display_name

VARCHAR(256)

True

Nama tampilan pemilik objek.

Menampilkan pernyataan CREATE TABLE

Sintaks

SHOW CREATE TABLE <object_table_name>;

Parameter

object_table_name: Wajib. Nama tabel.

Contoh

SET odps.namespace.schema=true; 
SHOW CREATE TABLE ot_demo_day; 

Hasil berikut dikembalikan:

CREATE OBJECT TABLE IF NOT EXISTS yunqi_object_****.`default`.ot_demo_day 
WITH SERDEPROPERTIES ( 
  'serialization.format'='1', 
  'odps.properties.rolearn'='acs:ram::139699392458****:role/aliyunodpsdefaultrole') 
LOCATION 
  'oss://oss-cn-hangzhou-internal.aliyuncs.com/odps-external-****/ottest/' 
TBLPROPERTIES ( 
  'last_modified_time'='1731478307', 
  'transient_lastDdlTime'='1731478307', 
  'metadata.cache.mode'='manual', 
  'metadata.staleness.seconds'='3600');

Refresh metadata Tabel Objek

Data aktual untuk Tabel Objek disimpan di OSS. MaxCompute menyimpan cache metadata objek-objek tersebut dan menggunakan metadata cache ini untuk kueri dan komputasi. Oleh karena itu, Anda harus merefresh cache sebelum menggunakan Tabel Objek. Anda dapat merefresh metadata secara manual atau mengonfigurasi refresh periodik saat membuat tabel.

Catatan

Refresh manual maupun periodik keduanya merupakan pembaruan penuh.

Penyegaran manual

Setiap refresh melakukan sinkronisasi penuh metadata. Anda dapat mengontrol waktu dan frekuensi refresh tersebut.

  • Sintaks

    ALTER TABLE <objecttable_name> REFRESH METADATA;
  • Parameter

    object_table_name: Wajib. Nama tabel.

  • Contoh

    SET odps.namespace.schema=true; 
    ALTER TABLE ot_demo_day REFRESH METADATA;

Refresh periodik

Jika file dalam direktori OSS yang dipetakan oleh Tabel Objek sering berubah, Anda dapat mengonfigurasi refresh metadata periodik. Hal ini mengurangi biaya maintenance dengan menentukan parameter terkait saat membuat tabel.

  • Sintaks

    SET odps.namespace.schema=true;
    SET odps.sql.type.system.odps2 = true;
    
    CREATE OBJECT TABLE ot_demo_day 
    WITH serdeproperties (
     'odps.properties.rolearn'='acs:ram::xxxxxx:role/aliyunodpsdefaultrole'
    )
    location 'oss://oss-cn-hangzhou-internal.aliyuncs.com/odps-external-****/ottest/'
    tblproperties (
      'metadata.cache.mode' = 'periodic',
      'metadata.staleness.seconds' = '3600'
    );
    
  • Parameter

    • metadata.staleness.seconds: Interval refresh. Parameter ini wajib untuk mode periodic. Nilainya dapat berkisar antara [1, 604800], yang merepresentasikan rentang 1 detik hingga 1 minggu. Parameter ini merupakan jaminan upaya terbaik, dan penjadwal akan mencoba menjalankan refresh sedekat mungkin dengan interval yang ditentukan.

    • metadata.cache.mode: Mode refresh. Opsi yang tersedia adalah:

      • periodic: Pemicu periodik.

      • crontab: Refresh terjadwal.

      • manual: Pemicu manual (default). Anda dapat mengontrol waktu pemicunya.

Refresh terjadwal

Jika file dalam direktori OSS yang dipetakan oleh Tabel Objek sering berubah, Anda dapat menjadwalkan refresh metadata. Hal ini mengurangi biaya maintenance dengan menentukan parameter terkait saat membuat tabel.

  • Sintaks

    SET odps.namespace.schema=true;
    SET odps.sql.type.system.odps2 = true;
    
    CREATE OBJECT TABLE ot_demo_day 
    WITH SERDEPROPERTIES (
     'odps.properties.rolearn'='acs:ram::xxxxxx:role/aliyunodpsdefaultrole'
    )
    LOCATION 'oss://oss-cn-region-internal.aliyuncs.com/odps-external-****/ottest/'
    TBLPROPERTIES (
      'metadata.cache.mode' = 'crontab',
      'metadata.crontab.expression' = 'your_timed_expression'
    );
  • Parameter

    • metadata.crontab.expression: Ekspresi cron yang menentukan jadwal. Misalnya, untuk memicu refresh setiap hari pukul 14.00, Anda dapat menggunakan ekspresi 0 0 14 * * ?, yang berarti 0 detik, 0 menit, jam 14 (pukul 14.00), setiap hari, setiap bulan, dan ? untuk tidak menentukan hari dalam minggu (saling eksklusif dengan field hari-bulan untuk menghindari konflik).

    • metadata.cache.mode: Mode refresh. Opsi yang tersedia adalah:

      • crontab: Refresh terjadwal.

      • periodic: Pemicu periodik.

      • manual: Pemicu manual (default). Anda dapat mengontrol waktu pemicunya.

Menampilkan tugas refresh

Anda dapat menjalankan perintah berikut untuk melihat riwayat tugas refresh.

SHOW refresh task history FOR object TABLE <object_table_name>;
  • Parameter

    • <object_table_name> harus berupa tabel objek.

    • Nilai kembalian: ID instans tugas refresh (InstanceId), waktu pembuatan (CreateTime), waktu selesai (EndTime), dan status (Status).

    • Jika Status bernilai Failed, Anda dapat menjalankan wait InstanceId; untuk melihat log dan memeriksa detail error.

  • Contoh

    -- Menampilkan tugas refresh historis untuk Tabel Objek.
    SET odps.namespace.schema=true; 
    SHOW refresh task history for object table ot_demo_day04;
    
    -- Hasil berikut dikembalikan.
    ID = 20260105*******f
    +---------------------------------------------------------------------------------------------------+
    | Project:                  test_project                                                                              |
    | Schema:                   default                                                                                           |
    | Task:                     ***                        |
    +---------------------------------------------------------------------------------------------------+
    | History:                                                                                          |
    +---------------------------------------------------------------------------------------------------+
    | InstanceId                       | CreateTime             | EndTime                | Status       |
    +---------------------------------------------------------------------------------------------------+
    | 20260105******************ks     | 2026-01-05 14:12:00    | 2026-01-05 14:12:04    | Terminated   |
    | 20260105******************y3     | 2026-01-05 14:10:00    | 2026-01-05 14:10:03    | Terminated   |
    +---------------------------------------------------------------------------------------------------+
    
    OK

Menanyakan Tabel Objek

Setelah Tabel Objek mengambil metadata file dari direktori OSS, Anda dapat menanyakan tabel tersebut untuk menelusuri metadata ini. Anda juga dapat menggunakan pernyataan SQL untuk melakukan perhitungan pada metadata, seperti penyaringan, pencocokan, agregasi, join, fungsi jendela, ORDER BY, dan LIMIT.

Sintaks

SELECT * FROM <object_table_name>;

Parameter

object_table_name: Wajib. Nama tabel.

Contoh

-- Anda dapat menanyakan data yang diunggah ke direktori OSS yang ditentukan. Jika jumlah datanya besar, Anda dapat membatasi hasil menjadi lima baris.
SET odps.namespace.schema=true; 
SELECT * FROM  ot_demo_day [limit 5];

Menghapus Tabel Objek

Tabel Objek menyimpan cache metadata pengguna, yang mengonsumsi penyimpanan dan menimbulkan biaya. Jika Anda tidak lagi memerlukan data cache tersebut, Anda dapat menghapus Tabel Objek. Anda dapat membuat ulang Tabel Objek tersebut nanti jika diperlukan.

Sintaks

DROP TABLE [IF EXISTS] <object_table_name>; 

Parameter

object_table_name: Wajib. Nama tabel.

Contoh

SET odps.namespace.schema=true; 
DROP TABLE IF EXISTS ot_demo_day;

FAQ

ODPS-0010000:System internal error

  • Gejala

    Pesan error berikut dilaporkan:

    ODPS-0010000:System internal error - 
    ActionHandler job failed with failinfo	storage service worker error occured: 
    common/io/oss/oss_file_system_cppsdk.cpp(919): 
    OSSRequestException: Status: -50, RequestId: , 
    ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED
  • Penyebab

    Anda menggunakan titik akhir publik untuk OSS saat membuat Tabel Objek.

  • Solusi

    Saat membuat Tabel Objek, parameter location harus berisi titik akhir internal untuk oss_endpoint. Untuk informasi tentang cara mendapatkan titik akhir internal, lihat Deskripsi parameter. Jika error tetap muncul setelah Anda mengubah alamat ke titik akhir internal, hubungi tim dukungan teknis MaxCompute dengan mengirimkan tiket untuk mendapatkan bantuan.

Refresh periodik gagal

  • Gejala

Anda menyetel parameter refresh periodik saat membuat Tabel Objek. Namun, refresh tidak berjalan saat interval tercapai.

  • Solusi

Pastikan parameter location yang digunakan untuk membuat Tabel Objek menentukan titik akhir internal OSS. Untuk informasi lebih lanjut tentang membuat Tabel Objek, lihat Parameter.