全部产品
Search
文档中心

Migration Hub:Impor DataWorks Spec kustom ke DataWorks

更新时间:Nov 10, 2025

Topik ini menjelaskan cara menggunakan alat migrasi penjadwalan LHM untuk mengimpor DataWorks Spec kustom ke DataWorks.

1. Bangun dan uraikan DataWorks Spec

Alat migrasi LHM memungkinkan Anda membuat file deskripsi berdasarkan struktur alur kerja standar DataWorks—dikenal sebagai DataWorks Spec—lalu mengimpornya. Sebelum impor, LHM mengurai DataWorks Spec dan menghasilkan paket migrasi standar.

Setelah paket migrasi standar dihasilkan, tidak diperlukan transformasi lebih lanjut. Anda dapat langsung menjalankan alat impor untuk menulis alur kerja ke DataWorks.

1.1 Definisi DataWorks Spec

https://github.com/aliyun/dataworks-spec/tree/master

1.2 Buat paket input

  1. Buat definisi alur kerja berdasarkan spesifikasi DataWorks Spec dan simpan sebagai file JSON.

  2. Letakkan semua file JSON alur kerja dalam satu folder tanpa subfolder, lalu kompres folder tersebut menjadi file .zip.

{
  "version": "1.1.0",
  "kind": "CycleWorkflow",
  "spec": {
    "nodes": [],
    "workflows": [
      {
        "id": "3451387436863448",
        "outputs": {
          "nodeOutputs": [
            {
              "artifactType": "NodeOutput",
              "data": "3451387436863448",
              "refTableName": "example_hive_operator"
            }
          ]
        },
        "nodes": [
          {
            "id": "2105761738722077",
            "name": "run_first",
            "instanceMode": "T+1",
            "rerunMode": "FailureAllowed",
            "rerunTimes": 0,
            "rerunInterval": 300000,
            "trigger": {
              "type": "Scheduler",
              "startTime": "2025-03-30 00:00:00",
              "timezone": "UTC"
            },
            "runtimeResource": {
              "resourceGroup": "Serverless_res_group_651147510078336_710919704558240"
            },
            "script": {
              "path": "run_first",
              "runtime": {
                "command": "EMR_HIVE"
              },
              "parameters": [],
              "content": "\n    create database if not exists airflow;\n    use airflow;\n    drop table if exists test_hive;\n    create table test_hive(name string);\n    insert into test_hive values('studio');\n    "
            },
            "outputs": {
              "nodeOutputs": [
                {
                  "data": "2105761738722077"
                },
                {
                  "artifactType": "NodeOutput",
                  "data": "example_hive_operator.run_first.run_second",
                  "refTableName": "run_first"
                }
              ]
            },
            "type": "EMR_HIVE"
          },
          {
            "id": "3326558787158921",
            "name": "run_second",
            "instanceMode": "T+1",
            "rerunMode": "FailureAllowed",
            "rerunTimes": 0,
            "rerunInterval": 300000,
            "trigger": {
              "type": "Scheduler",
              "startTime": "2025-03-30 00:00:00",
              "timezone": "UTC"
            },
            "runtimeResource": {
              "resourceGroup": "Serverless_res_group_651147510078336_710919704558240"
            },
            "script": {
              "path": "run_second",
              "runtime": {
                "command": "EMR_HIVE"
              },
              "parameters": [],
              "content": "\n    use airflow;\n    add jar oss://emr-studio-example/hive-udf-1.0-SNAPSHOT.jar;\n    create temporary function simpleudf AS 'com.aliyun.emr.hive.udf.SimpleUDFExample';\n    show functions like '*udf';\n    select simpleudf(name) from test_hive;\n    "
            },
            "outputs": {
              "nodeOutputs": [
                {
                  "data": "3326558787158921"
                }
              ]
            },
            "type": "EMR_HIVE"
          }
        ],
        "dependencies": [
          {
            "nodeId": "3326558787158921",
            "depends": [
              {
                "type": "Normal",
                "output": "2105761738722077",
                "refTableName": "run_first"
              }
            ]
          }
        ],
        "script": {
          "path": "Airflow_Import_V3/example_hive_operator",
          "runtime": {
            "command": "WORKFLOW"
          },
          "parameters": []
        },
        "name": "example_hive_operator",
        "trigger": {
          "type": "Scheduler",
          "cron": "0 0 0 * * ?",
          "timezone": "UTC",
          "delaySeconds": 0
        },
        "type": "CycleWorkflow",
        "strategy": {
          "timeout": 0,
          "instanceMode": "T+1",
          "rerunMode": "Allowed",
          "rerunTimes": 0,
          "rerunInterval": 0,
          "failureStrategy": "Continue"
        }
      }
    ],
    "flow": [
      {
        "nodeId": "3451387436863448",
        "depends": []
      }
    ]
  }
}

