All Products
Search
Document Center

MaxCompute:Migrasi proyek eksternal ke skema eksternal

Last Updated:Mar 25, 2026

Topik ini menjelaskan cara memodifikasi pekerjaan yang ada untuk berbagai skenario saat melakukan migrasi dari proyek eksternal di Data Lakehouse Solution 1.0 ke skema eksternal di Data Lakehouse Solution 2.0, serta menjelaskan kompatibilitas pekerjaan yang ada setelah mengaktifkan mode skema untuk metadata tingkat proyek dan sintaks SQL di Data Lakehouse Solution 2.0.

Penting

Fitur dan penggunaan proyek eksternal di Data Lakehouse Solution 1.0 (External Project 1.0) tidak lagi dikembangkan dan akan dihentikan. Jika Anda menggunakan MaxCompute untuk mengakses sumber data federasi, Anda harus meningkatkan solusi federasi ke Data Lakehouse Solution 2.0.

Latar Belakang

Data Lakehouse Solution 1.0 mendukung federasi dengan dua jenis sumber data menggunakan proyek eksternal: DLF+OSS dan HMS+HDFS. Di Data Lakehouse Solution 1.0, level di atas tabel adalah proyek, yang dipetakan ke database di DLF atau Hive.

  • Untuk data lake yang difederasi dengan DLF dan OSS, proyek eksternal di Data Lakehouse Solution 1.0 secara langsung berisi informasi koneksi. Mesin MaxCompute terhubung ke metadata DLF dan data OSS menggunakan properti proyek eksternal tersebut.

  • Untuk instans Hadoop HMS+HDFS, objek Foreign Server digunakan untuk menyimpan informasi koneksi guna mengakses instans tersebut. Mesin MaxCompute menggunakan sumber data eksternal untuk membaca metadata dan data Hive.

Perbandingan antara Data Lakehouse Solution 1.0 dan Data Lakehouse Solution 2.0

Metode federasi di Data Lakehouse Solution 1.0 memiliki beberapa keterbatasan. Data Lakehouse Solution 2.0 menyediakan optimasi untuk mengatasi isu-isu tersebut. Tabel berikut membandingkan kedua solusi tersebut.

Item

Data Lakehouse Solution 1.0

Data Lakehouse Solution 2.0

Sumber data eksternal

Objek sumber data eksternal tidak konsisten di berbagai skenario federasi. Kurangnya abstraksi sumber data eksternal menghambat berbagi sumber daya dan kontrol akses di tingkat penyewa.

Foreign Server terpadu diabstraksikan. Hal ini memisahkan izin tingkat penyewa dari izin tingkat data secara lebih baik serta menyederhanakan berbagi sumber daya dan pengelolaan izin.

Model proyek

Tabel disimpan langsung di dalam proyek. Model ini tidak konsisten dengan struktur Project.Schema.Table yang lebih umum digunakan oleh sumber data.

Untuk memetakan ke objek manajemen di level di atas tabel dalam sumber data—seperti database di DLF atau skema di Hologres—Anda harus membuat banyak proyek eksternal.

Proyek ditingkatkan untuk mendukung model skema. Anda dapat membuat proyek baru yang menggunakan struktur Project.Schema.Table atau menggantikan struktur Project.Table yang ada dengannya. Hal ini memungkinkan pencocokan dengan lebih banyak database dan sumber data dalam ekosistem data besar.

Metode komputasi

Meskipun proyek eksternal di Data Lakehouse Solution 1.0 merupakan objek tingkat proyek, proyek tersebut tetap harus bergantung pada proyek gudang data untuk menjalankan pekerjaan komputasi. Hal ini meningkatkan kompleksitas otorisasi akses data lintas proyek.

Data Lakehouse Solution 2.0 memperkenalkan External Schema untuk memetakan ke level di atas objek tabel dalam sumber data. Skema eksternal menggunakan sumber daya komputasi dari proyek gudang data tempat skema tersebut berada.

Pemetaan internal dan eksternal

image.png

image.png

Catatan

Untuk informasi selengkapnya tentang cara membuat sumber data eksternal dan proyek eksternal, lihat Panduan pengguna Data Lakehouse Solution 2.0.

Mode skema dan kompatibilitas

