不需要自定义项。您可以使用内置方法
concat
将列组合在一起,包括格式化的字符串
timestamp
具有特定日期格式的列,如下所示:
import spark.implicits._
import org.apache.spark.sql.functions._
import java.sql.Timestamp
val df = Seq(
("1001", Timestamp.valueOf("2018-11-15 09:00:00"), "Event1"),
("1002", Timestamp.valueOf("2018-11-16 10:30:00"), "Event2")
).toDF("userID", "timestamp", "eventID")
val dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
df.
withColumn("docID", concat($"userID", date_format($"timestamp", dateFormat), $"eventID")).
show(false)
// +------+-------------------+-------+--------------------------------------+
// |userID|timestamp |eventID|docID |
// +------+-------------------+-------+--------------------------------------+
// |1001 |2018-11-15 09:00:00|Event1 |10012018-11-15T09:00:00.000-0800Event1|
// |1002 |2018-11-16 10:30:00|Event2 |10022018-11-16T10:30:00.000-0800Event2|
// +------+-------------------+-------+--------------------------------------+