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 } ] }taskLastDataReceiveTimemenunjukkan 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
taskLastDataReceiveTimelebih awal dari waktu yang ditunjukkan olehT 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_30Jika 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.