MaxCompute memungkinkan Anda mengaktifkan fitur skema. Terdapat dua sakelar yang tersedia: mode skema untuk metadata tingkat proyek dan mode skema untuk sintaks SQL.

Mode skema untuk metadata tingkat proyek

Anda tidak dapat menonaktifkan mode ini setelah mengaktifkannya. Mengaktifkan mode ini dapat menyebabkan masalah kompatibilitas dengan tugas lain di proyek Anda dan dengan akses ke proyek Anda. Lakukan dengan hati-hati.

  • Perubahan struktur proyek

    • Setelah Anda mengaktifkan mode skema untuk metadata tingkat proyek, struktur proyek menjadi Project.Schema.Table.

    • Ketika mode skema dinonaktifkan, struktur proyek adalah Project.Table.

  • Mengakses data dalam skema kustom

    Untuk mengakses data dalam skema kustom, Anda harus mengaktifkan mode skema untuk sintaks SQL. Jika tidak, Anda hanya dapat mengakses data dalam skema DEFAULT.

  • Skema bawaan

    Setiap proyek memiliki skema bawaan bernama Default. Anda tidak dapat menghapus skema ini.

  • Prosedur

    1. Login ke Konsol MaxCompute, lalu pilih wilayah di pojok kiri atas.

    2. Di panel navigasi sebelah kiri, pilih Manage Configurations > Projects.

    3. Di halaman Projects, temukan proyek target lalu klik Enable Schema di kolom Actions.

Mode skema untuk sintaks SQL

Mode skema untuk sintaks SQL dapat diatur pada dua level berbeda: tingkat sesi dan tingkat penyewa. Ruang lingkup yang berlaku berbeda untuk masing-masing level.

Pengaturan tingkat sesi

Pengaturan ini hanya memengaruhi semantik sesi saat ini dan mengambil prioritas dibanding pengaturan tingkat penyewa. Anda dapat menjalankan perintah SET odps.namespace.schema= true | false; untuk mengaktifkan atau menonaktifkan mode skema untuk sintaks SQL.

Pengaturan tingkat penyewa

Setelah Anda mengaktifkan mode skema untuk sintaks SQL di tingkat penyewa, perhatikan hal-hal berikut:

  • Semua pekerjaan: Anda tidak perlu lagi menambahkan sakelar sintaks tingkat sesi. Proyek baru secara default mendukung mode skema untuk metadata.

  • Semua proyek: Semua proyek mendukung mode skema untuk sintaks SQL. Anda tidak dapat menonaktifkan mode ini setelah mengaktifkannya.

    Jika pekerjaan yang ada di proyek Anda tidak kompatibel dengan mode skema untuk sintaks SQL, mengaktifkan sakelar ini menyebabkan pekerjaan yang ada gagal. Oleh karena itu, Anda harus terlebih dahulu mengaktifkan mode skema untuk sintaks SQL di tingkat sesi. Setelah memverifikasi bahwa pekerjaan berjalan sesuai harapan, Anda dapat mengaktifkan mode skema untuk sintaks SQL di tingkat penyewa.

  • Prosedur

    1. Login ke Konsol MaxCompute, lalu pilih wilayah di pojok kiri atas.

    2. Di panel navigasi sebelah kiri, pilih Manage Configurations > Tenants.

    3. Di halaman Tenants, klik tab Tenant Property.

      • Jika tidak ada proyek di bawah penyewa saat ini

        Di tab Tenant Property, aktifkan Tenant-level Schema Syntax.

      • Jika terdapat proyek di bawah penyewa saat ini

        Jangan ubah pengaturan ini.

Untuk informasi selengkapnya, lihat Properti penyewa.

Dampak kompatibilitas

Terjadi error kompatibilitas jika mode skema untuk metadata tingkat proyek dan mode skema untuk sintaks SQL di Data Lakehouse Solution 2.0 tidak dalam status yang sama (salah satu diaktifkan sementara yang lain dinonaktifkan).

