Setelah mengonfigurasi katalog MaxCompute, Anda dapat langsung mengakses tabel yang disimpan di MaxCompute dalam pekerjaan Realtime Compute for Apache Flink tanpa perlu mendefinisikan skema. Topik ini menjelaskan cara membuat, melihat, menggunakan, dan menghapus katalog MaxCompute di Realtime Compute for Apache Flink.
Latar Belakang
Katalog MaxCompute melakukan kueri ke layanan MaxCompute untuk mengambil skema tabel fisik, sehingga memungkinkan Anda mengambil informasi detail bidang dalam Flink SQL tanpa harus mendeklarasikan skema tabel. Katalog MaxCompute menyediakan fitur-fitur berikut:
-
Dalam katalog MaxCompute, nama database sesuai dengan nama proyek di MaxCompute. Anda dapat beralih antar database untuk menggunakan tabel dari proyek MaxCompute yang berbeda.
-
Dalam katalog MaxCompute, nama tabel sesuai dengan nama tabel fisik di MaxCompute, dan tipe data dipetakan secara otomatis. Hal ini menghilangkan kebutuhan untuk mendaftarkan secara manual tabel MaxCompute menggunakan pernyataan DDL, sehingga meningkatkan efisiensi dan akurasi pengembangan.
-
Anda dapat langsung menggunakan tabel dari katalog MaxCompute sebagai tabel sumber, tabel dimensi, dan tabel hasil dalam pekerjaan Flink SQL.
-
Membuat tabel dalam katalog MaxCompute secara otomatis membuat tabel fisik yang sesuai di layanan MaxCompute dan memetakan tipe data, sehingga meningkatkan efisiensi pengembangan.
Topik ini menjelaskan cara mengelola katalog MaxCompute:
Batasan
-
Katalog MaxCompute memerlukan Ververica Runtime (VVR) versi 6.0.7 atau lebih baru.
-
Pembuatan database—yang sesuai dengan proyek di MaxCompute—tidak didukung.
-
Modifikasi skema tabel tidak didukung.
Membuat katalog MaxCompute
Anda dapat membuat katalog MaxCompute menggunakan antarmuka Konsol atau Flink SQL. Kami menyarankan menggunakan antarmuka Konsol.
Konsol
-
Buka halaman Catalogs.
-
Login ke Konsol Realtime Compute for Apache Flink. Di halaman Workspaces, temukan ruang kerja target lalu klik Console pada kolom Actions.
-
Di panel navigasi sebelah kiri, klik Catalogs.
-
-
Klik Create Catalog, pilih ODPS, lalu klik Next.
-
Konfigurasikan parameter-parameter berikut.
PentingParameter konfigurasi berikut tidak dapat diubah setelah katalog dibuat. Untuk mengubahnya, Anda harus menghapus dan membuat ulang katalog tersebut.
Parameter
Deskripsi
Tipe
Wajib
Catatan
Catalog name
Nama katalog MaxCompute.
String
Ya
Nama yang ditentukan pengguna dalam bahasa Inggris.
endpoint
Titik akhir untuk menghubungkan ke layanan MaxCompute.
String
Ya
Untuk daftar titik akhir, lihat Endpoints.
accessId
ID AccessKey Akun Alibaba Cloud yang digunakan untuk mengakses layanan MaxCompute.
String
Ya
Akun ini memerlukan izin administratif pada proyek yang akan diakses oleh katalog.
accessKey
Secret AccessKey Akun Alibaba Cloud yang digunakan untuk mengakses layanan MaxCompute.
String
Ya
Tidak ada.
Project
Proyek MaxCompute yang akan digunakan sebagai database default dalam katalog.
String
Tidak
Jika parameter ini tidak diatur, proyek default adalah
default.CatatanSetelah katalog dibuat, metadata akan menampilkan proyek yang Anda tentukan dan semua proyek lain yang dibuat oleh Akun Alibaba Cloud yang diberikan.
catalog.schema.enabled
Menentukan apakah database dalam katalog Flink dipetakan ke skema di MaxCompute.
Boolean
Tidak
Skema adalah mekanisme untuk mengorganisasi tabel, sumber daya, dan UDF dalam suatu proyek. Satu proyek dapat berisi beberapa skema. Untuk informasi selengkapnya, lihat Schema operations.
Nilai yang valid:
-
false (default): Memetakan database dalam katalog Flink ke proyek MaxCompute. Gunakan opsi ini untuk layanan MaxCompute yang fitur skemanya dinonaktifkan.
-
true: Memetakan database dalam katalog Flink ke skema MaxCompute. Gunakan opsi ini untuk layanan MaxCompute yang fitur skemanya diaktifkan.
-
-
Klik OK.
Setelah dibuat, katalog akan terdaftar di halaman Catalogs.
PentingJika pasangan AccessKey yang digunakan untuk membuat katalog tidak memiliki izin untuk proyek tertentu, informasi proyek tersebut tidak akan ditampilkan dalam metadata. Namun, hal ini tidak memengaruhi operasi baca dan tulis normal pada katalog.
Flink SQL
-
Di SQL Editor, masukkan perintah untuk membuat katalog MaxCompute.
CREATE CATALOG `<catalogName>` WITH ( 'type' = 'odps', 'endpoint' = '<odpsEndpoint>', 'accessId' = '<aliyunAccountAccessId>', 'accessKey' = '<aliyunAccountAccessKey>', 'project' = '<defaultProject>', 'userAccount' = '<RAMUserAccount>' );Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter
Deskripsi
Tipe
Wajib
Catatan
catalogName
Nama katalog MaxCompute.
String
Ya
Nama yang ditentukan pengguna dalam bahasa Inggris.
type
Tipe katalog.
String
Ya
Nilainya harus
odps.endpoint
Titik akhir untuk menghubungkan ke layanan MaxCompute.
String
Ya
Untuk daftar titik akhir, lihat Endpoints.
accessId
ID AccessKey Akun Alibaba Cloud yang digunakan untuk mengakses layanan MaxCompute.
String
Ya
Akun ini memerlukan izin administratif pada proyek yang akan diakses oleh katalog.
accessKey
Secret AccessKey Akun Alibaba Cloud yang digunakan untuk mengakses layanan MaxCompute.
String
Ya
Tidak ada.
project
Proyek MaxCompute yang akan digunakan sebagai database default dalam katalog.
String
Tidak
Jika parameter ini tidak diatur, proyek default adalah
default.userAccount
Nama Akun Alibaba Cloud atau Pengguna RAM.
String
Tidak
Jika Anda menggunakan pasangan AccessKey dari Pengguna RAM yang hanya memiliki izin admin pada proyek tertentu, Anda harus mengatur parameter ini ke nama akun. Contoh:
RAM$[<account_name>:]<RAM_name>. Katalog MaxCompute kemudian hanya akan menampilkan proyek yang dapat diakses oleh akun tersebut.Untuk informasi selengkapnya tentang pengelolaan izin pengguna di MaxCompute, lihat User planning and management.
-
Pilih pernyataan tersebut lalu klik Run di margin kiri.
CREATE CATALOG `<catalogName>` WITH ( 'type' = 'odps', 'endpoint' = '<odpsEndpoint>', 'accessId' = '<aliyunAccountAccessId>', 'accessKey' = '<aliyunAccountAccessKey>', 'project' = '<defaultProject>' );
Menampilkan Katalog MaxCompute
Antarmuka Konsol (disarankan)
-
Navigasi ke halaman Catalogs.
-
Login ke Konsol Realtime Compute for Apache Flink.
-
Temukan ruang kerja target lalu klik Console pada kolom Actions.
-
Klik Catalogs.
-
-
Di halaman Catalog List, periksa kolom Name dan Type.
Untuk melihat database dan tabel, klik View.
Flink SQL
-
Di SQL Editor, masukkan perintah berikut:
DESCRIBE `<catalogName>`.`<projectName>`.`<tableName>`;Parameter
Deskripsi
catalogName
Nama Katalog MaxCompute.
projectName
Nama proyek MaxCompute.
tableName
Nama tabel fisik MaxCompute.
-
Pilih pernyataan tersebut lalu klik Run di area nomor baris di sebelah kiri.
Setelah pernyataan berhasil dijalankan, skema tabel akan muncul di tab Results di bawah editor.
Menggunakan Katalog MaxCompute
Membuat tabel fisik MaxCompute
Saat Anda membuat tabel dalam katalog MaxCompute menggunakan pernyataan DDL Flink SQL, tabel fisik yang sesuai secara otomatis dibuat di proyek MaxCompute yang ditentukan. Tipe data Flink secara otomatis dikonversi ke tipe MaxCompute yang sesuai. Anda dapat membuat tabel non-partisi maupun tabel partisi.
Contoh pembuatan tabel non-partisi:
CREATE TABLE `<catalogName>`.`<projectName>`.`<tableName>` (
f0 INT,
f1 BIGINT,
f2 DOUBLE,
f3 STRING
);
Setelah pernyataan dieksekusi, Anda dapat melihat tabel di proyek MaxCompute yang sesuai. Tabel non-partisi dengan nama yang ditentukan dibuat. Nama kolom dan tipe datanya sesuai dengan yang didefinisikan dalam pernyataan DDL Flink.
Contoh pembuatan tabel partisi:
CREATE TABLE `<catalogName>`.`<projectName>`.`<tableName>` (
f0 INT,
f1 BIGINT,
f2 DOUBLE,
f3 STRING,
ds STRING
) PARTITIONED BY (ds);
Untuk membuat tabel partisi, tambahkan kolom partisi di akhir skema dalam DDL Flink dan deklarasikan dalam klausa PARTITIONED BY. Setelah pernyataan dieksekusi, Anda dapat melihat tabel di proyek MaxCompute yang sesuai. Tabel partisi dengan nama yang ditentukan dibuat. Dalam contoh ini, f0, f1, f2, dan f3 adalah kolom biasa, sedangkan ds adalah kolom partisi.
Nama kolom di MaxCompute semuanya huruf kecil, sedangkan nama kolom di Flink bersifat case-sensitive. Jika nama kolom dalam pernyataan DDL mengandung huruf kapital, nama tersebut secara otomatis dikonversi menjadi huruf kecil. Jika pernyataan DDL berisi beberapa kolom yang memiliki nama yang sama setelah dikonversi menjadi huruf kecil, maka akan terjadi error.
Membaca data dari tabel MaxCompute
Katalog MaxCompute dapat mengambil skema tabel fisik dari layanan MaxCompute. Hal ini memungkinkan Anda membaca data secara langsung tanpa perlu mendeklarasikan skema tabel di Flink. Contohnya:
SELECT * FROM `<catalogName>`.`<projectName>`.`<tableName>`;
Secara default, jika Anda tidak menentukan parameter apa pun, Flink akan membaca semua data dari semua partisi. Jika Anda perlu membaca dari partisi tertentu atau menggunakan mode sumber inkremental, Anda dapat menentukan opsi dalam komentar SQL, seperti yang dijelaskan dalam dokumentasi MaxCompute. Contohnya:
Membaca dari partisi tertentu:
SELECT * FROM `<catalogName>`.`<projectName>`.`<tableName>`
/*+ OPTIONS('partition' = 'ds=230613') */;
Menggunakan mode sumber inkremental:
SELECT * FROM `<catalogName>`.`<projectName>`.`<tableName>`
/*+ OPTIONS('startPartition' = 'ds=230613') */;
Menggunakan tabel dimensi:
SELECT * FROM `<anotherTable>` AS l LEFT JOIN
`<catalogName>`.`<projectName>`.`<tableName>`
/*+ OPTIONS('partition' = 'max_pt()', 'cache' = 'ALL') */
FOR SYSTEM_TIME AS OF l.proc_time AS r
ON l.id = r.id;
Anda dapat mengatur parameter tabel sumber dan tabel dimensi lain yang didukung oleh MaxCompute dengan cara yang sama. Perhatikan bahwa Katalog MaxCompute tidak menyimpan informasi watermark. Jika Anda perlu menentukan watermark saat membaca data dari tabel sumber, gunakan pernyataan CREATE TABLE ... LIKE .... Contohnya:
CREATE TABLE `<newTable>` ( WATERMARK FOR ts AS ts )
LIKE `<catalogName>`.`<projectName>`.`<tableName>`;
Dalam contoh ini, ts adalah kolom DATETIME dalam tabel fisik MaxCompute. Di Flink, Anda dapat menggunakan kolom ini sebagai event time dan menambahkan watermark. Setelah tabel dibuat, semua data yang dibaca dari newTable akan berisi watermark.
Menulis data ke tabel MaxCompute
Katalog MaxCompute mendukung penulisan data dalam mode partisi statis atau dinamis. Untuk informasi selengkapnya, lihat MaxCompute. Misalnya, jika tabel fisik MaxCompute memiliki dua level partisi, ds dan hh, Anda dapat menggunakan pernyataan berikut untuk menulis data:
-- Write to a static partition
INSERT INTO `<catalogName>`.`<projectName>`.`<tableName>`
/*+ OPTIONS('partition' = 'ds=20231024,hh=09') */
SELECT <otherColumns>, '20231024', '09' FROM `<anotherTable>`;
-- Write to a dynamic partition
INSERT INTO `<catalogName>`.`<projectName>`.`<tableName>`
/*+ OPTIONS('partition' = 'ds,hh') */
SELECT <otherColumns>, ds, hh FROM `<anotherTable>`;
Dalam pernyataan SELECT, letakkan kolom partisi setelah kolom biasa dalam urutan yang sama dengan level partisinya.
Menghapus katalog MaxCompute
Menghapus katalog MaxCompute tidak memengaruhi penerapan yang sedang berjalan. Namun, penerapan yang menggunakan tabel dari katalog tersebut akan gagal jika diterbitkan atau dimulai ulang. Lakukan dengan hati-hati.
Konsol
-
Buka halaman Catalogs.
-
Login ke Konsol Realtime Compute for Apache Flink.
-
Temukan ruang kerja target lalu klik Console pada kolom actions.
-
Klik Catalogs.
-
-
Di halaman Catalog list, temukan katalog target lalu klik Delete pada kolom actions.
-
Di dialog konfirmasi, klik Delete.
CatatanSetelah katalog dihapus, pastikan katalog tersebut tidak lagi muncul di panel navigasi Catalogs di sebelah kiri.
Flink SQL
-
Di SQL editor, masukkan pernyataan berikut.
DROP CATALOG `<catalogName>`;Ganti <catalogName> dengan nama katalog MaxCompute yang ingin Anda hapus.
PeringatanOperasi ini tidak memengaruhi penerapan yang sedang berjalan. Namun, penerapan yang menggunakan tabel dari katalog tersebut akan gagal jika diterbitkan atau dimulai ulang. Lakukan dengan hati-hati.
-
Pilih pernyataan tersebut, klik kanan, lalu pilih Run.
-
Di panel navigasi Catalogs di sebelah kiri, pastikan katalog tersebut tidak lagi muncul.
Pemetaan tipe data MaxCompute dan Flink
Untuk tipe data yang didukung MaxCompute, lihat Data types (Version 2.0).
MaxCompute ke Flink
Saat Anda membaca dari tabel fisik MaxCompute, tipe data bidangnya dipetakan ke tipe data Flink seperti yang ditunjukkan dalam tabel berikut.
|
Tipe MaxCompute |
Tipe Flink |
|
BOOLEAN |
BOOLEAN |
|
TINYINT |
TINYINT |
|
SMALLINT |
SMALLINT |
|
INT |
INTEGER |
|
BIGINT |
BIGINT |
|
FLOAT |
FLOAT |
|
DOUBLE |
DOUBLE |
|
DECIMAL(precision, scale) |
DECIMAL(precision, scale) |
|
CHAR(n) |
CHAR(n) |
|
VARCHAR(n) |
VARCHAR(n) |
|
STRING |
STRING |
|
BINARY |
BYTES |
|
DATE |
DATE |
|
DATETIME |
TIMESTAMP(3) |
|
TIMESTAMP |
TIMESTAMP(9) |
|
ARRAY |
ARRAY |
|
MAP |
MAP |
|
STRUCT |
ROW |
|
JSON |
STRING |
Flink ke MaxCompute
Saat Anda menggunakan DDL Flink untuk membuat tabel MaxCompute dalam katalog, tipe data Flink untuk bidang-bidang tersebut dipetakan ke tipe data MaxCompute seperti yang ditunjukkan dalam tabel berikut.
|
Tipe Flink |
tipe MaxCompute |
|
BOOLEAN |
BOOLEAN |
|
TINYINT |
TINYINT |
|
SMALLINT |
SMALLINT |
|
INTEGER |
INT |
|
BIGINT |
BIGINT |
|
FLOAT |
FLOAT |
|
DOUBLE |
DOUBLE |
|
DECIMAL(precision, scale) |
DECIMAL(precision, scale) |
|
CHAR(n) |
CHAR(n) |
|
VARCHAR / STRING |
STRING |
|
BINARY |
BINARY |
|
VARBINARY / BYTES |
BINARY |
|
DATE |
DATE |
|
TIMESTAMP(n<=3) |
DATETIME |
|
TIMESTAMP(3<n<=9) |
TIMESTAMP |
|
ARRAY |
ARRAY |
|
MAP |
MAP |
|
ROW |
STRUCT |