全部产品
Search
文档中心

:Buat pekerjaan pengiriman data MaxCompute (versi baru)

更新时间:Dec 03, 2025

Layanan Log Sederhana memungkinkan Anda mengirim data log ke MaxCompute untuk penyimpanan dan analisis. Topik ini menjelaskan cara membuat pekerjaan pengiriman data MaxCompute (versi baru).

Prasyarat

  • Proyek Layanan Log Sederhana dan penyimpanan log telah dibuat, serta pengumpulan data telah selesai. Untuk informasi selengkapnya, lihat Kelola proyek, Buat penyimpanan log, dan Ikhtisar pengumpulan data.

  • Tabel partisi MaxCompute telah dibuat di wilayah tempat proyek Layanan Log Sederhana berada. Untuk informasi selengkapnya, lihat Buat tabel.

Catatan penggunaan

  • Untuk informasi selengkapnya tentang wilayah yang mendukung pengiriman data ke MaxCompute, lihat Wilayah yang didukung.

  • Untuk field bertipe `char` atau `varchar`, jika nilainya melebihi panjang yang ditentukan, karakter berlebih akan dipotong saat data dikirim ke MaxCompute.

    Misalnya, jika batas panjang adalah 3 dan nilai field adalah 012345, maka nilai tersebut menjadi 012 di MaxCompute.

  • Untuk field bertipe `string`, `char`, atau `varchar`, nilai string kosong akan menjadi `Null` saat dikirim ke MaxCompute.

  • Untuk field `datetime`, nilainya harus dalam format `YYYY-MM-DD HH:mm:ss`. Beberapa spasi diperbolehkan antara DD dan HH. Nilai dengan format salah tidak menyebabkan error pengiriman, tetapi nilainya menjadi `Null` di MaxCompute.

  • Untuk field `date`, nilai dengan format salah tidak menyebabkan error pengiriman, tetapi nilainya menjadi `Null` di MaxCompute.

  • Untuk field `decimal`, jika jumlah tempat desimal melebihi presisi yang ditentukan, nilainya akan dibulatkan. Jika jumlah digit integer melebihi presisi yang ditentukan, sistem akan membuang seluruh log sebagai data kotor dan menambah jumlah error.

  • Data kotor dibuang secara default selama proses pengiriman.

  • Jika suatu nilai tidak ada dalam log, nilainya mungkin menjadi nilai default atau `Null` di MaxCompute.

    • Jika nilai default ditentukan saat tabel MaxCompute dibuat, nilainya menjadi nilai default di MaxCompute.

    • Jika tidak ada nilai default yang ditentukan tetapi nilai `Null` diizinkan, nilainya menjadi `Null` di MaxCompute.

  • Karena keterbatasan MaxCompute, konkurensi pengiriman maksimum adalah 64. Artinya, maksimal 64 pekerjaan konkuren dapat menulis ke MaxCompute. Trafik maksimum untuk satu partisi MaxCompute adalah 10 MB/detik.

