我試圖註冊火花SQL一些的UDF(用戶定義函數),當我嘗試編譯,我得到了下面的代碼類型不匹配錯誤:類型不匹配,找到單位,需要Int。使用模式匹配,斯卡拉與Java庫
csc.udf.register("DATEADD", (datePart: String, number: Int, date: Timestamp) => {
val time: Calendar = Calendar.getInstance
datePart match {
case "Y" => time.add(Calendar.YEAR, number)
case "M" => time.add(Calendar.MONTH, number)
case "D" => time.add(Calendar.DATE, number)
case "h" => time.add(Calendar.HOUR, number)
case "m" => time.add(Calendar.MINUTE, number)
case "s" => time.add(Calendar.SECOND, number)
case _ => 0
}
}: Int)
下面是我得到的錯誤:
[error] /vagrant/SQLJob/src/main/scala/sqljob/context/CassandraSQLContextFactory.scala:111: type mismatch;
[error] found : Unit
[error] required: Int
[error] case "Y" => time.add(Calendar.YEAR: Int, number)
[error] ^
[error] one error found
[error] (compile:compileIncremental) Compilation failed
[error] Total time: 7 s, completed Jul 2, 2015 4:19:29 PM
Calendar類是從java.util.Calendar中
時間戳如果從java.sql.Timestamp中