Spark SQLを初めて使用し、文字列をsparkデータフレームのタイムスタンプに変換しようとしています。'2017-08-01T02:26:59.000Z'
のような文字列がtime_stringという列
この文字列をタイムスタンプに変換する私のコードは
CAST (time_string AS Timestamp)
しかし、これは2017-07-31 19:26:59
のタイムスタンプを提供します
なぜそれが時間を変えるのですか?時間を変更せずにこれを行う方法はありますか?
助けてくれてありがとう!
nix_timestamp 関数を使用して、utc形式の日付をタイムスタンプに変換できます。
val df2 = Seq(("a3fac", "2017-08-01T02:26:59.000Z")).toDF("id", "eventTime")
df2.withColumn("eventTime1", unix_timestamp($"eventTime", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").cast(TimestampType))
出力:
+-------------+---------------------+
|userid |eventTime |
+-------------+---------------------+
|a3fac |2017-08-01 02:26:59.0|
+-------------+---------------------+
お役に立てれば!
Javaのソリューション
いくつかのSpark SQL関数があり、日付形式を試すことができます。
変換例:201812240915-> 2018-12-24 09:15:
解決策(Spark SQLステートメント):
SELECT
...
to_timestamp(cast(DECIMAL_DATE as string),'yyyyMMddHHmmss') as `TIME STAMP DATE`,
...
FROM some_table
org.Apache.spark.sql.SparkSessionのインスタンスを使用して、SQLステートメントを使用できます。たとえば、SQLステートメントを実行する場合、Sparkは次のソリューションを提供します。
...
// You have to create an instance of SparkSession
sparkSession.sql(sqlStatement);
...
注: