Scala 如何将时间戳拆分为日期和时间?
当我使用强制转换将列值更改为DateType时,它显示错误Scala 如何将时间戳拆分为日期和时间?,scala,apache-spark,Scala,Apache Spark,当我使用强制转换将列值更改为DateType时,它显示错误 //loading DF val df1 = spark.read.option("header",true).option("inferSchema",true).csv("time.csv ") // +-------------+ | date_time| +-----+-------+ |1545905416000| +-----+-------+ 有什么解决办法吗 我试过了 => the datatype is
//loading DF
val df1 = spark.read.option("header",true).option("inferSchema",true).csv("time.csv ")
//
+-------------+
| date_time|
+-----+-------+
|1545905416000|
+-----+-------+
有什么解决办法吗
我试过了
=> the datatype is not matching (date_time : bigint)in df
df1.withColumn("date_time", df1("date").cast(DateType)).show()
但是它不起作用。欢迎使用StackOverflow 您需要将时间戳从历元格式转换为日期,然后进行计算。您可以尝试以下方法:
val a = df1.withColumn("date_time",df1("date").cast(StringType)).drop("date").toDF()
a.withColumn("fomatedDateTime",a("date_time").cast(DateType)).show()
我的用例中的示例数据:
import spark.implicits._
val df = spark.read.option("header",true).option("inferSchema",true).csv("time.csv ")
val df1 = df.withColumn(
"dateCreated",
date_format(
to_date(
substring(
from_unixtime($"date_time".divide(1000)),
0,
10
),
"yyyy-MM-dd"
)
,"dd-MM-yyyy")
)
.withColumn(
"timeCreated",
substring(
from_unixtime($"date_time".divide(1000)),
11,
19
)
)
你需要调整时间。默认情况下,它将是您的时区。对我来说是GMT+05:30
。希望有帮助。尝试将“1545905416000”时间戳转换为日期和时间,并将其存储到不同的列中
+---------+-------------+--------+-----------+-----------+
| adId| date_time| price|dateCreated|timeCreated|
+---------+-------------+--------+-----------+-----------+
|230010452|1469178808000| 5950.0| 22-07-2016| 14:43:28|
|230147621|1469456306000| 19490.0| 25-07-2016| 19:48:26|
|229662644|1468546792000| 12777.0| 15-07-2016| 07:09:52|
|229218611|1467815284000| 9996.0| 06-07-2016| 19:58:04|
|229105894|1467656022000| 7700.0| 04-07-2016| 23:43:42|
|230214681|1469559471000| 4600.0| 27-07-2016| 00:27:51|
|230158375|1469469248000| 999.0| 25-07-2016| 23:24:08|
+---------+-------------+--------+-----------+-----------+