gpt4 book ai didi

scala - spark分区数据写入时间戳

转载 作者:行者123 更新时间:2023-12-04 13:46:00 24 4
gpt4 key购买 nike

我有一些数据具有很长的时间戳列字段及其纪元标准,我需要使用 spark scala 以 yyyy/mm/dd/hh 等拆分格式保存该数据

data.write.partitionBy("timestamp").format("orc").save("mypath") 

这只是按时间戳分割数据,如下所示
timestamp=1458444061098
timestamp=1458444061198

但我希望它像
└── YYYY
└── MM
└── DD
└── HH

最佳答案

您可以为此利用各种 spark sql 日期/时间函数。首先,添加一个从 unix 时间戳列创建的新日期类型列。

val withDateCol = data
.withColumn("date_col", from_unixtime(col("timestamp", "YYYYMMddHH"))

之后,您可以将年、月、日和小时列添加到 DF,然后按这些新列进行分区以进行写入。
withDateCol
.withColumn("year", year(col("date_col")))
.withColumn("month", month(col("date_col")))
.withColumn("day", dayofmonth(col("date_col")))
.withColumn("hour", hour(col("date_col")))
.drop("date_col")
.partitionBy("year", "month", "day", "hour")
.format("orc")
.save("mypath")

partitionBy 子句中包含的列不会成为文件架构的一部分。

关于scala - spark分区数据写入时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52527888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com