Contoh perintah kompresi

zip -q -r -m -o <NamaPaket>.zip NamaPaket

1.3 Buat item konfigurasi

Gunakan item konfigurasi berikut tanpa mengubah isinya. Karena informasi penjadwalan telah dijelaskan dalam DataWorks Spec kustom, Anda tidak perlu menambahkan banyak item konfigurasi.

{
  "schedule_datasource": {
    "name": "MySpec",
    "type": "DataWorks",
    "operaterType": "MANUAL"
  },
  "conf": {}
}

1.4 Jalankan alat penguraian penjadwalan

Jalankan alat penguraian dari baris perintah menggunakan perintah berikut:

sh ./bin/run.sh read \
-c ./conf/<file_konfigurasi_anda>.json \
-f ./data/0_OriginalPackage/<paket_input>.zip \
-o ./data/1_ReaderOutput/<paket_migrasi_standar>.zip \
-t dw-newidea-reader

Parameter -c menentukan path ke file konfigurasi. Parameter -f menentukan path ke paket input. Parameter -o menentukan path tempat paket migrasi standar dihasilkan. Parameter -t menentukan nama plugin discovery.

Sebagai contoh, untuk mengurai proyek A:

sh ./bin/run.sh read \
-c ./conf/projectA_read.json \
-f ./data/0_OriginalPackage/projectA_DataworksSpec.zip \
-o ./data/1_ReaderOutput/projectA_ReaderOutput.zip \
-t dw-newidea-reader

Alat discovery menampilkan informasi proses selama eksekusi. Anda dapat memeriksa kesalahan apa pun yang terjadi selama proses.

1.5 Lihat hasil penguraian

Anda dapat membuka paket ReaderOutput.zip yang dihasilkan di direktori ./data/1_ReaderOutput/ untuk melihat pratinjau hasil penguraian.

Laporan statistik memberikan ringkasan informasi dasar mengenai alur kerja, node, sumber daya, fungsi, dan sumber data dari DataWorks Spec.

Folder data/project berisi struktur data standar dari informasi penjadwalan dalam DataWorks Spec.

Laporan statistik menyediakan dua fitur khusus:

1. Anda dapat mengubah beberapa properti alur kerja dan node dalam laporan. Bidang yang dapat diedit ditampilkan dalam warna biru. Alat akan menerapkan perubahan properti ini saat Anda mengimpor data ke DataWorks.

2. Anda dapat melewatkan alur kerja selama impor dengan menghapus baris yang sesuai dari tabel anak alur kerja dalam laporan. Ini berfungsi sebagai blacklist alur kerja. Catatan: Jika alur kerja saling bergantung, Anda harus mengimpornya dalam batch yang sama. Jangan memisahkannya menggunakan blacklist karena hal ini dapat menyebabkan kesalahan.

Untuk informasi lebih lanjut, lihat Menggunakan laporan ikhtisar migrasi penjadwalan untuk memperbarui properti penjadwalan.

2. Impor ke DataWorks

Alat impor mendukung beberapa operasi tulis dan secara otomatis membuat atau memperbarui alur kerja dalam mode overwrite.

2.1 Prasyarat

2.1.1 DataWorks Spec berhasil diurai

DataWorks Spec telah diurai dan file ReaderOutput.zip telah dihasilkan.

(Opsional tetapi disarankan) Anda dapat membuka paket output penguraian dan melihat laporan statistik untuk memverifikasi bahwa cakupan migrasi telah diurai dengan benar.

2.1.2 Konfigurasi DataWorks

Lakukan tindakan berikut di DataWorks:

1. Buat ruang kerja.

2. Buat Pasangan Kunci Akses (AK dan SK) dan berikan izin administrator untuk ruang kerja tersebut. Kami sangat menyarankan membuat Pasangan Kunci Akses yang terikat pada akun Anda untuk menyederhanakan pemecahan masalah operasi tulis.

3. Di ruang kerja, buat sumber data, sambungkan sumber daya komputasi, dan buat kelompok sumber daya.

4. Di ruang kerja, unggah sumber daya file dan buat Fungsi yang Ditentukan Pengguna (UDF).

2.1.3 Periksa konektivitas jaringan

Verifikasi koneksi ke Titik Akhir DataWorks.

