Spark scala数据框架,将复杂的数据解析为长数据
尝试了许多方法,但似乎不知道如何将此日期格式转换为最接近的长毫秒:Spark scala数据框架,将复杂的数据解析为长数据,scala,date,apache-spark,apache-spark-sql,Scala,Date,Apache Spark,Apache Spark Sql,尝试了许多方法,但似乎不知道如何将此日期格式转换为最接近的长毫秒: scala> var df = sc.parallelize(Seq("2020-07-17T17:52:48.758512Z")).toDF("ts") 我想用Efficient spark scala数据帧转换来实现这一点。帮忙 尝试了下面的解决方案,但不适用于我。我需要更新版本的Spark吗 / __/__ ___ _____/ /__ _\ \/ _
scala> var df = sc.parallelize(Seq("2020-07-17T17:52:48.758512Z")).toDF("ts")
我想用Efficient spark scala数据帧转换来实现这一点。帮忙
尝试了下面的解决方案,但不适用于我。我需要更新版本的Spark吗
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.4.6
/_/
Using Scala version 2.11.12 (OpenJDK 64-Bit Server VM, Java 1.8.0_252)
...
scala> var df = sc.parallelize(Seq("2020-07-17T17:52:48.758512Z")).toDF("ts")
df: org.apache.spark.sql.DataFrame = [ts: string]
scala> df.withColumn("ts1", to_timestamp(col("ts"), "yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z").cast("long")).show(false)
+---------------------------+----+
|ts |ts1 |
+---------------------------+----+
|2020-07-17T17:52:48.758512Z|null|
+---------------------------+----+
scala> df.withColumn("ts1", to_timestamp(col("ts"), "yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z").cast("double")).show(false)
+---------------------------+----+
|ts |ts1 |
+---------------------------+----+
|2020-07-17T17:52:48.758512Z|null|
+---------------------------+----+
尝试使用
yyyy-MM-dd'T'HH:MM:ss.SSSSSS'Z
格式解析时间戳字符串。为我工作
df.withColumn("ts1", to_timestamp(col("ts"), "yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z").cast("long")).show(false)
+---------------------------+----------+
|ts |ts1 |
+---------------------------+----------+
|2020-07-17T17:52:48.758512Z|1595022768|
+---------------------------+----------+
或者,您可以使用unix\u时间戳
而不是按如下方式强制转换
df.withColumn("ts1", unix_timestamp(to_timestamp(col("ts"), "yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z")))
尝试使用
yyyy-MM-dd'T'HH:MM:ss.SSSSSS'Z
格式解析时间戳字符串。为我工作
df.withColumn("ts1", to_timestamp(col("ts"), "yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z").cast("long")).show(false)
+---------------------------+----------+
|ts |ts1 |
+---------------------------+----------+
|2020-07-17T17:52:48.758512Z|1595022768|
+---------------------------+----------+
或者,您可以使用unix\u时间戳
而不是按如下方式强制转换
df.withColumn("ts1", unix_timestamp(to_timestamp(col("ts"), "yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z")))
你能分享你期望的输出格式吗?1595022768759,包括毫秒。你能分享你期望的输出格式吗?1595022768759,包括毫秒。这是最接近的秒,对吗?有没有可能精确到毫秒,日期的SSSS部分?精确到毫秒,对吗?有没有可能精确到毫秒,也就是日期的SSSS部分?