Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spark scala数据框架,将复杂的数据解析为长数据_Scala_Date_Apache Spark_Apache Spark Sql - Fatal编程技术网

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部分?