Tugas penjadwalan DataWorks memungkinkan Anda menetapkan waktu dan frekuensi transmisi data, memastikan integritas dan akurasi selama proses berlangsung. Anda dapat mengimpor data dari tabel partisi MaxCompute ke tabel partisi Hologres menggunakan DataWorks. Pendekatan ini menggabungkan keunggulan kedua platform, meningkatkan efisiensi dan keandalan pemrosesan data.
Prasyarat
Anda telah membeli dan mengaktifkan instans Hologres. Untuk informasi lebih lanjut, lihat Beli Instans Hologres.
Anda telah mengaktifkan MaxCompute dan membuat proyek. Untuk informasi lebih lanjut, lihat Aktifkan MaxCompute dan DataWorks.
Anda telah mengaktifkan DataWorks dan membuat ruang kerja. Untuk informasi lebih lanjut, lihat Buat Ruang Kerja.
Peringatan
Pastikan layanan skema tidak diaktifkan pada tingkat penyewa atau proyek di MaxCompute. Untuk informasi lebih lanjut tentang skema, lihat Operasi Skema.
Prosedur
Persiapkan data MaxCompute.
Masuk ke Konsol DataWorks. Beralihlah ke wilayah tujuan. Di panel navigasi sebelah kiri, pilih . Klik Go To Data Analytics. Di panel navigasi sebelah kiri, klik ikon
untuk membuka halaman SQL Query.Di halaman SQL Query, masukkan pernyataan SQL untuk membuat tabel partisi, lalu klik Run.
Contoh ini menggunakan tabel partisi dwd_product_movie_basic_info dari dataset publik MaxCompute public_data. Kode berikut menunjukkan skema tabel dari dwd_product_movie_basic_info.
-- DDL untuk tabel partisi MaxCompute CREATE TABLE IF NOT EXISTS public_data.dwd_product_movie_basic_info( movie_name STRING COMMENT 'Nama film', director STRING COMMENT 'Sutradara', scriptwriter STRING COMMENT 'Penulis naskah', area STRING COMMENT 'Wilayah/negara produksi', actors STRING COMMENT 'Aktor', `type` STRING COMMENT 'Tipe', movie_length STRING COMMENT 'Durasi film', movie_date STRING COMMENT 'Tanggal rilis', movie_language STRING COMMENT 'Bahasa', imdb_url STRING COMMENT 'URL IMDb' ) PARTITIONED BY (ds STRING) STORED AS ALIORC;Di halaman SQL Query, masukkan pernyataan SQL berikut untuk melihat data dalam tabel partisi, lalu klik Run.
Lihat data di partisi
20170112.SELECT * FROM public_data.dwd_product_movie_basic_info WHERE ds = '20170112';
Buat tabel asing di Hologres.
Anda dapat membuat tabel eksternal di Hologres untuk memetakan tabel sumber MaxCompute. Urutan bidang dan tipe data dalam tabel eksternal harus sesuai dengan yang ada di tabel MaxCompute.
Masuk ke halaman editor SQL Konsol HoloWeb.
Klik ikon
di bawah tab SQL Editor untuk membuka jendela Temporary Query. Di bilah alat jendela kueri, pilih nama Instance Name dan Database Hologres.Di editor jendela Ad-hoc Query, masukkan pernyataan berikut dan klik Run.
Pernyataan berikut menggunakan perintah
import foreign schemauntuk membuat tabel asing Hologres bernama dwd_product_movie_basic_info.import FOREIGN schema public_data limit TO (dwd_product_movie_basic_info) FROM server odps_server INTO public options(if_table_exist 'update');
Buat tabel internal di Hologres.
Anda dapat membuat tabel internal di Hologres untuk menerima dan menyimpan data.
Di halaman pengembangan HoloWeb, klik New SQL Window.
Di halaman baru Ad-hoc Query, pilih Instance Name dan Database. Kemudian, masukkan pernyataan berikut di editor SQL dan klik Run.
Contoh ini mengimpor tabel partisi MaxCompute ke Hologres. Oleh karena itu, tabel internal yang Anda buat di Hologres juga harus berupa tabel partisi.
CatatanPernyataan `CREATE TABLE` berikut adalah contoh sederhana. Anda dapat membuat tabel dan menetapkan indeks yang sesuai jika diperlukan untuk mencapai kinerja kueri yang lebih baik.
BEGIN; CREATE TABLE "public"."holo_dwd_product_movie_basic_info" ( "movie_name" text, "director" text, "scriptwriter" text, "area" text, "actors" text, "type" text, "movie_length" text, "movie_date" text, "movie_language" text, "imdb_url" text, "ds" text ) PARTITION BY LIST (ds); CALL SET_TABLE_PROPERTY('"public"."holo_dwd_product_movie_basic_info"', 'orientation', 'column'); comment ON COLUMN "public"."holo_dwd_product_movie_basic_info"."movie_name" IS 'Nama film'; comment ON COLUMN "public"."holo_dwd_product_movie_basic_info"."director" IS 'Sutradara'; comment ON COLUMN "public"."holo_dwd_product_movie_basic_info"."scriptwriter" IS 'Penulis naskah'; comment ON COLUMN "public"."holo_dwd_product_movie_basic_info"."area" IS 'Wilayah/negara produksi'; comment ON COLUMN "public"."holo_dwd_product_movie_basic_info"."actors" IS 'Aktor'; comment ON COLUMN "public"."holo_dwd_product_movie_basic_info"."type" IS 'Tipe'; comment ON COLUMN "public"."holo_dwd_product_movie_basic_info"."movie_length" IS 'Durasi film'; comment ON COLUMN "public"."holo_dwd_product_movie_basic_info"."movie_date" IS 'Tanggal rilis'; comment ON COLUMN "public"."holo_dwd_product_movie_basic_info"."movie_language" IS 'Bahasa'; comment ON COLUMN "public"."holo_dwd_product_movie_basic_info"."imdb_url" IS 'ID IMDb'; COMMIT;
Kembangkan tabel anak partisi baru.
Pada langkah ini, Anda menggunakan modul SQL Hologres untuk menjadwalkan pekerjaan untuk tabel partisi.
Masuk ke Konsol DataWorks, pergi ke halaman Pengembangan Data, dan buat node SQL Hologres. Untuk informasi lebih lanjut, lihat Node SQL Hologres.
Di halaman editor node, masukkan pernyataan berikut.
Hologres tidak mendukung penulisan data langsung ke tabel partisi induk. Anda harus membuat tabel anak partisi di Hologres yang sesuai dengan nilai kunci partisi di tabel sumber MaxCompute. Kemudian, Anda dapat mengimpor data partisi ke tabel anak yang sesuai. Nilai kunci partisi dikontrol oleh parameter ${bizdate}. Sistem penjadwalan secara otomatis memberikan nilai untuk parameter ini untuk penjadwalan berkala. Untuk informasi lebih lanjut tentang parameter penjadwalan, lihat Format yang Didukung untuk Parameter Penjadwalan.
CatatanData partisi yang diimpor harus sesuai dengan nilai kunci partisi. Pada contoh ini, kunci partisi adalah ds. Jika tidak, akan terjadi kesalahan.
Logika impor data dapat bervariasi tergantung pada skenario. Berikut dua skenario yang disediakan sebagai referensi. Anda dapat memilih salah satu sesuai kebutuhan.
Skenario 1: Impor data partisi baru.
-- Buat tabel anak partisi sementara. BEGIN; CREATE TABLE IF NOT EXISTS "public".tmp_holo_dwd_product_movie_basic_info_${bizdate} ( "movie_name" text, "director" text, "scriptwriter" text, "area" text, "actors" text, "type" text, "movie_length" text, "movie_date" text, "movie_language" text, "imdb_url" text, "ds" text ); COMMIT; -- Perbarui data tabel asing. import FOREIGN schema public_data limit TO (dwd_product_movie_basic_info) FROM server odps_server INTO public options(if_table_exist 'update'); -- Tunggu 30 detik sebelum mengimpor ke Hologres. Ini mencegah kegagalan sinkronisasi yang disebabkan oleh pembaruan cache metadata Hologres yang lambat. SELECT pg_sleep(30); -- Impor data MaxCompute ke tabel anak partisi sementara. INSERT INTO "public".tmp_holo_dwd_product_movie_basic_info_${bizdate} SELECT "movie_name", "director", "scriptwriter", "area", "actors", "type", "movie_length", "movie_date", "movie_language", "imdb_url", "ds" FROM "public".dwd_product_movie_basic_info WHERE ds='${bizdate}'; -- Impor data partisi baru. BEGIN; ALTER TABLE tmp_holo_dwd_product_movie_basic_info_${bizdate} RENAME TO holo_dwd_product_movie_basic_info_${bizdate}; -- Lampirkan tabel anak partisi sementara ke tabel partisi induk. ALTER TABLE holo_dwd_product_movie_basic_info ATTACH PARTITION holo_dwd_product_movie_basic_info_${bizdate} FOR VALUES in ('${bizdate}'); COMMIT;Skenario 2: Segarkan data partisi historis.
-- Buat tabel anak partisi sementara. BEGIN; CREATE TABLE IF NOT EXISTS "public".tmp_holo_dwd_product_movie_basic_info_${bizdate} ( "movie_name" text, "director" text, "scriptwriter" text, "area" text, "actors" text, "type" text, "movie_length" text, "movie_date" text, "movie_language" text, "imdb_url" text, "ds" text ); COMMIT; -- Perbarui data tabel asing. import FOREIGN schema public_data limit TO (dwd_product_movie_basic_info) FROM server odps_server INTO public options(if_table_exist 'update'); -- Tunggu 30 detik sebelum mengimpor ke Hologres. Ini mencegah kegagalan sinkronisasi yang disebabkan oleh pembaruan cache metadata Hologres yang lambat. SELECT pg_sleep(30); -- Impor data MaxCompute ke tabel anak partisi sementara. INSERT INTO "public".tmp_holo_dwd_product_movie_basic_info_${bizdate} SELECT "movie_name", "director", "scriptwriter", "area", "actors", "type", "movie_length", "movie_date", "movie_language", "imdb_url", "ds" FROM "public".dwd_product_movie_basic_info WHERE ds='${bizdate}'; -- Segarkan data partisi historis. BEGIN; ALTER TABLE IF EXISTS holo_dwd_product_movie_basic_info DETACH PARTITION holo_dwd_product_movie_basic_info_${bizdate}; DROP TABLE IF EXISTS holo_dwd_product_movie_basic_info_${bizdate}; ALTER TABLE tmp_holo_dwd_product_movie_basic_info_${bizdate} RENAME TO holo_dwd_product_movie_basic_info_${bizdate}; -- Lampirkan tabel anak partisi ke tabel partisi induk. ALTER TABLE holo_dwd_product_movie_basic_info ATTACH PARTITION holo_dwd_product_movie_basic_info_${bizdate} FOR VALUES in ('${bizdate}'); COMMIT;
Konfigurasikan penjadwalan.
Di halaman editor Hologres SQL, klik Schedule di sebelah kanan editor node untuk mengonfigurasi properti penjadwalan untuk node tersebut.
CatatanUbah parameter berikut dan pertahankan nilai default untuk yang lainnya.
Properti Dasar
Parameter
Nilai
Parameter
bizdate=${yyyymmdd}
Properti Waktu