Daftar titik akhir:

Titik Akhir

ping dataworks.aliyuncs.com

2.2 Konfigurasi impor

Di folder `conf` direktori proyek Anda, buat file konfigurasi dalam format JSON, seperti `writer.json`.

  • Sebelum menggunakan file tersebut, hapus komentar dari kode JSON.

{
  "schedule_datasource": {
    "name": "YourDataWorks", // Beri nama sumber data DataWorks Anda.
    "type": "DataWorks",
    "properties": {
      "endpoint": "dataworks.cn-hangzhou.aliyuncs.com", // Titik akhir layanan
      "project_id": "YourProjectId", // ID ruang kerja
      "project_name": "YourProject", // Nama ruang kerja
      "ak": "************", // AK
      "sk": "************" // SK
    },
    "operaterType": "MANUAL"
  },
  "conf": {
    "di.resource.group.identifier": "Serverless_res_group_***_***", // Kelompok sumber daya penjadwalan
    "resource.group.identifier": "Serverless_res_group_***_***", // Kelompok sumber daya Data Integration
    "dataworks.node.type.xls": "/Software/bwm-client/conf/CodeProgramType.xls", // Path ke tabel tipe node DataWorks
    "qps.limit": 5 // Batas QPS untuk permintaan API ke DataWorks
  }
}

2.2.1 Titik Akhir

Pilih titik akhir berdasarkan wilayah ruang kerja DataWorks Anda. Untuk informasi lebih lanjut, lihat dokumen berikut:

Titik Akhir

2.2.2 ID dan nama ruang kerja

Buka konsol DataWorks dan akses halaman detail ruang kerja. Anda dapat menemukan ID dan nama ruang kerja di bagian Informasi Dasar di sebelah kanan.

2.2.3 Buat dan otorisasi Pasangan Kunci Akses

Buat Pasangan Kunci Akses (AK dan SK) di halaman pengguna Anda. Pasangan Kunci Akses harus memiliki izin baca dan tulis administrator untuk ruang kerja DataWorks target.

Manajemen izin dilakukan di dua lokasi. Jika Anda menggunakan pengguna Resource Access Management (RAM), Anda harus terlebih dahulu memberikan izin kepada pengguna RAM untuk melakukan operasi DataWorks.

Halaman Kebijakan Akses: https://ram.console.alibabacloud.com/policies

Kemudian, di ruang kerja DataWorks, Anda dapat menetapkan izin ruang kerja ke akun tersebut.

Catatan: Anda dapat menetapkan kebijakan akses jaringan untuk AccessKey Anda. Pastikan alamat IP mesin yang menjalankan alat migrasi termasuk dalam kebijakan akses.

2.2.4 Kelompok sumber daya

Di halaman detail ruang kerja DataWorks, buka halaman Kelompok Sumber Daya dari bilah menu di sebelah kiri. Sambungkan kelompok sumber daya dan catat ID-nya.

Kelompok sumber daya serbaguna dapat digunakan baik untuk penjadwalan node maupun Data Integration. Anda dapat mengatur kelompok sumber daya penjadwalan (`resource.group.identifier`) dan kelompok sumber daya Data Integration (`di.resource.group.identifier`) ke kelompok sumber daya serbaguna yang sama.

2.2.5 Pengaturan QPS

Alat ini mengimpor data dengan memanggil API DataWorks. Versi DataWorks yang berbeda memiliki batasan tersendiri terhadap permintaan per detik (QPS) dan jumlah panggilan harian untuk operasi OpenAPI baca dan tulis. Untuk informasi lebih lanjut, lihat Batasan.

Untuk Edisi Dasar, Standar, dan Profesional DataWorks, Anda dapat mengatur `"qps.limit"` menjadi `5`. Untuk Edisi Perusahaan, Anda dapat mengatur `"qps.limit"` menjadi `20`.

Catatan: Jangan menjalankan beberapa alat impor secara bersamaan.

2.2.6 Pengaturan ID tipe node DataWorks

Di DataWorks, beberapa tipe node diberi TypeId yang berbeda di wilayah yang berbeda. TypeID spesifik ditentukan oleh antarmuka Pengembangan Data DataWorks. Atribut ini terutama berlaku untuk node database. Untuk informasi lebih lanjut, lihat Node database.

Sebagai contoh, node MySQL memiliki NodeTypeId 1000039 di wilayah Tiongkok (Hangzhou) dan 1000041 di wilayah Tiongkok (Shenzhen).

