全部产品
Search
文档中心

Hologres:Praktik terbaik untuk mengimpor data MaxCompute secara berkala menggunakan DataWorks

更新时间:Nov 10, 2025

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

Peringatan

Pastikan layanan skema tidak diaktifkan pada tingkat penyewa atau proyek di MaxCompute. Untuk informasi lebih lanjut tentang skema, lihat Operasi Skema.

Prosedur

  1. Persiapkan data MaxCompute.

    1. Masuk ke Konsol DataWorks. Beralihlah ke wilayah tujuan. Di panel navigasi sebelah kiri, pilih Data Analytics And Services > Data Analytics. Klik Go To Data Analytics. Di panel navigasi sebelah kiri, klik ikon image untuk membuka halaman SQL Query.

    2. 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;
    3. 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';
  2. 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.

    1. Masuk ke halaman editor SQL Konsol HoloWeb.

    2. Klik ikon image di bawah tab SQL Editor untuk membuka jendela Temporary Query. Di bilah alat jendela kueri, pilih nama Instance Name dan Database Hologres.

    3. Di editor jendela Ad-hoc Query, masukkan pernyataan berikut dan klik Run.

      Pernyataan berikut menggunakan perintah import foreign schema untuk 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');
  3. Buat tabel internal di Hologres.

    Anda dapat membuat tabel internal di Hologres untuk menerima dan menyimpan data.

    1. Di halaman pengembangan HoloWeb, klik New SQL Window.

    2. 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.

      Catatan

      Pernyataan `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;
  4. Kembangkan tabel anak partisi baru.

    Pada langkah ini, Anda menggunakan modul SQL Hologres untuk menjadwalkan pekerjaan untuk tabel partisi.

    1. Masuk ke Konsol DataWorks, pergi ke halaman Pengembangan Data, dan buat node SQL Hologres. Untuk informasi lebih lanjut, lihat Node SQL Hologres.

    2. 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.

      Catatan

      Data 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;
  5. Konfigurasikan penjadwalan.

    Di halaman editor Hologres SQL, klik Schedule di sebelah kanan editor node untuk mengonfigurasi properti penjadwalan untuk node tersebut.

    Catatan

    Ubah 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.

  6. Publikasikan tugas penjadwalan.

    1. Di halaman editor Hologres SQL, klik ikon 保存 di bilah alat untuk menyimpan node.

    2. Klik ikon 提交 di bilah alat untuk mengirimkan node.

    3. Di kotak dialog Submit New Version, masukkan Change Description.

    4. Klik OK.

  7. Publikasikan tugas di Pusat Operasi.

    1. Di halaman editor Hologres SQL, klik O&M di pojok kanan atas bilah alat.

    2. Di halaman Operation Center, pilih Periodic Task O&M > Periodic Task di panel navigasi sebelah kiri.

    3. Di halaman Periodic Task, klik kanan node dan pilih Backfill Data > Current Node.

      补数据

    4. Di panel navigasi sebelah kiri, pilih Periodic Task O&M > Backfill Instance untuk melihat tugas yang sedang berjalan dan statusnya.

  8. Lihat data.

    Setelah tugas berhasil dieksekusi, tabel anak partisi untuk data partisi yang sesuai secara otomatis dibuat di Hologres.

    1. Pergi ke halaman Pengembangan Data dan buat node SQL Hologres. Untuk informasi lebih lanjut, lihat Node SQL Hologres.

    2. 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;