Parameter
Nilai
Mode Pembuatan Instans
Buat Instans Setelah Penyebaran
Properti Jalankan Ulang
Jalankan ulang tidak diizinkan setelah berhasil. Jalankan ulang diizinkan setelah gagal.
Jadwal Waktu
00:05
Dependensi Penjadwalan
Anda dapat menetapkan dependensi ke node root. Anda juga dapat memilih node induk yang ada sesuai kebutuhan. Pertama, atur Parse Code ke Ya, lalu klik Parse Code. Node root akan dianalisis secara otomatis. Terakhir, atur Parse Code ke Tidak.
Publikasikan tugas penjadwalan.
Di halaman editor Hologres SQL, klik ikon
di bilah alat untuk menyimpan node.Klik ikon
di bilah alat untuk mengirimkan node.Di kotak dialog Submit New Version, masukkan Change Description.
Klik OK.
Publikasikan tugas di Pusat Operasi.
Di halaman editor Hologres SQL, klik O&M di pojok kanan atas bilah alat.
Di halaman Operation Center, pilih Periodic Task O&M > Periodic Task di panel navigasi sebelah kiri.
Di halaman Periodic Task, klik kanan node dan pilih Backfill Data > Current Node.

Di panel navigasi sebelah kiri, pilih Periodic Task O&M > Backfill Instance untuk melihat tugas yang sedang berjalan dan statusnya.
Lihat data.
Setelah tugas berhasil dieksekusi, tabel anak partisi untuk data partisi yang sesuai secara otomatis dibuat di Hologres.
Pergi ke halaman Pengembangan Data dan buat node SQL Hologres. Untuk informasi lebih lanjut, lihat Node SQL Hologres.
Di halaman editor node, masukkan pernyataan berikut untuk menanyakan data.
Lihat data di tabel anak partisi.
SELECT * FROM holo_dwd_product_movie_basic_info_20170112;Lihat total data di tabel partisi induk.
SELECT COUNT (*) FROM holo_dwd_product_movie_basic_info;