【发布时间】:2019-10-30 13:44:11
【问题描述】:
我有一个 formattedDataInputDateTime 字符串,我想将它作为 Timestamp 类型作为第二个字段插入到表中。
// Returns 2019-10-30T13:00Z
val localDateTimeZoned = OffsetDateTime.of(java.time.LocalDate.parse(currentDate), java.time.LocalTime.now, ZoneOffset.UTC).truncatedTo(ChronoUnit.HOURS)
// Returns 2019-10-30T13:00:00.000+0000
val formattedDataInputDateTime: String = localDateTimeZoned.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSxx")).toString
所以我写了以下查询,但不知道如何在此处插入formattedDataInputDateTime 作为时间戳?
spark.sql(
s"""INSERT INTO main.basic_metrics
|VALUES ('metric_name', ???,
|'metric_type', current_timestamp, false)""".stripMargin)
我已经尝试测试这种方法,但它导致了以下错误:
val ts = cast(unix_timestamp("$formattedDataInputDateTime", "yyyy-MM-dd'T'HH:mm:ss.SSSxx") as timestamp)
type mismatch;
found : String("$formattedDataInputDateTime")
required: org.apache.spark.sql.Column
【问题讨论】:
-
"$formattedDataInputDateTime"不正确。你需要$"formattedDataInputDateTime"。 $ 和第一个 " 颠倒了。(我一直这样做)。它可能无法为您解决所有问题,但需要更改。
标签: java scala apache-spark datetime apache-spark-sql