簡體   English   中英

如何在 spark-scala 中將字符串列(僅包含時間而不包含日期的列)轉換為 time_stamp?

[英]How to convert a string column (column which contains only time and not date ) to time_stamp in spark-scala?

我需要將僅包含時間作為字符串的列轉換為時間戳類型或 spark 中可用的任何其他時間函數。

下面是具有“Time_eg”作為字符串列的測試數據框,

Time_eg
12:49:09 AM
12:50:18 AM

轉換為時間之前的架構,

Time_eg: 字符串 (nullable = true)

//Converting to time stamp
val transType= test.withColumn("Time_eg", test("Time_eg").cast("timestamp"))

Schema 轉換為時間戳后,schema為

Time_eg:時間戳(可為空 = 真)

但是transType.show()的輸出為“Time_eg”列提供了空值。

請讓我知道如何將僅包含時間作為字符串的列轉換為 spark scala 中的時間戳?

如果有人可以幫助解決這個問題,非常感謝?

謝謝

您需要使用特定函數將字符串轉換為時間戳,並指定格式。 此外,Spark 中的時間戳表示完整日期(包含一天中的時間)。 如果您不提供日期,它將設置為 1970 年 1 月 1 日,即 unix 時間戳的開始。

在您的情況下,您可以按如下方式轉換字符串:

Seq("12:49:09 AM", "09:00:00 PM")
    .toDF("Time_eg")
    .select(to_timestamp('Time_eg, "hh:mm:ss aa") as "ts")
    .show
+-------------------+
|                 ts|
+-------------------+
|1970-01-01 00:49:09|
|1970-01-01 21:00:00|
+-------------------+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM