我想在Scala中編寫Pig UDF(使用Eclipse)。我已經加入pig.jar作爲Java構建路徑庫,這似乎解決了2個進口下面:如何在Scala中編寫Pig UDF
- 進口org.apache.pig.EvalFunc
- 進口org.apache.pig.data.Tuple
但是我得到的,我解決不了2個錯誤:
- org.apache.pig.EvalFunc [T]沒有構造
- 值所得到的並不是一個org.apache.pig.data.Tuple的成員(雖然我相信,元組get方法)
下面是完整的代碼:
package datesUDFs
import org.apache.pig.EvalFunc
import org.apache.pig.data.Tuple
class getYear extends EvalFunc {
val extractDate = """^(\d\d\d\d)-\d\d-\d\d \d\d:\d\d:\d\d""".r
def isDate(dtString: String): Boolean = extractDate.findFirstIn(dtString).nonEmpty
override def exec(input: Tuple): Int = input.get(0) match {
case dtString: String =>
if (!isDate(dtString)) throw new IllegalArgumentException("Invalid date string!")
else (for (extractDate(year) <- extractDate.findFirstIn(dtString)) yield year).head.toInt
case _ => throw new IllegalArgumentException("Invalid function call!")
}
}
任何人可以幫助我解決這個問題?
在此先感謝!
謝謝傑克。不幸的是,雖然我仍然得到相同的錯誤?你使用Eclipse還是從shell編譯?如果是的話,你的命令行是什麼?再次感謝 –