我正在尝试在 Scala 中编写 Pig UDF(使用 Eclipse)。我在 java 构建路径中添加了 pig.jar 作为库,这似乎解决了以下 2 个导入:
- 导入 org.apache.pig.EvalFunc
- 导入 org.apache.pig.data.Tuple
但是我遇到了 2 个无法解决的错误:
- org.apache.pig.EvalFunc[T] 没有构造函数
- value get 不是 org.apache.pig.data.Tuple 的成员(尽管我确信 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!")
}
}
有人可以帮我解决这个问题吗?
提前致谢!!!