Pertimbangkan proyek gudang data di mana mode skema untuk metadata tingkat proyek dan mode skema untuk sintaks SQL keduanya dinonaktifkan. Struktur proyek adalah project(p).table(t), dan pekerjaan yang ada berjalan normal.

  • Ketika Anda mengaktifkan mode skema untuk metadata di proyek gudang data

  • Atau ketika Anda mengaktifkan mode skema untuk sintaks SQL pada pekerjaan kueri di proyek gudang data

Jika Anda menjalankan pekerjaan kueri asli tanpa mengubah ekspresi SQL, error kompatibilitas dapat terjadi. Tabel berikut menjelaskan detailnya.

Status mode skema

Jenis pekerjaan

Kompatibilitas

Saran

  • Pola skema tanpa dukungan metadata

  • Mode skema untuk sintaks SQL diaktifkan.

Pekerjaan yang ada

  • Jika pekerjaan yang ada menggunakan sintaks ...FROM t, sistem mengurai struktur t sebagai current_project(p).table(t). Hal ini memastikan kompatibilitas sintaks.

  • Jika pekerjaan menggunakan sintaks ...FROM p.t, sistem mengurai struktur p.t sebagai current_project.schema(p).table(t). Namun, terjadi error karena data berada di project(p).table(t) dan layer Schema (p) tidak ada.

  • Tidak perlu modifikasi.

  • Ubah pernyataan menjadi ...FROM p.default.t.

Tugas Baru

  • Jika Anda menulis tugas baru sebagai p.default.t, struktur tersebut diurai sebagai project(p).schema(default).table(t).

  • Jika Anda menulis tugas baru sebagai default.t, struktur tersebut diurai sebagai current_project.schema(default).table(t).

  • Jika Anda menulis tugas baru sebagai t, struktur tersebut diurai sebagai current_project.current_schema.table(t).

  • Jika Anda menulis tugas baru sebagai p.s.t, struktur tersebut diurai sebagai project(p).schema(s).table(t). Jika layer schema (s) tidak ada di proyek (p), error dilaporkan.

Tidak perlu modifikasi.

  • Aktifkan dukungan metadata untuk pola Skema

  • Mode skema untuk sintaks SQL dinonaktifkan.

Pekerjaan yang ada

  • Jika pekerjaan yang ada menggunakan sintaks ...FROM t, sistem mempertahankan kompatibilitas sintaks dengan mengurai struktur t sebagai current_project(p).schema(default).table(t).

  • Jika pekerjaan yang ada menggunakan sintaks ...FROM p.t, sistem mengurai struktur p.t sebagai project(p).schema(default).table(t) dan secara otomatis menambahkan level Default Schema untuk memastikan kompatibilitas sintaks.

Tidak perlu modifikasi.

Pekerjaan Baru

  • Jika Anda menulis pekerjaan baru sebagai p.t, struktur tersebut diurai sebagai project(p).schema(default).table(t). Sistem secara otomatis menambahkan level skema Default.

  • Jika Anda menulis pekerjaan baru sebagai t, struktur tersebut diurai sebagai project.schema(default).table(t). Sistem secara otomatis menambahkan level skema Default.

Catatan

Dalam status saat ini, Anda tidak dapat mengakses skema kustom atau menggunakan USE SCHEMA <schema_name>.

Tidak perlu modifikasi.

  • Aktifkan dukungan metadata dalam mode Skema

  • Mode skema untuk sintaks SQL diaktifkan.

Pekerjaan yang ada

  • Jika pekerjaan menggunakan sintaks ...FROM t, sistem mengurai struktur t sebagai current_project(p).schema(default).table(t). Sintaks ini kompatibel.

  • Jika pekerjaan yang ada menggunakan sintaks ...FROM p.t, sistem mengurai struktur p.t sebagai current_project.schema(p).table(t). Terjadi error karena data berada di project(p).table(t) dan layer Schema (p) tidak ada.

  • Skenario 1: Tidak perlu modifikasi.

  • Skenario 2: Ubah pernyataan menjadi ...FROM p.default.t.

Tugas Baru

Anda dapat menggunakan mode skema dan aturan sintaks yang didukung.

Tidak perlu modifikasi.

