Topik ini merangkum masalah umum terkait Sqoop.
Timestamp bergeser 8 jam setelah impor
-
Masalah
-
Misalnya, tabel test_table dalam sumber data ApsaraDB RDS berisi bidang timestamp. Saat Anda menjalankan kueri pada tabel sumber
test_tabledi DMS, hasilnya menampilkan lima catatan dengan kolomiddanapplied_at. Nilai dalam kolomapplied_atberkisar dari 2024-06-14 10:08:04 hingga 2024-06-18 10:08:04 (bertambah satu hari setiap kali, dengan waktu tetap pukul 10:08:04). -
Jalankan perintah berikut untuk mengimpor data dari test_table ke HDFS.
sqoop import \ --connect jdbc:mysql://rm-2ze****341.mysql.rds.aliyuncs.com:3306/s***o_sqoop_db \ --username s***o \ --password ****** \ --table test_table \ --target-dir /user/hadoop/output \ --delete-target-dir \ --direct \ --split-by id \ --fields-terminated-by '|' \ -m 1 -
Lakukan kueri terhadap hasil impor.
Hasil menunjukkan bahwa bidang timestamp di HDFS bergeser mundur 8 jam.
[root@master-1-1(xxx) ~]# hdfs dfs -cat /user/hadoop/output/part-m-00000 1 2024-06-18 02:08:04 2 2024-06-17 02:08:04 3 2024-06-16 02:08:04 4 2024-06-15 02:08:04 5 2024-06-14 02:08:04
-
-
Solusi: Saat mengimpor data yang berisi bidang timestamp ke HDFS, hapus argumen --direct.
sqoop import \ --connect jdbc:mysql://rm-2ze****341.mysql.rds.aliyuncs.com:3306/s***o_sqoop_db \ --username s***o \ --password ****** \ --table test_table \ --target-dir /user/hadoop/output \ --delete-target-dir \ --split-by id \ --fields-terminated-by '|' \ -m 1Hasil kueri sekarang menampilkan nilai yang benar.
[root@master-1-1(xxx) ~]# hdfs dfs -cat /user/hadoop/output1/part-m-00000 1 2024-06-18 10:08:04.0 2 2024-06-17 10:08:04.0 3 2024-06-16 10:08:04.0 4 2024-06-15 10:08:04.0 5 2024-06-14 10:08:04.0