Prosedur

  1. Masuk ke Konsol Layanan Log Sederhana.

  2. Pada bagian Projects, klik proyek yang Anda inginkan.

  3. Pada tab Log Storage > Logstores, klik > di sebelah kiri Logstore tujuan, lalu pilih Data Processing > Export > MaxCompute (formerly ODPS).

  4. Arahkan pointer ke MaxCompute (formerly ODPS) lalu klik +.

  5. Pada panel Ship To MaxCompute, konfigurasikan parameter berikut, lalu klik OK.

    Deskripsi parameter

    Parameter

    Deskripsi

    Job Name

    Nama unik dari pekerjaan pengiriman.

    Display Name

    Nama tampilan dari pekerjaan pengiriman.

    Job Description

    Deskripsi pekerjaan pengiriman data.

    Destination Region

    Wilayah tempat tabel MaxCompute tujuan berada.

    MaxCompute Endpoint

    Endpoint untuk wilayah proyek MaxCompute.

    Catatan

    Panel Endpoint di sisi MaxCompute secara default terlipat. Klik image untuk melihat detailnya, seperti yang ditunjukkan pada gambar:

    image

    Tunnel Endpoint

    Tunnel Endpoint untuk wilayah proyek MaxCompute.

    Catatan

    Panel Endpoint di sisi MaxCompute secara default terlipat. Klik image untuk melihat detailnya, seperti yang ditunjukkan pada gambar:

    image

    Project Name

    Proyek MaxCompute tempat tabel MaxCompute tujuan berada.

    MaxCompute Table Name

    Nama tabel MaxCompute.

    Read Permissions On Log Service

    Izin yang mengizinkan pekerjaan pengiriman MaxCompute membaca data dari Logstore.

    • Default Role: Izinkan pekerjaan pengiriman MaxCompute menggunakan role sistem AliyunLogDefaultRole untuk membaca data dari Logstore. Untuk informasi selengkapnya, lihat Otorisasi role default.

    • Custom Role: Izinkan pekerjaan pengiriman MaxCompute menggunakan role kustom untuk membaca data dari Logstore.

      Berikan izin kepada role kustom tersebut untuk membaca data dari Logstore. Kemudian, masukkan Nama Sumber Daya Alibaba Cloud (ARN) role kustom Anda di field Read Permissions On Log Service. Untuk informasi selengkapnya, lihat Otorisasi RAM role untuk membaca data dari Logstore.

    Write Permissions On MaxCompute

    Izin yang mengizinkan pekerjaan pengiriman MaxCompute menulis data ke tabel MaxCompute.

    Automatic Authorization

    Klik Authorize untuk secara otomatis memberikan izin kepada RAM role agar dapat menulis data ke MaxCompute.

    Penting
    • Jika Anda menggunakan RAM user untuk melakukan operasi ini, RAM user tersebut harus memiliki izin untuk mengelola akun MaxCompute.

    • Jika otorisasi otomatis gagal, empat perintah akan ditampilkan. Salin perintah tersebut ke Konsol MaxCompute untuk menyelesaikan otorisasi secara manual. Untuk informasi selengkapnya, lihat Selesaikan otorisasi menggunakan command line.

      USE xxxxx;
      ADD USER RAM$xxxxx:`role/xxxxx`;
      GRANT CreateInstance ON PROJECT xxxxx TO USER RAM$xxxxx:`role/xxxxx`;
      GRANT Describe, Alter, update ON TABLE xxxxx TO USER RAM$xxxxx:`role/xxxxx`;

    MaxCompute Common Column

    Pada kotak input kiri, masukkan nama field log yang akan dipetakan ke kolom tabel MaxCompute. Sisi kanan menampilkan nama kolom tabel MaxCompute. Untuk informasi selengkapnya, lihat Pemetaan model data.

    Penting
    • Saat Layanan Log Sederhana mengirim log ke MaxCompute, pemetaan dilakukan berdasarkan urutan field log dan kolom tabel MaxCompute. Mengubah nama kolom MaxCompute tidak memengaruhi pengiriman data. Jika Anda mengubah skema tabel MaxCompute, konfigurasikan ulang pemetaan antara field log dan kolom tabel MaxCompute.

    • Field log pada kotak input kiri tidak boleh mengandung tanda kutip ganda (""), tanda kutip tunggal (''), atau spasi.

    • Jika sebuah log berisi dua field dengan nama yang sama, seperti request_time, Log Service akan menampilkan salah satu field tersebut sebagai request_time_0. Kedua field tersebut tetap disimpan sebagai request_time di Log Service. Saat Anda mengonfigurasi aturan pengiriman, Anda hanya dapat menggunakan nama field asli request_time.

      Jika sebuah log berisi field dengan nama yang sama, Log Service secara acak mengirim nilai salah satu field tersebut. Disarankan agar Anda tidak menyertakan field dengan nama yang sama dalam log Anda.

    MaxCompute Partition Key Column

    Pada kotak input kiri, masukkan nama field log yang akan dipetakan ke kolom kunci partisi MaxCompute. Sisi kanan menampilkan nama kolom kunci partisi MaxCompute. Untuk informasi selengkapnya, lihat Pemetaan model data.

    Catatan
    • Field _extract_others_, __extract_others__, dan __extract_others_all__ tidak didukung sebagai field partisi.

    • Jika field log untuk kolom kunci partisi tidak diatur ke __partition_time__ atau __receive_time__, performa pengiriman mungkin terpengaruh.

    Time Partition Format

    Format partisi waktu. Untuk contoh konfigurasi dan detail parameter, lihat Format partisi waktu.

    Catatan
    • Parameter ini hanya berlaku ketika field log di MaxCompute Partition Key Column diatur ke __partition_time__ atau __receive_time__.

    • Jangan gunakan format tanggal yang akurat hingga detik. Hal ini dapat dengan mudah menyebabkan jumlah partisi dalam satu tabel melebihi batas 60.000.

    Time Zone Selection

    Zona waktu yang digunakan untuk memformat waktu dan partisi waktu. Untuk informasi selengkapnya, lihat Format zona waktu.

    Shipping Mode

    Pengiriman real-time dan pengiriman batch didukung.

    • Real-time Shipping: Membaca data dari Logstore secara real-time dan mengirimkannya ke MaxCompute.

    • Batch Shipping: Membaca data dari Logstore yang waktunya 5 hingga 10 menit lebih awal dari waktu saat ini dan mengirimkannya ke MaxCompute.

    Untuk informasi selengkapnya, lihat Deskripsi mode pengiriman.

    Start Time Range

    Tentukan rentang waktu untuk pekerjaan pengiriman MaxCompute. Rentang waktu ini didasarkan pada waktu penerimaan log. Berikut penjelasan lengkapnya:

    • From Specific Time: Tentukan waktu mulai untuk pekerjaan pengiriman MaxCompute. Pengiriman data dimulai dari titik waktu ini dan berlanjut hingga pekerjaan dihentikan secara manual.

    • Specific Time Range: Tentukan waktu mulai dan waktu akhir untuk pekerjaan pengiriman MaxCompute. Pekerjaan akan berhenti secara otomatis setelah mencapai waktu akhir yang ditentukan.

    Catatan

    Karena batasan slot dan permintaan per detik (QPS) MaxCompute, pengiriman data historis dapat dengan mudah melebihi ambang batas penulisan MaxCompute. Oleh karena itu, fitur ini tidak lagi didukung.

    Setelah Anda membuat pekerjaan pengiriman, data log biasanya diimpor ke MaxCompute dalam waktu satu jam setelah ditulis ke Logstore. Anda kemudian dapat melihat data tersebut di MaxCompute. Untuk informasi selengkapnya, lihat Bagaimana cara memeriksa integritas data setelah saya mengirim log ke MaxCompute?.

    | log_source | log_time | log_topic | time | ip | thread | log_extract_others | log_partition_time | status |
    +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+
    | 10.10.*.* | 1642942213 | | 24/Jan/2022:20:50:13 +0800 | 10.10.*.* | 414579208 | {"url":"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1","user-agent":"aliyun-sdk-java"} | 2022_01_23_20_50 | 200 |
    +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+

