All Products
Search
Document Center

DataWorks:Migrasi data berformat JSON dari MongoDB ke MaxCompute

Last Updated:Mar 26, 2026

MongoDB menyimpan data sebagai dokumen JSON bersarang. Saat memigrasikan data ini ke MaxCompute, Anda perlu mengekstrak bidang tertentu menggunakan jalur notasi titik (dot-notation) dan memetakannya ke tipe kolom yang sesuai. Topik ini menjelaskan cara menggunakan layanan Data Integration dari DataWorks untuk mengonfigurasi pekerjaan sinkronisasi batch yang membaca bidang JSON bersarang dari koleksi MongoDB dan memuatnya ke dalam tabel MaxCompute.

Contoh ini menggunakan instans ApsaraDB for MongoDB di virtual private cloud (VPC) dan mengekstrak bidang store.bicycle.color dari dokumen JSON bersarang.

Prasyarat

Sebelum memulai, pastikan Anda telah:

Langkah 1: Siapkan data uji di MongoDB

Langkah ini mencakup pembuatan pengguna database, pengunggahan data JSON contoh ke MongoDB, dan verifikasi bahwa data tersebut dapat diakses sebelum Anda mengonfigurasi pekerjaan sinkronisasi.

Buat pengguna database

Buat pengguna di database MongoDB Anda agar DataWorks dapat terhubung dengannya. Jalankan perintah berikut:

db.createUser({user:"bookuser",pwd:"123456",roles:["user1"]})

Perintah ini membuat pengguna bernama bookuser dengan password 123456, yang ditetapkan ke role user1 yang memiliki izin akses data.

Unggah data uji

Jika Anda menggunakan instans ApsaraDB for MongoDB di VPC, ajukan terlebih dahulu titik akhir publik untuk instans tersebut. Kelompok resource bersama DataWorks terhubung ke MongoDB melalui jaringan publik.

Unggah dokumen JSON berikut ke koleksi userlog di database admin:

{
    "store": {
        "book": [
            {
                "category": "reference",
                "author": "Nigel Rees",
                "title": "Sayings of the Century",
                "price": 8.95
            },
            {
                "category": "fiction",
                "author": "Evelyn Waugh",
                "title": "Sword of Honour",
                "price": 12.99
            },
            {
                "category": "fiction",
                "author": "J. R. R. Tolkien",
                "title": "The Lord of the Rings",
                "isbn": "0-395-19395-8",
                "price": 22.99
            }
        ],
        "bicycle": {
            "color": "red",
            "price": 19.95
        }
    },
    "expensive": 10
}

Verifikasi data yang diunggah

Login ke database MongoDB di Konsol Data Management (DMS) dan jalankan perintah berikut untuk memastikan data telah diunggah:

db.userlog.find().limit(10)

Langkah 2: Konfigurasikan pekerjaan sinkronisasi di DataWorks

Langkah ini mencakup pembuatan tabel tujuan di MaxCompute, penambahan MongoDB sebagai sumber data, serta konfigurasi node sinkronisasi batch yang memetakan jalur bidang JSON ke kolom MaxCompute.

Buat tabel tujuan di MaxCompute

  1. Login ke Konsol DataWorks.

  2. Klik kanan alur kerja Anda dan pilih new > MaxCompute > table.

  3. Pada halaman create a table, pilih tipe engine dan masukkan table name.

  4. Pada halaman pengeditan tabel, klik DDL Statement.

  5. Pada kotak dialog DDL Statement, masukkan pernyataan berikut dan klik Generate Table Schema:

    Penting

    Nama tabel dalam pernyataan DDL harus sesuai dengan nilai Name yang Anda tetapkan pada halaman create a table.

    create table mqdata (mqdata string);
  6. Klik Commit to Production Environment.

Tambahkan sumber data MongoDB

Tambahkan instans MongoDB Anda sebagai sumber data di DataWorks. Untuk informasi selengkapnya, lihat Tambahkan sumber data MongoDB.

Buat node sinkronisasi batch

  1. Pada halaman analitik data, klik kanan alur kerja Anda dan pilih new > data integration > offline synchronization.

  2. Pada kotak dialog create a node, masukkan node name dan klik submit.

  3. Pada bilah navigasi atas, klik ikon Conversion script untuk beralih ke mode skrip.

  4. Dalam mode skrip, klik ikon **.

  5. Pada kotak dialog import Template, pilih SOURCE type, data source, target type, dan data source tujuan, lalu klik confirm.

  6. Ganti konten templat dengan skrip berikut:

    {
        "type": "job",
        "steps": [
            {
                "stepType": "mongodb",
                "parameter": {
                    "datasource": "mongodb_userlog",
                    "column": [
                        {
                            "name": "store.bicycle.color",
                            "type": "document.String"
                        }
                    ],
                    "collectionName": "userlog"
                },
                "name": "Reader",
                "category": "reader"
            },
            {
                "stepType": "odps",
                "parameter": {
                    "partition": "",
                    "isCompress": false,
                    "truncate": true,
                    "datasource": "odps_source",
                    "column": [
                        "mqdata"
                    ],
                    "emptyAsNull": false,
                    "table": "mqdata"
                },
                "name": "Writer",
                "category": "writer"
            }
        ],
        "version": "2.0",
        "order": {
            "hops": [
                {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        },
        "setting": {
            "errorLimit": {
                "record": ""
            },
            "speed": {
                "concurrent": 2,
                "throttle": false
            }
        }
    }

    Tabel berikut menjelaskan parameter utama:

    ParameterNilaiDeskripsi
    datasource (Reader)mongodb_userlogNama sumber data MongoDB Anda
    name (column)store.bicycle.colorJalur notasi titik ke bidang JSON yang akan diekstrak
    type (column)document.StringTipe data bidang. Gunakan document.String untuk bidang bersarang. Untuk bidang tingkat atas (seperti expensive), gunakan string
    collectionNameuserlogKoleksi MongoDB yang akan dibaca
    datasource (Writer)odps_sourceNama sumber data MaxCompute Anda
    column (Writer)mqdataKolom di tabel MaxCompute yang akan ditulis
    tablemqdataNama tabel MaxCompute

    Contoh berikut menunjukkan bagaimana dokumen JSON dipetakan ke tabel MaxCompute setelah migrasi:

    Bidang dokumen MongoDBNilaiKolom MaxComputeNilai yang disimpan
    store.bicycle.color"red"mqdatared
  7. Klik ikon ** untuk menjalankan pekerjaan.

  8. Periksa operation Log untuk memastikan pekerjaan selesai tanpa error.

Langkah 3: Verifikasi hasil migrasi

  1. Klik kanan alur kerja Anda dan pilih new > MaxCompute > ODPS SQL.

  2. Pada kotak dialog create a node, masukkan node name dan klik submit.

  3. Pada tab konfigurasi node, masukkan kueri berikut:

    SELECT * from mqdata;
  4. Klik ikon ** untuk menjalankan kueri.

  5. Periksa operation Log untuk memastikan kueri mengembalikan data yang dimigrasikan. Hasilnya harus berisi nilai red, yang diekstrak dari store.bicycle.color pada dokumen sumber.

Referensi tipe bidang JSON

Parameter type dalam konfigurasi kolom Reader mengontrol cara DataWorks menginterpretasikan nilai JSON yang diekstrak.

Lokasi bidangContoh bidangtype valueCatatan
Bersarang (non-tingkat atas)store.bicycle.colordocument.StringGunakan tipe akhir dari nilai yang diekstrak
Tingkat atasexpensivestringBidang tingkat atas menggunakan nama tipe sederhana