Panduan migrasi

  • Berdasarkan skenario Anda, Anda dapat memilih proyek yang ada atau membuat proyek baru, lalu mengaktifkan mode skema untuk metadata tingkat proyek. Setelah mengaktifkan mode ini, skema Default secara otomatis dibuat. Semua tabel internal dalam proyek termasuk dalam skema Default. Untuk informasi selengkapnya tentang skema, lihat Skema dan Operasi skema.

  • Anda tidak dapat menonaktifkan mode skema untuk metadata tingkat proyek setelah mengaktifkannya. Mengaktifkan mode ini dapat menyebabkan masalah kompatibilitas dengan tugas lain di proyek Anda dan dengan akses ke proyek Anda. Lakukan dengan hati-hati. Untuk informasi selengkapnya tentang kompatibilitas skema, lihat Mode skema dan kompatibilitas.

  • Anda dapat membuat skema eksternal di proyek yang telah diaktifkan mode skema untuk metadata-nya. Detail pembuatan bervariasi tergantung jenis sumber data Anda. Untuk informasi selengkapnya, lihat Panduan pengguna Data Lakehouse Solution 2.0.

    Tetapkan nama skema eksternal agar sama dengan nama proyek eksternal.

Kasus penggunaan 1: Buat skema eksternal di proyek yang menjalankan pekerjaan yang ada dan akses data dalam skema eksternal

  • Contoh skenario: Proyek yang menjalankan pekerjaan yang ada adalah proyek (p1). Target kueri adalah proyek eksternal yang ditentukan sebagai external_project(e).table(t). Setelah migrasi, sumber data federasi dipetakan ulang ke struktur project (p1).external_schema(e).table(t).

  • Jika pekerjaan yang ada adalah SELECT * FROM e.t;

    • Setelah Anda mengaktifkan mode skema untuk sintaks SQL, struktur e.t diurai sebagai external_schema(e).table(t). Pekerjaan dapat berjalan normal di proyek (p1) tanpa modifikasi.

    • Jika Anda tidak mengaktifkan mode skema untuk sintaks SQL, struktur e.t dalam pekerjaan yang ada SELECT * FROM e.t; diurai sebagai project (e).table(t). Sistem melakukan kueri terhadap proyek internal atau eksternal bernama e. Hal ini tidak konsisten dengan struktur yang dipetakan ulang, sehingga pekerjaan akses yang ada gagal.

  • Jika proyek (p1) dikaitkan dengan proyek eksternal untuk kueri data, misalnya, SELECT * FROM e.t1 JOIN p1.t2;.

    Setelah Anda mengaktifkan mode skema untuk sintaks SQL, p1 dalam p1.t2 diurai sebagai skema. Oleh karena itu, Anda harus mengubah pernyataan SQL menjadi: SELECT * FROM e.t1 JOIN p1.default.t2;.

Kasus penggunaan 2: Buat skema eksternal di proyek lain dan akses data dalam skema eksternal

  • Contoh skenario: Proyek yang menjalankan pekerjaan yang ada adalah proyek (p1). Struktur proyek eksternal adalah external_project(e).table(t). Jika tidak sesuai untuk mengaktifkan mode skema untuk metadata di proyek (p1), Anda dapat memilih atau membuat proyek lain, yaitu proyek (p2), untuk migrasi. Setelah migrasi, sumber data federasi dipetakan ulang ke struktur project (p2).external_schema(e).table(t).

  • Jika pekerjaan yang ada di Proyek p1 berisi pernyataan SELECT * FROM e.t;, Anda harus mengubah pernyataan tersebut menjadi SELECT * FROM p2.e.t; setelah Anda mengaktifkan mode skema untuk sintaks SQL.

  • Jika Anda menjalankan pekerjaan tersebut di proyek (p2), tidak diperlukan modifikasi.

  • Ketika Anda melakukan kueri join lintas proyek antara skema eksternal dan proyek gudang data, jika Anda menjalankan SELECT * FROM e.t1 JOIN p1.t2; di proyek (p1), sistem tetap melakukan kueri terhadap skema (p1) dalam proyek (p1) untuk p1.t2. Hal ini terjadi karena mode skema untuk sintaks SQL diaktifkan, meskipun mode skema untuk metadata tidak diaktifkan untuk proyek (p1). Oleh karena itu, Anda harus mengubah pernyataan SQL menjadi SELECT * FROM p2.e.t1 JOIN p1.default.t2;.