Pemetaan model data

Saat Anda mengirim log dari Layanan Log Sederhana ke tabel MaxCompute, Anda harus memetakan model data kedua layanan tersebut. Perhatikan poin-poin berikut:

  • Tabel MaxCompute harus berisi setidaknya satu kolom data dan satu kolom partisi.

  • Gunakan field cadangan __partition_time__, __source__, dan __topic__.

  • Tabel MaxCompute dapat memiliki maksimal 60.000 partisi. Setelah jumlah partisi melebihi batas tersebut, data tidak dapat lagi ditulis ke tabel tersebut.

  • Field cadangan sistem __extract_others__ sebelumnya bernama _extract_others_. Kedua nama tersebut kompatibel.

  • Nilai kolom kunci partisi MaxCompute tidak boleh berupa kata cadangan atau kata kunci di MaxCompute. Untuk informasi selengkapnya, lihat Kata cadangan dan kata kunci.

  • Partisi dalam tabel partisi MaxCompute tidak boleh kosong. Anda harus mengonfigurasi field tertentu (field cadangan sistem atau field konten log) untuk kolom kunci partisi MaxCompute. Untuk pekerjaan pengiriman versi lama, operator `cast` diperlukan untuk mengonversi nilai field string ke tipe kolom partisi yang sesuai. Jika konversi gagal dan menghasilkan kolom partisi kosong, log tersebut akan dibuang selama pengiriman.

  • Field log di Layanan Log Sederhana hanya dapat dipetakan ke satu kolom (kolom data atau kolom partisi) di tabel MaxCompute. Redundansi field tidak didukung.

