All Products
Search
Document Center

:Verifikasi kelengkapan data di MaxCompute

Last Updated:Mar 26, 2026

Saat mengirimkan data dari Simple Log Service ke MaxCompute, verifikasi kelengkapan data dilakukan pada tingkat partisi. Pemeriksaan ini memastikan bahwa seluruh data untuk partisi tertentu dalam tabel MaxCompute telah dikirimkan.

Verifikasi kelengkapan data

Bidang tereservasi

Menggunakan bidang __partition_time__

Nilai __partition_time__ berasal dari bidang time suatu log. Simple Log Service menghitung nilai ini dengan membulatkan ke bawah waktu event log berdasarkan string format waktu yang ditentukan. Waktu event adalah waktu aktual pembuatan log, bukan waktu pengiriman data atau penulisan ke server.

Sebagai contoh, jika waktu event log adalah 2017-05-19 10:43:00, string format partisi diatur ke yyyy_MM_dd_HH_mm, dan data dikirimkan setiap jam, MaxCompute menyimpan log tersebut di partisi 2017_05_19_10_00, terlepas dari kapan log tersebut ditulis ke server. Untuk detail lebih lanjut mengenai perhitungan ini, lihat Kirim log ke MaxCompute (legacy).

Jika Anda menulis log secara real time alih-alih mengirimkan data historis, gunakan salah satu metode berikut untuk memverifikasi apakah data dalam suatu partisi telah lengkap:

  • Gunakan API, SDK, atau Konsol. Ini adalah metode yang direkomendasikan.

    Gunakan API, SDK, atau Konsol untuk mendapatkan daftar tugas pengiriman untuk Proyek dan penyimpanan log tertentu. API mengembalikan daftar task, yang kemudian divisualisasikan oleh Konsol. Berikut ini contoh respons API:

    {
      "count" : 10,
      "total" : 20,
      "statistics" : {
          "running" : 0,
          "success" : 20,
          "fail" : 0 
      }
      "tasks" : [
          ...
          {
              "id" : "abcdefghijk",
              "taskStatus" : "success",
              "taskMessage" : "",
              "taskCreateTime" : 1448925013,
              "taskLastDataReceiveTime" : 1448915013,
              "taskFinishTime" : 1448926013
          },
          {
              "id" : "xfegeagege",
              "taskStatus" : "success",
              "taskMessage" : "",
              "taskCreateTime" : 1448926813,
              "taskLastDataReceiveTime" : 1448930000,
              "taskFinishTime" : 1448936910
          }
      ]
    }

    taskLastDataReceiveTime menunjukkan waktu saat Simple Log Service menerima data. Anda dapat menggunakan parameter ini untuk menentukan apakah seluruh data sebelum waktu T telah dikirimkan ke tabel MaxCompute.

    • Anda dapat menganggap data sebelum waktu T telah lengkap jika semua tugas pengiriman dengan taskLastDataReceiveTime lebih awal dari T + 300s memiliki status success. Buffer 300 detik ini mengakomodasi potensi percobaan ulang akibat error sementara.

    • Jika ada tugas dalam status ready atau running, pengiriman data masih berlangsung. Tunggu hingga tugas-tugas tersebut selesai.

    • Jika ada tugas yang gagal, selidiki penyebabnya, perbaiki masalah tersebut, lalu coba ulang tugasnya. Anda mungkin perlu memodifikasi konfigurasi tugas pengiriman untuk memperbaiki masalah tersebut.

  • Perkirakan kelengkapan berdasarkan partisi MaxCompute

    Sebagai contoh, jika Anda mempartisi tabel MaxCompute dan menjalankan tugas pengiriman setiap 30 menit, Anda akan melihat partisi seperti berikut:

    2017_05_19_10_00
    2017_05_19_10_30

    Ketika partisi 2017_05_19_11_00 dibuat, Anda dapat mengasumsikan bahwa data di semua partisi sebelumnya (sebelum pukul 11.00) telah lengkap.

    Meskipun metode ini lebih sederhana dan tidak memerlukan API, metode ini kurang tepat dan hanya memberikan perkiraan kasar.

Bidang kustom

Cara kerja metode ini

Sebagai contoh, sebuah log mungkin berisi bidang date dengan nilai seperti 20170518 dan 20170519. Saat Anda mengonfigurasi aturan pengiriman, Anda dapat memetakan bidang date ini ke kolom kunci partisi.

Dalam kasus ini, Anda juga harus mempertimbangkan selisih waktu antara nilai bidang date dan waktu penulisan log. Untuk memverifikasi kelengkapan, gabungkan metode ini dengan metode yang dijelaskan dalam Gunakan bidang tereservasi sebagai kolom kunci partisi untuk memverifikasi kelengkapan data, yang bergantung pada waktu penerimaan data.

Pemecahan Masalah

Tugas berhasil tetapi data hilang

Jika tugas pengiriman berhasil tetapi Anda menemukan bahwa data hilang dari tabel MaxCompute, hal ini mungkin disebabkan oleh salah satu kondisi berikut:

  • Bidang sumber di Simple Log Service yang dipetakan ke kolom kunci partisi tidak ada. Hal ini menghasilkan nilai null untuk kunci partisi, yang tidak diizinkan oleh MaxCompute.

  • Nilai bidang Simple Log Service yang dipetakan ke kolom kunci partisi mengandung garis miring (/) atau karakter khusus lainnya. MaxCompute melarang karakter-karakter ini dalam nilai kunci partisi karena menganggapnya sebagai kata tereservasi.

Saat masalah ini terjadi, tugas pengiriman melewati log yang tidak valid dan melanjutkan pemrosesan. Tugas tetap mengirimkan log valid lainnya ke partisi yang sesuai.

Oleh karena itu, pemetaan bidang yang salah dapat menyebabkan kehilangan data meskipun status tugas adalah success. Untuk mengatasi hal ini, perbaiki konfigurasi kolom partisi. Kami merekomendasikan penggunaan bidang tereservasi __partition_time__ untuk partisi.

Untuk informasi lebih lanjut, lihat Batasan.