このトピックでは、Sqoopに関するよくある質問への回答を提供します。
ApsaraDB RDSからE-MapReduce(EMR)にデータをインポートするときに、タイムスタンプフィールドで指定された時刻が元の時刻より8時間早い場合はどうすればよいですか?
説明
ApsaraDB RDSのtest_table テーブルには、タイムスタンプフィールドが含まれています。
test_table テーブルからEMR 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インポート結果がクエリされます。
クエリ結果では、タイムスタンプフィールドで指定された時刻は元の時刻より8時間早くなっています。
解決策:データをインポートするときに、インポートコマンドから --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 1クエリ結果は正常です。