我有一个Apache Spark 2.x数据框,其中包含以下列:
scala> df.printSchema
root
|-- id: string (nullable = true)
|-- countryCode: string (nullable = true)
|-- detail: string (nullable = true)
|-- epoch: long (nullable = true)
我想基于纪元时间戳(Unix UTC时间)以“ yyyy-MM-dd”格式创建带有日期字符串的新列。然后,我将日期字符串用作分区列。
如何创建带有日期字符串的列?要仅执行Java转换,我将使用SimpleDateFormat("yyyy-MM-dd")
,但是我不确定如何也创建新列。
答案 0 :(得分:1)
方法from_unixtime应该是您想要的。例如:
import org.apache.spark.sql.functions._
val df = Seq(
(1, "1538384400"),
(2, "1538481600"),
(3, "1538588200")
).toDF("id", "epoch")
df.withColumn("date", from_unixtime($"epoch", "yyyy-MM-dd")).
show
// +---+----------+----------+
// | id| epoch| date|
// +---+----------+----------+
// | 1|1538384400|2018-10-01|
// | 2|1538481600|2018-10-02|
// | 3|1538588200|2018-10-03|
// +---+----------+----------+