全部产品
Search
文档中心

MaxCompute:Operasi konfigurasi zona waktu

更新时间:Jun 19, 2025

Topik ini menjelaskan cara menggunakan perintah SET untuk mengonfigurasi zona waktu pada Proyek MaxCompute.

Jenis pekerjaan berikut mendukung fitur konfigurasi zona waktu:
  • MapReduce
  • Spark on MaxCompute
    • Jika tugas dikirimkan ke kluster komputasi MaxCompute, zona waktu proyek secara otomatis diperoleh.
    • Jika tugas dikirimkan dari spark-shell, spark-sql, atau pyspark dalam mode yarn-client, Anda harus mengonfigurasi parameter di file spark-defaults.conf pada driver dan menambahkan spark.driver.extraJavaOptions -Duser.timezone=America/Los_Angeles. Parameter timezone menunjukkan zona waktu yang ingin digunakan.
  • Platform Pembelajaran Mesin untuk AI (PAI)
  • Graph

Metode konfigurasi

Secara default, zona waktu Proyek MaxCompute adalah UTC+8. Bidang DATETIME, TIMESTAMP, dan DATE serta fungsi waktu bawaan terkait semuanya dihitung berdasarkan UTC+8. Anda dapat menggunakan salah satu metode berikut untuk mengonfigurasi zona waktu:
  • Tingkat sesi: Kirim pernyataan set odps.sql.timezone=<timezoneid>; bersama dengan pernyataan komputasi untuk dieksekusi.
    --Atur zona waktu ke Asia/Tokyo. 
    SET odps.sql.timezone=Asia/Tokyo;
    --Periksa zona waktu saat ini. 
    SELECT getdate();
    output:
    +------------+
    | _c0        |
    +------------+
    | 2018-10-30 23:49:50 |
    +------------+
  • Tingkat proyek: Eksekusi pernyataan setProject odps.sql.timezone=<timezoneid>;. Hanya pemilik proyek yang memiliki izin untuk mengeksekusi pernyataan ini.
    null Setelah zona waktu proyek dikonfigurasi, itu digunakan untuk semua komputasi waktu, dan data pekerjaan yang ada terpengaruh. Oleh karena itu, konfigurasikan zona waktu hanya jika diperlukan. Kami merekomendasikan agar Anda mengonfigurasi zona waktu hanya untuk proyek baru.

Batasan dan catatan penggunaan

  • Fungsi tanggal bawaan SQL, fungsi yang ditentukan pengguna (UDF), tipe yang ditentukan pengguna (UDT), join yang ditentukan pengguna (UDJ), dan pernyataan SELECT TRANSFORM memungkinkan Anda mendapatkan atribut timezone proyek untuk mengonfigurasi zona waktu.
  • Zona waktu harus dikonfigurasi dalam format seperti Asia/Shanghai, yang mendukung daylight saving time. Jangan konfigurasi zona waktu dalam format GMT+9.
  • Jika zona waktu di SDK berbeda dari zona waktu proyek, Anda harus mengonfigurasi zona waktu GMT untuk mengonversi tipe data dari DATETIME ke STRING.
  • Setelah zona waktu dikonfigurasi, perbedaan ada antara waktu nyata dan waktu keluaran pernyataan SQL terkait yang Anda jalankan di DataWorks. Antara tahun 1900 dan 1928, selisih waktunya adalah 352 detik. Sebelum tahun 1900, selisih waktunya adalah 9 detik.
  • MaxCompute, SDK for Java, dan klien terkait diperbarui untuk memastikan bahwa data DATETIME yang disimpan di MaxCompute benar di beberapa zona waktu. Versi SDK for Java dan klien terkait yang diperlukan memiliki akhiran -oversea. Pembaruan ini mungkin memengaruhi tampilan data DATETIME yang lebih awal dari 1 Januari 1928 di MaxCompute.
  • Jika zona waktu lokal bukan UTC+8 saat Anda memperbarui MaxCompute, kami sarankan Anda memperbarui SDK for Java dan klien terkait. Ini memastikan bahwa hasil komputasi berbasis SQL dan data yang ditransfer menggunakan perintah Tunnel setelah 1 Januari 1900 akurat dan konsisten. Setelah pembaruan, untuk data DATETIME yang lebih awal dari 1 Januari 1900, hasil komputasi berbasis SQL dan data yang ditransfer menggunakan perintah Tunnel mungkin masih memiliki selisih 343 detik. Untuk data DATETIME yang lebih awal dari 1 Januari 1928 dan diunggah sebelum SDK for Java dan klien terkait diperbarui, waktu di versi baru 352 detik lebih awal.
  • Jika Anda tidak memperbarui SDK for Java dan klien ke versi dengan akhiran -oversea, hasil komputasi berbasis SQL berbeda dari data yang ditransfer menggunakan perintah Tunnel. Untuk data yang lebih awal dari 1 Januari 1900, selisih waktunya adalah 9 detik. Untuk data antara 1 Januari 1900 dan 1 Januari 1928, selisih waktunya adalah 352 detik.
    null Modifikasi konfigurasi zona waktu di SDK for Java atau di klien terkait tidak memengaruhi konfigurasi zona waktu di DataWorks. Oleh karena itu, zona waktu berbeda. Anda harus mengevaluasi bagaimana pekerjaan terjadwal di DataWorks terpengaruh. Zona waktu server DataWorks di wilayah Jepang (Tokyo) adalah GMT+9, dan di wilayah Singapura (Singapura) adalah GMT+8.
  • Jika Anda menggunakan klien pihak ketiga yang terhubung ke MaxCompute menggunakan Java Database Connectivity (JDBC), Anda harus mengonfigurasi zona waktu di klien untuk memastikan konsistensi waktu antara klien dan server.