Konfigurasikan zona waktu untuk Proyek MaxCompute menggunakan perintah SET. Secara default, MaxCompute menggunakan UTC+8 untuk semua bidang DATETIME, TIMESTAMP, dan DATE serta fungsi waktu bawaan terkait.
Jenis pekerjaan yang didukung
Konfigurasi zona waktu berlaku untuk jenis pekerjaan berikut:
MapReduce
Spark on MaxCompute
Tugas yang dikirim ke kluster komputasi MaxCompute secara otomatis mewarisi zona waktu proyek.
Tugas yang berjalan dalam mode YARN client (spark-shell, spark-sql, atau pyspark) memerlukan konfigurasi driver tambahan. Di
spark-defaults.conf, tambahkanspark.driver.extraJavaOptions -Duser.timezone=America/Los_Angeles, gantiAmerica/Los_Angelesdengan zona waktu yang ingin Anda gunakan.
Machine Learning Platform for AI (PAI)
Graph
Konfigurasikan zona waktu
MaxCompute mendukung dua cakupan konfigurasi:
| Cakupan | Siapa yang dapat mengaturnya |
|---|---|
| Tingkat session | Semua pengguna |
| Tingkat proyek | Hanya pemilik proyek |
Atur zona waktu untuk session
Kirimkan SET odps.sql.timezone=<timezoneid>; bersama dengan pernyataan kueri Anda.
-- Atur zona waktu ke Asia/Tokyo untuk session ini.
SET odps.sql.timezone=Asia/Tokyo;Untuk memverifikasi zona waktu aktif, jalankan SELECT getdate();:
SELECT getdate();Output yang diharapkan:
+---------------------+
| _c0 |
+---------------------+
| 2018-10-30 23:49:50 |
+---------------------+Atur zona waktu untuk proyek
Jalankan perintah berikut sebagai pemilik proyek:
setProject odps.sql.timezone=<timezoneid>;Setelah Anda mengubah zona waktu proyek, semua perhitungan waktu dalam proyek akan menggunakan zona waktu baru tersebut, termasuk data dari pekerjaan yang sudah ada. Untuk meminimalkan dampak, konfigurasikan zona waktu proyek hanya jika diperlukan, dan lebih baik mengaturnya pada proyek baru daripada proyek yang sedang aktif.
Batasan dan catatan penggunaan
Format zona waktu
Gunakan nama zona waktu IANA seperti Asia/Shanghai. Jangan gunakan format offset GMT+9.
Format GMT+N tidak mendukung daylight saving time, yang dapat menyebabkan perhitungan waktu salah. Nama zona waktu IANA menangani daylight saving time secara otomatis dan menghindari ambiguitas.
Kompatibilitas SDK dan client
Fungsi tanggal bawaan SQL, user-defined function (UDF), user-defined type (UDT), user-defined join (UDJ), dan pernyataan
SELECT TRANSFORMsemuanya dapat membaca atribut zona waktu proyek.Jika zona waktu yang dikonfigurasi di SDK for Java berbeda dari zona waktu proyek, konfigurasikan zona waktu GMT di SDK agar konversi DATETIME ke STRING berjalan dengan benar.
Jika zona waktu lokal Anda bukan UTC+8 saat memperbarui MaxCompute, perbarui SDK for Java dan client terkait ke versi dengan akhiran
-oversea. Hal ini memastikan bahwa hasil SQL dan data yang ditransfer menggunakan perintah Tunnel untuk tanggal setelah 1 Januari 1900 akurat dan konsisten.
Perbedaan datetime historis
Setelah mengonfigurasi zona waktu selain UTC+8, mungkin terdapat perbedaan antara waktu aktual dan output pernyataan SQL yang dijalankan di DataWorks:
| Rentang tanggal | Selisih waktu |
|---|---|
| Sebelum 1 Januari 1900 | 9 detik |
| 1 Januari 1900 – 1 Januari 1928 | 352 detik |
Setelah memperbarui ke versi dengan akhiran `-oversea`:
Data DATETIME sebelum 1 Januari 1900 mungkin masih berbeda hingga 343 detik.
Data DATETIME sebelum 1 Januari 1928 yang diunggah sebelum pembaruan akan tampak 352 detik lebih awal di versi baru.
Tanpa pembaruan akhiran `-oversea`:
Hasil SQL mungkin berbeda dari data yang ditransfer oleh perintah Tunnel.
Sebelum 1 Januari 1900: selisih 9 detik.
1 Januari 1900 hingga 1 Januari 1928: selisih 352 detik.
Zona waktu DataWorks
Mengubah zona waktu SDK for Java atau client tidak memengaruhi zona waktu server DataWorks. Evaluasi bagaimana hal ini memengaruhi pekerjaan DataWorks terjadwal Anda. Zona waktu server DataWorks berdasarkan wilayah:
| Wilayah | Zona waktu |
|---|---|
| Jepang (Tokyo) | GMT+9 |
| Singapura (Singapura) | GMT+8 |
Client JDBC pihak ketiga
Jika Anda terhubung ke MaxCompute menggunakan client pihak ketiga melalui Java Database Connectivity (JDBC), konfigurasikan zona waktu yang sesuai di client agar tetap konsisten dengan server.