【问题标题】:Extract only Hour from Epochtime in scala仅从 Scala 中的 Epochtime 中提取 Hour
【发布时间】:2019-11-04 16:50:14
【问题描述】:

我有一个数据框,其中一列作为纪元时间。 我只想从中提取小时并将其显示为单独的列。

以下是示例数据框:

+----------+-------------+
|    NUM_ID|        STIME|
+----------+-------------+
|xxxxxxxx01|1571634285000|
|xxxxxxxx01|1571634299000|
|xxxxxxxx01|1571634311000|
|xxxxxxxx01|1571634316000|
|xxxxxxxx02|1571634318000|
|xxxxxxxx02|1571398176000|
|xxxxxxxx02|1571627596000|

下面是预期的输出。

+----------+-------------+-----+
|    NUM_ID|        STIME| HOUR|
+----------+-------------+-----+
|xxxxxxxx01|1571634285000|  10 |
|xxxxxxxx01|1571634299000|  10 |
|xxxxxxxx01|1571634311000|  10 |
|xxxxxxxx01|1571634316000|  10 |
|xxxxxxxx02|1571634318000|  10 |
|xxxxxxxx02|1571398176000|  16 |
|xxxxxxxx02|1571627596000|  08 |

我试过了

val test = test1DF.withColumn("TIME", extract HOUR(from_unixtime($"STIME"/1000)))

处引发异常
<console>:46: error: not found: value extract

尝试如下获取日期格式,即使它不起作用。

val test = test1DF.withColumn("TIME", to_timestamp(from_unixtime(col("STIME")))

dataframe中STIME的数据类型为Long。

是否有任何线索可以从 Long 数据类型的 epochtime 中提取小时?

【问题讨论】:

  • 它与val test = test1DF.withColumn("TIME", hour(from_unixtime($"STIME"/1000)))合作

标签: scala dataframe apache-spark apache-spark-sql


【解决方案1】:

从时间戳中提取小时就像使用 hour() 函数一样简单:

import org.apache.spark.sql.functions._

val df_with_hour = df.withColumn("TIME", hour(from_unixtime($"STIME" / 1000)))

df_with_hour.show()
// +-------------+----+
// |        STIME|TIME|
// +-------------+----+
// |1571634285000|   5|
// |1571398176000|  11|
// |1571627596000|   3|
// +-------------+----+

(注意:我在不同的时区)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多