我有變數,例如:
val loadingDate: = LocalDateTime.of(2020, 1, 2, 0, 0, 0)
我需要使用此變數的值添加一個額外的列。
當我嘗試這樣做時:
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
DF.withColumn("dttm", expr(s"$loadingDate.format(formatter)}").cast("timestamp"))
我得到這樣的錯誤:
Exception in thread "main" java.lang.reflect.InvocationTargetException
Caused by: org.apache.spark.sql.catalyst.parser.ParseException
mismutched input '00' expecting <EOF>(line 1, pos 11)
==SQL==
2020-01-02 00:00:00
-------------^^^
我可以使用 LocalDateTime 型別的變數在 Spark 中添加額外的列嗎?還是我必須使用其他型別?
我需要從外部系統獲取日期并在 Spark 中使用此日期。我怎樣才能以最好的方式做到這一點?使用哪些型別?
uj5u.com熱心網友回復:
您可以使用決議后的字串val dateString = s"$loadingDate.format(formatter)"并DateType使用to_date()函式將其轉換為 Spark ,首先您必須將 String 轉換為文字(或者換句話說,將您的字串表示為一列),以便使用lit(dateString).
val date: LocalDateTime = LocalDateTime.of(2020, 1, 2, 0,0, 0)
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
val formattedDate = date.format(formatter).
val dfWithYourDate = df.withColumn("your_date", to_date(lit(formattedDate), "yyyy-MM-dd HH:mm:ss"))
如果您需要TimestampType而不是to_date()使用功能to_timestamp()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/358551.html
上一篇:你如何定義一個只能由它的伴生物件創建的列舉?(想想聰明的建構式)
下一篇:Play框架編譯時依賴注入和單例
