2017-08-18 15 views
3

GMTタイムスタンプ文字列の列をEasternタイムゾーンのタイムスタンプの列に変換しようとしています。私は夏時間を考慮に入れたい。Spark:GMTタイムスタンプをEasternに変換して夏時間を考慮に入れてください。

from pyspark.sql import functions as F 

df2 = df1.withColumn('datetimeGMT', df1.myTimeColumnInGMT.cast('timestamp')) 
df3 = df2.withColumn('datetimeEST', F.from_utc_timestamp(df2.datetimeGMT, "EST")) 

しかし、時代はと変わらない:私はESTのタイムスタンプに文字列の列を変換する方法を考え出し

'2017-02-01T10:15:21+00:00' 

タイムスタンプ文字列の私の列は次のようになり夏時間。タイムスタンプを変換して夏時間を考慮する別の関数や何かがありますか?

編集:私はそれを考え出したと思う。上記from_utc_timestampコールでは、私が代わりに「EST」の「アメリカ/ニューヨーク」を使用するために必要な:

df3 = df2.withColumn('datetimeET', F.from_utc_timestamp(df2.datetimeGMT, "America/New_York")) 
+1

はい、正しいです。タイムゾーン識別子のエリア/地域の形式を常に使用する必要があります。あなたが好きならこれであなた自身の質問に答えることができますが、この特定の点は何度も前に対処されています(しかし、おそらく火花に関してはそうではありません)。 –

答えて

1

私は答えを考え出すことになったので、私は、私はそれをここに追加します考え出し。質問を投稿する前にこの問題を探している間、私は火花のための夏時間節約について何も見つけることができなかったので、この質問/回答は価値があると思います。私はおそらく、基礎をなすJava関数を検索すべきであることを認識していたはずです。

"EST"ではなく "America/New_York"という文字列を使用していました。これにより、夏時間の節約が正しく適用されます。

from pyspark.sql import functions as F 
df3 = df2.withColumn('datetimeET', F.from_utc_timestamp(df2.datetimeGMT, "America/New_York")) 
関連する問題