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.
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 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 |
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 |
|
|
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
Login ke Konsol MaxCompute, lalu pilih wilayah di pojok kiri atas.
Di panel navigasi sebelah kiri, pilih .
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
Login ke Konsol MaxCompute, lalu pilih wilayah di pojok kiri atas.
Di panel navigasi sebelah kiri, pilih .
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 |
| Pekerjaan yang ada |
|
|
Tugas Baru |
| Tidak perlu modifikasi. | |
| Pekerjaan yang ada |
| Tidak perlu modifikasi. |
Pekerjaan Baru |
Catatan Dalam status saat ini, Anda tidak dapat mengakses skema kustom atau menggunakan | Tidak perlu modifikasi. | |
| Pekerjaan yang ada |
|
|
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 strukturproject (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.tdiurai sebagaiexternal_schema(e).table(t). Pekerjaan dapat berjalan normal di proyek (p1) tanpa modifikasi.Jika Anda tidak mengaktifkan mode skema untuk sintaks SQL, struktur
e.tdalam pekerjaan yang adaSELECT * FROM e.t;diurai sebagaiproject (e).table(t). Sistem melakukan kueri terhadap proyek internal atau eksternal bernamae. 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,
p1dalamp1.t2diurai 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 strukturproject (p2).external_schema(e).table(t).Jika pekerjaan yang ada di Proyek p1 berisi pernyataan
SELECT * FROM e.t;, Anda harus mengubah pernyataan tersebut menjadiSELECT * 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) untukp1.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 menjadiSELECT * FROM p2.e.t1 JOIN p1.default.t2;.