Tabel berikut menjelaskan pemetaan antara kolom data MaxCompute, kolom partisi, dan field Layanan Log Sederhana. Untuk informasi selengkapnya tentang field cadangan di Layanan Log Sederhana, lihat Field cadangan.

Tipe kolom MaxCompute

Nama kolom (MaxCompute)

Tipe data (MaxCompute)

Nama field log (Layanan Log Sederhana)

Tipe field (Layanan Log Sederhana)

Deskripsi

Kolom data

log_source

string

__source__

Field cadangan

Sumber log.

log_time

bigint

__time__

Field cadangan

Waktu log dalam format Stempel waktu UNIX. Ini sesuai dengan field Time dalam model data.

log_topic

string

__topic__

Field cadangan

Topik log.

time

string

time

Field konten log

Field ini diurai dari log dan sesuai dengan pasangan kunci-nilai dalam model data. Dalam banyak kasus, nilai field __time__ dalam data yang dikumpulkan oleh Logtail sama dengan nilai field time.

ip

string

ip

Field konten log

Field ini diurai dari log.

thread

string

thread

Field konten log

Field ini diurai dari log.

log_extract_others

string

__extract_others__

Field cadangan

Field log lain yang tidak dipetakan dalam konfigurasi akan diserialisasi menjadi objek JSON berdasarkan pasangan kunci-nilai. Objek JSON tersebut memiliki struktur tingkat tunggal. Objek JSON bersarang tidak didukung untuk field log.

Kolom partisi

log_partition_time

string

__partition_time__

Field cadangan

Field ini dihitung dan disejajarkan berdasarkan nilai field __time__ dalam log. Granularitas partisi dapat dikonfigurasi.

status

string

status

Field konten log

Field ini diurai dari log. Nilai field ini mendukung enumerasi untuk memastikan jumlah partisi tidak melebihi batas atas.

Format partisi waktu

Pengiriman data ke versi baru MaxCompute mendukung dua format partisi waktu: StrfTimeFormat dan SimpleDateFormat. Format-format ini hanya diterapkan jika field di kolom kunci partisi MaxCompute diatur ke __partition_time__ atau __receive_time__.

StrfTimeFormat

`strftime` adalah fungsi dalam pustaka standar C UNIX yang memformat tanggal dan waktu. Anda dapat menggunakan fungsi ini untuk mengonversi partisi waktu menjadi string dengan format tertentu. Aturan pemformatan ditentukan oleh spesifikasi format yang diawali karakter `%`. Misalnya, `%Y_%m_%d` merepresentasikan format tahun-bulan-hari.

Catatan

Jika Anda membuat pekerjaan MaxCompute baru, Anda harus menggunakan format waktu StrfTimeFormat.

Format partisi waktu

Contoh partisi tabel

%Y_%m_%d_%H_%M_00

2024_12_27_20_30_00

%Y_%m_%d_%H_%M

2024_12_27_20_30

%Y_%m_%d_%H

2024_12_27_20

%Y_%m_%d

2024_12_27

%Y_%m

2024_12

%Y

2024

%Y%m%d%H%M

202412272030

%Y%m%d%H

2024122720

%Y%m%d

20241227

%Y%m

202412

SimpleDateFormat

Ini adalah format waktu berdasarkan sintaks Java SimpleDateFormat, seperti yyyy-MM-dd HH:mm. Untuk informasi selengkapnya tentang sintaks tersebut, lihat Class SimpleDateFormat.

Catatan

Format waktu SimpleDateFormat hanya digunakan untuk migrasi dari versi lama ke versi baru guna memastikan kompatibilitas. Jika Anda membuat pekerjaan MaxCompute baru, Anda harus menggunakan format waktu StrfTimeFormat.

Untuk pekerjaan migrasi dari versi lama, format partisi berikut didukung:

Format partisi waktu

Contoh partisi tabel

yyyy-MM-ddHH:mm

