- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的数据框中,我有一列 TimestampType 格式为“2019-03-16T16:54:42.968Z”的列,我想将其转换为格式为“201903161654”的 StringType 列,而不是通用时间戳列。这是因为我需要根据字符串格式的时间戳对多个目录进行分区,如果我在时间戳列上分区,它会在创建目录时创建特殊字符。
我可以在spark中使用任何api将Timestamp列转换为具有上述格式的字符串类型吗?
最佳答案
使用 unix_timestamp 和 date_format 函数
scala> val dt = Seq("2019-03-16T16:54:42.968Z").toDF("ts_str")
dt: org.apache.spark.sql.DataFrame = [ts_str: string]
scala> dt.select(unix_timestamp('ts_str,"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")).show
+----------------------------------------------------+
|unix_timestamp(ts_str, yyyy-MM-dd'T'HH:mm:ss.SSS'Z')|
+----------------------------------------------------+
| 1552735482|
+----------------------------------------------------+
scala> dt.select(date_format(unix_timestamp('ts_str,"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").cast("timestamp"), "yyyyMMddHHmm").as("res") ).show
+------------+
| res|
+------------+
|201903161654|
+------------+
scala>
或仅使用 to_timestamp 和 date_format 函数
scala> val dt = Seq("2019-03-16T16:54:42.968Z").toDF("ts_str")
dt: org.apache.spark.sql.DataFrame = [ts_str: string]
scala> dt.withColumn("ts_str",to_timestamp('ts_str,"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")).show(false)
+-------------------+
|ts_str |
+-------------------+
|2019-03-16 16:54:42|
+-------------------+
scala> dt.withColumn("ts_str",date_format(to_timestamp('ts_str,"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"), "yyyyMMddHHmm" )).show(false)
+------------+
|ts_str |
+------------+
|201903161654|
+------------+
scala>
关于scala - Spark 将 TimestampType 转换为 yyyyMMddHHmm 格式的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55212061/
我试图通过 Powershell 从 WMI 获取 SCCM MP 的详细信息。 事情是我可以从 WMI 获取的数据,但日期格式不同,我无法转换。可能缺乏一些知识。 $query = Get-WmiO
在我的数据框中,我有一列 TimestampType 格式为“2019-03-16T16:54:42.968Z”的列,我想将其转换为格式为“201903161654”的 StringType 列,而不
在我的数据框中,我有一列 TimestampType 格式为“2019-03-16T16:54:42.968Z”的列,我想将其转换为格式为“201903161654”的 StringType 列,而不
在我的数据库中,我有一个类型为 varchar 的字段日期,其中日期以以下格式存储 yyyyMMddhhmm,没有空格或其他字符分隔它们。 现在我需要将此日期与 C# DateTime 进行比较,因此
我有一个 table1,每天都会上传数据。源的格式和结构可能不可靠,因此为了避免麻烦和停机,我想每天在上传运行之前拍摄 table1 的快照。我想将备份命名为 table1.YYYYMMDDHHMM.
我是一名优秀的程序员,十分优秀!