2017-11-27 13 views
1

mysqlからpysparkにデータをインポートしようとしています。私はmysqlからpysparkへのデータをデータフレームとして得ることができます。しかし、daylightsavings時間のタイムスタンプ列のデータフレームに間違った時間が表示されます。mysqlからデータをインポート中

以下は、夏時間中にデータを取得したテーブルのデータです。

MySQLのデータ

id Package_time   System_time    PACKAGE GROUP        
1 3/12/2017 2:19:51 AM 2017-03-11 18:13:43.577 TEST_1 STATUS        
2 3/12/2017 2:19:53 AM 2017-03-11 18:13:43.577 TEST_1 ALARM        
3 3/12/2017 2:19:53 AM 2017-03-11 18:13:43.577 TEST_1 ALARM        
4 3/12/2017 2:19:53 AM 2017-03-11 18:13:43.577 TEST_1 ALARM        
5 3/12/2017 2:19:54 AM 2017-03-11 18:13:44.611 TEST_1 STATUS      

PySparkデータ

id Package_time   System_time    PACKAGE GROUP        
1 3/12/2017 3:19:51 AM 2017-03-11 18:13:43.577 TEST_1 STATUS 
2 3/12/2017 3:19:53 AM 2017-03-11 18:13:43.577 TEST_1 ALARM 
3 3/12/2017 3:19:53 AM 2017-03-11 18:13:43.577 TEST_1 ALARM 
4 3/12/2017 3:19:53 AM 2017-03-11 18:13:43.577 TEST_1 ALARM 
5 3/12/2017 3:19:54 AM 2017-03-11 18:13:44.611 TEST_1 STATUS 

私はpysparkデータフレームがmysqlテーブルと同じデータを持っていると思います。どのように私の結果を達成することができます。

データが同じであることを確認するために必要な変更は何ですか?列の

データ型:

id int 
package_time timestamp 
system_time timestamp 
package string 
group strimg 
+0

あなたの質問を編集して、あなたの時間列のデータ型を教えてください。 –

+0

@ O.Jones質問にデータ型を追加しました。どうかしてください – User12345

答えて

1

なるほど!あなたの日付スタンプ値のデータタイプはTIMESTAMPです。これらはデータベースのUTCに格納されます。現在のタイムゾーンの設定に従って、ローカルタイムに変換されます。

クエリを実行する前に、このSQLコマンドを使用してすべてをUTCで取得できます。

SET time_zone='UTC'; 

すべてのあなたの日付スタンプが太平洋地域の時刻を示したい場合は、考慮に入れ夏時間で、あなたはこの使用することができます:あなたは、太平洋標準時間にすべてのあなたの日付スタンプをしたい場合はせずに、

SET time_zone = 'America/Vancouver'; 

SET time_zone='-08:00'; 
+0

あなたの解決策は 'mysql'でもうまくいくでしょうが、' spark'でこれが動作するとは思わないでしょう –

+0

@ O.Jones夏時間を考慮に入れて 'time_zone'を設定するにはどうすればいいですか? –

関連する問題