2024-12-2720-30

yyyy_MM_dd_HH_mm

2024_12_27_20_30

yyyy_MM_dd_HH

2024_12_27_20

yyyy-MM-dd HH:mm

2024-12-27 20:30

yyyyMMddHHmm

202412272030

yyyyMMddHH

2024122720

yyyyMMdd

20241227

yyyy_MM-dd_HH_mm

2024_12-27_20_30

yyyy-MM-dd

2024-12-27

Informasi referensi

  • __partition_time__ field

    Menggunakan waktu log sebagai field partisi untuk memfilter data berdasarkan waktu merupakan metode umum di MaxCompute.

    • Format

      Nilai field __partition_time__ dihitung berdasarkan nilai field __time__ di Layanan Log Sederhana. String waktu dihasilkan berdasarkan konfigurasi zona waktu dan format partisi waktu. Untuk menghindari melebihi batas partisi untuk satu tabel MaxCompute, nilai kolom partisi tanggal disejajarkan ke interval 30 menit (1800 detik).

      Misalnya, jika waktu log di Layanan Log Sederhana adalah 27/Jan/2022 20:50:13 +0800, Layanan Log Sederhana menghitung nilai field cadangan __time__ sebagai 1643287813 (Stempel waktu UNIX). Tabel berikut menjelaskan nilai kolom partisi waktu untuk konfigurasi yang berbeda.

      Format partisi waktu

      __partition_time__

      %Y_%m_%d_%H_%M_00

      2022_01_27_20_30_00

      %Y_%m_%d_%H_%M

      2022_01_27_20_30

      %Y%m%d

      20220127

    • Penggunaan

      Gunakan field __partition_time__ untuk memfilter data guna menghindari pemindaian tabel penuh. Misalnya, untuk mengkueri data log tanggal 26 Desember 2024, jalankan pernyataan kueri berikut.

      select * from {ODPS_TABLE_NAME} where log_partition_time >= "2024_12_26" and log_partition_time < "2024_12_27";
  • __receive_time__ field

    Menggunakan waktu saat log tiba di server sebagai field partisi untuk memfilter data berdasarkan waktu merupakan metode umum di MaxCompute.

    • Format

      Format partisi waktu

      __recetive_time__

      %Y_%m_%d_%H_%M_00

      2022_01_27_20_30_00

      %Y_%m_%d_%H_%M

      2022_01_27_20_30

      %Y%m%d

      20220127

  • __extract_others__ dan __extract_others_all__ fields

    • Field __extract_others__ berisi semua field yang tidak dipetakan dalam log, tidak termasuk __topic__, __tag__:*, dan __source__.

    • Field __extract_others_all__ berisi semua field yang tidak dipetakan dalam log, termasuk __topic__, __tag__:*, dan __source__.

Deskripsi mode pengiriman

Saat ini, pengiriman data ke MaxCompute (versi baru) mendukung dua mode: pengiriman real-time dan pengiriman batch.

  • Real-time Shipping: Membaca data dari Logstore secara real-time dan mengirimkannya ke MaxCompute.

  • Batch Shipping: Membaca data dari Logstore yang waktunya 5 hingga 10 menit lebih awal dari waktu saat ini dan mengirimkannya ke MaxCompute.

    Setelah Anda mengatur Shipping Mode ke Batch Shipping, jika Anda ingin mengatur Start Time atau End Time di Start Time Range, Anda harus menyejajarkan waktu ke interval 5 menit. Misalnya, 2022-05-24 16:35:00 adalah pengaturan yang valid, tetapi 2022-05-24 16:36:00 adalah pengaturan yang tidak valid.

    Selain itu, pengiriman batch mendukung pengiriman field __receive_time__. Field __receive_time__ menunjukkan waktu saat log diterima oleh Layanan Log Sederhana. Anda dapat mengatur format field ini menggunakan format partisi waktu, dengan presisi hingga 30 menit. Untuk informasi selengkapnya tentang format partisi waktu, lihat Format partisi waktu.

    Jika Anda ingin mengirim field ini, Anda hanya dapat menambahkannya ke MaxCompute Partition Key Column.

Contoh SDK

export_odps_sink_demo.py