全部产品
Search
文档中心

:Bagaimana cara memeriksa kelengkapan data yang dikirim dari Simple Log Service ke MaxCompute?

更新时间:Jul 16, 2025

Setelah Simple Log Service mengirimkan data ke tabel MaxCompute, Anda perlu memeriksa kelengkapan data berdasarkan partisi. Bagian berikut menjelaskan metode yang dapat digunakan untuk memverifikasi apakah data dalam partisi sudah lengkap.

Metode 1: Gunakan kolom kunci partisi bidang cadangan __partition_time__

__partition_time__ diperoleh dari bidang waktu log. Nilai bidang waktu adalah cap waktu log. Cap waktu dibulatkan ke bawah ke jam terdekat untuk menghasilkan nilai __partition_time__ berdasarkan format yang Anda tentukan untuk waktu. Cap waktu log bukanlah waktu saat log dikirim atau waktu saat log ditulis ke Simple Log Service.

Sebagai contoh, cap waktu log adalah 2017-05-19 10:43:00, format yang Anda tentukan untuk __partition_time__ adalah yyyy_MM_dd_HH_mm, dan log dikirim setiap interval 1 jam. Dalam contoh ini, log disimpan di partisi 2017_05_19_10_00 setelah log dikirim ke MaxCompute tanpa memperhatikan waktu saat log ditulis ke Simple Log Service. Untuk informasi lebih lanjut tentang detail perhitungan, lihat Kirim log ke MaxCompute (versi lama).

Jika log ditulis ke Simple Log Service secara real-time dan tidak ada log historis yang ditulis, Anda dapat menggunakan salah satu metode berikut untuk memeriksa kelengkapan data partisi:

  • (Direkomendasikan) Gunakan Operasi API, SDK, atau Konsol Simple Log Service untuk Memeriksa Kelengkapan Data

    Gunakan operasi API, SDK, atau konsol Simple Log Service untuk mendapatkan tugas pengiriman data dari proyek atau Logstore yang Anda tentukan. Contoh berikut menunjukkan tugas yang dikembalikan oleh operasi API. Konsol Simple Log Service dapat memvisualisasikan tugas yang dikembalikan.

    {
      "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 memeriksa apakah data yang diterima Simple Log Service sebelum Waktu T dikirim ke tabel MaxCompute yang digunakan.

    • Jika waktu yang ditunjukkan oleh taskLastDataReceiveTime lebih awal dari waktu yang ditunjukkan oleh T ditambah 300 detik, dan setiap tugas pengiriman yang selesai sebelum waktu yang ditunjukkan oleh T ditambah 300 detik berada dalam status sukses, maka data yang diterima Simple Log Service sebelum Waktu T telah dikirim ke tabel MaxCompute. Offset waktu 300 detik digunakan untuk toleransi kesalahan. Sebagai contoh, terjadi kesalahan dalam mengirim data ke Simple Log Service dan dilakukan percobaan ulang.

    • Jika tugas pengiriman berstatus siap atau sedang berjalan, data yang dikirim ke tabel MaxCompute belum lengkap. Dalam hal ini, Anda perlu menunggu hingga tugas selesai.

    • Jika tugas pengiriman gagal, Anda perlu menyelesaikan masalah kegagalan dan mencoba kembali tugas tersebut. Jika kegagalan terkait konfigurasi pengiriman, Anda dapat memperbarui konfigurasi tersebut.

  • Evaluasi Kasar Kelengkapan Data Berdasarkan Partisi MaxCompute

    Sebagai contoh, tabel MaxCompute dipartisi pada interval 30 menit, dan data dikirim dari Simple Log Service ke MaxCompute setiap 30 menit. Tabel MaxCompute berisi partisi berikut:

    2017_05_19_10_00
    2017_05_19_10_30

    Jika partisi 2017_05_19_11_00 ditemukan di tabel MaxCompute, data yang disimpan di partisi 2017_05_19_10_00 dan 2017_05_19_10_30 dianggap lengkap.

    Metode ini mudah digunakan dan tidak memerlukan panggilan API. Namun, hasil evaluasinya mungkin kurang akurat.

Metode 2: Gunakan bidang log kustom sebagai kolom kunci partisi

Sebagai contoh, sebuah log berisi bidang tanggal dengan nilai 20170518 dan 20170519. Saat mengonfigurasi aturan pengiriman data, bidang tanggal dipetakan ke kolom kunci partisi.

Dalam contoh ini, Anda harus memperhatikan perbedaan antara nilai bidang tanggal dan waktu penulisan data ke Simple Log Service. Kemudian, periksa kelengkapan data partisi berdasarkan Metode 1 dan waktu penulisan data ke Simple Log Service.

Tugas pengiriman berhasil tetapi data di tabel MaxCompute tidak lengkap. Apa yang harus saya lakukan?

Masalah ini dapat disebabkan oleh alasan berikut:

  • Bidang Simple Log Service yang dipetakan ke kolom kunci partisi tidak tersedia. Dalam hal ini, nilai kolom kunci partisi adalah null, yang tidak diizinkan di tabel MaxCompute.

  • Nilai bidang Simple Log Service yang dipetakan ke kolom kunci partisi mengandung garis miring (/) atau karakter khusus lainnya. Karakter-karakter ini merupakan kata cadangan di MaxCompute dan tidak diizinkan di kolom kunci partisi.

Jika salah satu alasan di atas terjadi, sistem akan melewati log terkait dan melanjutkan pengiriman log lainnya. Jika kolom kunci partisi untuk log lainnya tidak mengalami kesalahan pemetaan, log-log tersebut berhasil dikirim ke partisi.

Untuk menyelesaikan masalah ini, Anda dapat mengubah konfigurasi kolom kunci partisi. Kami merekomendasikan agar Anda menggunakan bidang cadangan __partition_time__ sebagai kolom kunci partisi.

Untuk informasi lebih lanjut, lihat Batasan.