Untuk menangani perbedaan regional ini di DataWorks, alat ini menyediakan cara bagi Anda untuk mengonfigurasi tabel TypeId node yang digunakan.

Anda dapat mengimpor tabel tersebut menggunakan item konfigurasi di alat impor:

"conf": {
    "dataworks.node.type.xls": "/Software/bwm-client/conf/CodeProgramType.xls" // Path ke tabel tipe node DataWorks
 }

Untuk mendapatkan ID tipe node dari antarmuka Pengembangan Data DataWorks, Anda dapat membuat alur kerja baru dan menambahkan node baru ke dalamnya. Setelah menyimpan node tersebut, Anda dapat melihat Spec alur kerja tersebut.

Jika tipe node dikonfigurasi secara salah, kesalahan berikut muncul saat Anda memublikasikan alur kerja.

2.3 Jalankan alat impor DataWorks

Jalankan alat impor dari baris perintah menggunakan perintah berikut:

sh ./bin/run.sh write \
-c ./conf/<file_konfigurasi_anda>.json \
-f ./data/1_ReaderOutput/<paket_output_hasil_penguraian>.zip \
-o ./data/4_WriterOutput/<paket_penyimpanan_hasil_impor>.zip \
-t dw-newide-writer

Parameter -c menentukan path ke file konfigurasi. Parameter -f menentukan path ke paket ReaderOutput. Parameter -o menentukan path tempat paket WriterOutput disimpan. Parameter -t menentukan nama plugin pengiriman.

Sebagai contoh, untuk mengimpor proyek A ke DataWorks:

sh ./bin/run.sh write \
-c ./conf/projectA_write.json \
-f ./data/1_ReaderOutput/projectA_ReaderOutput.zip \
-o ./data/4_WriterOutput/projectA_WriterOutput.zip \
-t dw-newide-writer

Alat impor menampilkan informasi proses selama eksekusi. Anda dapat memeriksa kesalahan apa pun. Setelah impor selesai, baris perintah menampilkan statistik impor yang berhasil dan gagal. Catatan: Jika beberapa node gagal diimpor, hal ini tidak memengaruhi keseluruhan proses. Anda dapat memodifikasi node tersebut secara manual di DataWorks jika hanya sedikit node yang gagal diimpor.

2.4 Lihat hasil impor

Setelah impor selesai, Anda dapat melihat hasilnya di DataWorks. Anda juga dapat memantau proses impor saat setiap alur kerja diimpor. Jika Anda menemukan masalah dan perlu menghentikan impor, Anda dapat menjalankan perintah `jps` untuk menemukan `BwmClientApp`, lalu gunakan perintah `kill -9` untuk menghentikan proses.

5 Tanya Jawab

5.1 Pengembangan sedang berlangsung di sumber. Bagaimana cara mengirimkan perubahan inkremental ke DataWorks?

Alat migrasi berjalan dalam mode overwrite. Untuk mengirimkan perubahan inkremental dari sumber ke DataWorks, Anda dapat menjalankan ulang proses ekspor, transformasi, dan impor. Alat mencocokkan alur kerja berdasarkan path lengkapnya untuk memutuskan apakah akan membuat alur kerja baru atau memperbarui yang sudah ada. Untuk melakukan migrasi perubahan dengan benar, Anda tidak boleh memindahkan alur kerja tersebut.

5.2 Pengembangan sedang berlangsung di sumber, dan saya juga memodifikasi serta mengelola alur kerja di DataWorks. Apakah migrasi inkremental akan menimpa perubahan saya di DataWorks?

Ya, akan. Alat migrasi berjalan dalam mode overwrite. Kami menyarankan agar Anda hanya melakukan perubahan di DataWorks setelah seluruh migrasi selesai. Atau, Anda dapat melakukan migrasi secara bertahap. Setelah satu batch alur kerja dimigrasikan dan Anda memastikan bahwa alur kerja tersebut tidak akan ditimpa lagi, Anda dapat mulai memodifikasi alur kerja tersebut di DataWorks. Batch yang berbeda tidak saling memengaruhi.

5.3 Impor paket lengkap memakan waktu terlalu lama. Dapatkah saya hanya mengimpor sebagian saja?

Ya, bisa. Anda dapat melakukan impor parsial dengan mengedit paket impor secara manual. Di folder `data/project/workflow`, simpan hanya alur kerja yang ingin diimpor dan hapus sisanya. Kemudian, kompres ulang folder tersebut dan jalankan alat impor. Catatan: Alur kerja yang saling bergantung harus diimpor bersama-sama. Jika tidak, garis keturunan node antar alur kerja akan hilang.