如何在 Scala 中编写 Pig UDF [英] How to write a Pig UDF in Scala

查看:30
本文介绍了如何在 Scala 中编写 Pig UDF的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在 Scala 中编写一个 Pig UDF(使用 Eclipse).我在 java 构建路径中添加了 pig.jar 作为库,这似乎解决了下面的 2 个导入:

I am trying to write a Pig UDF in Scala (using Eclipse). I have added pig.jar as a library in the java build path which seems to resolve the 2 imports below:

  • 导入 org.apache.pig.EvalFunc
  • 导入 org.apache.pig.data.Tuple

但是我收到了 2 个无法解决的错误:

however I get 2 errors which I cannot resolve:

  1. org.apache.pig.EvalFunc[T] 没有构造函数
  2. 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!")
  }
}

有人能帮我解决这个问题吗?

Can anybody help me resolving this issue?

提前致谢!!!

推荐答案

解决了!我将 hadoop-common-2.2.0.jarcommons-logging-1.1.3.jar 添加到我的 java 构建路径中,问题得到解决.

solved it! I added hadoop-common-2.2.0.jar and commons-logging-1.1.3.jar to my java build path and the problems were resolved.

这篇关于如何在 Scala 中编写 Pig UDF的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