在 Pig 中编写 udf 有点像教程

2024-01-31

我是 Pig 新手..并且正在尝试编写 udf 函数。

所以基本上这是问题陈述。

我有一个这样的虚拟数据..

 user_id, movie_id, date_time_stamp

所以我想做的就是这个。 如果交易是在

    9 am and 11 am --> breakfast
    and so on

这是我的猪脚本

     REGISTER path/myudfs.jar
      in = LOAD 'path/input' USING  
          PigStorage('\\u001') AS (user:long,movie:long, time:chararray);

     result = foreach in GENERATE  myudfs.time(time);
     STORE result INTO 'path/output/time' using PigStorage(',');

现在myudf.jar java代码是这样的

      public class time extends EvalFunc<String>{

public String exec(Tuple input) throws IOException {

    if ((input == null) || (input.size() == 0))
        return null;
    try{
        String time = (String) input.get(0) ;
        DateFormat df = new SimpleDateFormat("hh:mm:ss.000");
        Date date = df.parse(time);
        String timeOfDay = getTimeOfDay(date);
        return timeOfDay;
    } catch (ParseException e) {
        //how will I handle when df.parse(time) fails and throws ParseException?
        //maybe:
        return null;
    }


}

所以它接受元组并返回一个字符串...(我也是java新手..)

之后我尝试运行这个脚本

 pig -f time.pig

它返回一个错误

   2012-11-12 08:33:08,214 [main] INFO    
    org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to  
  hadoop file system at: maprfs:///
  2012-11-12 08:33:08,353 [main] INFO  
      org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to  
                         map-reduce job tracker at: maprfs:///
  2012-11-12 08:33:08,767 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1069:  
     Problem resolving class version numbers for class myudfs.time

猪邮件列表上发布的一些内容是我的 PIG_CLASSPATH 未设置,我应该将其指向 /path/hadoop/conf

我这样做了..所以现在 $echo PIG_CLASSPATH --> /path/hadoop/conf

但我得到同样的错误

请指教。 谢谢

编辑1:查看日志时,错误跟踪是:

     Caused by: java.lang.UnsupportedClassVersionError: myudfs/time : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at org.apache.pig.impl.PigContext.resolveClassName(PigContext.java:427)
... 27 more

这像java问题吗?


要查找 jar 版本,请使用 winzip(或类似工具)打开 jar 并查找 manifest.mf。其中应该有一行显示“Created-By”,这将给出用于构建 jar 的 java 版本。

这需要比您用来构建应用程序的 java 版本更旧或相同。如果您在命令行中执行此操作,请输入:

java -version

或者在日食中转到

project(menu) > properties (menu item) > java build path (in list) > libraries (tab)

并查看您正在使用的 JDK/JRE 版本(您可以从目录中看出这一点,如果没有,则转到该目录并执行 java -version)。

您可能需要更新 eclipse 中的 java 版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Pig 中编写 udf 有点像教程 的相关文章

随机推荐

  • 使用 GSON 将 JSON 转换为 Java 对象时如何覆盖 Java 映射?

    我有一个 JSON 字符串 如下所示 status status date 01 10 2019 alerts labels field1 value1 field2 value2 field3 value3 field100 value1
  • Sphinx Note Block 在代码块下的列表中?

    我有一个问题 如果我想将注释块放在代码块下的列表中 它就会包含在代码块中 如果我取消缩进 列表编号会在注释后重新开始 所以基本上 我需要的是 Fixed list example First do spam Then do eggs som
  • 如何使用 BERT 找到与向量最接近的单词

    我正在尝试使用 BERT 获取给定单词嵌入的文本表示 或最接近的单词 基本上我试图获得与 gensim 类似的功能 gt gt gt your word vector array 0 00449447 0 00310097 0 024217
  • 谷歌的无图像按钮

    最近有几篇关于谷歌新的无图像按钮的文章 http stopdesign com archive 2009 02 04 recreating the button html http stopdesign com archive 2009 0
  • 将文本添加到绘图中

    x lt seq 3 3 0 01 y1 lt dnorm x 0 1 y2 lt 0 5 dnorm x 0 1 plot x y1 type l bty L xlab X ylab dnorm X points x y2 type l
  • 数组中所有元素的总和

    我是编程初学者 我想计算数组中所有元素的总和 我做了这个 但我看不出我的错误在哪里 function ArrayAdder array this sum 0 this array array ArrayAdder prototype com
  • python 按不同标准对元组进行排序

    我有一个清单a 1 a 1 b 2 c 我想得到这个列表 2 c 1 a 1 b 如果我这样做 sorted a reverse True 我只能得到 2 c 1 b 1 a 我怎样才能得到我想要的列表 如果您想保留原始列表中的排序顺序 但
  • 如何通过 SoundCloud API 添加评论

    我想通过 SoundCloud API 发表评论 但查看文档 http developers soundcloud com docs api reference tracks这似乎是不可能的 唯一可用的方法 tracks id commen
  • 为什么 React 需要 Babel 和 Webpack 才能工作?

    我正在查看 vue js 的 wiki 页面 看到了这个 与 React 开发相比 Vue 可以集成到 现有的 Web 应用程序更加容易 通常 Web 应用程序 只需包含 Vue js 即可立即开始使用 Vue JavaScript 库 与
  • ASP.NET MVC 中的超快速文本到语音 (WAV -> MP3)

    这个问题本质上是关于微软的语音API SAPI 对于服务器工作负载的适用性以及它是否可以在内部可靠地使用 w3wp用于语音合成 我们有一个异步控制器 它使用本机System Speech NET 4 中的程序集 不是Microsoft Sp
  • 如何刷新 Google OAuth2 AccessToken

    我见过很多问题 https stackoverflow com questions 22357348 google apis client for csharp auth using refresh token关于这个问题有不同的答案 有些
  • 一次循环遍历 2 个列表

    我有两个长度相同的列表 是否可以同时循环这两个列表 我正在寻找正确的语法来执行以下操作 foreach itemA itemB in ListA ListB Console WriteLine itemA ToString itemB To
  • 如何对向量列表执行成对运算(如“%in%”)和集合运算

    这个问题的动机是如何快速查看 R 中多个向量的任何元素是否相等 https stackoverflow com q 39060567 4891738 但不相同 重复 作为一个小例子 假设我们有一个包含 4 个向量的列表 set seed 0
  • 通过 wsHttpBinding 在 PHP 中调用 WCF WebService

    我有一个 WCF Web 服务 我可以通过 basicHttp 连接到它 但不能通过 wsHttp 连接到它 我尝试通过以下方式通过 wshttp 连接到它 service new SoapClient http service compa
  • Angular 5 Service Worker 不工作/不缓存背景图像

    我无法让我的 Angular5 Service Worker 工作 我有两个主要问题 Service Worker 不会缓存用作背景图像的资产图像 模拟网络断开连接后 服务工作人员最初从缓存中提取文件 上述非缓存文件除外 但在第二次刷新后会
  • SQL 更新可选参数 PHP

    我们想要改变将值从 PHP 传递到存储过程 T SQL 的方式 我对 PHP 只有很少的经验 但我将尝试通过与我们的 Web 开发人员的讨论来解释该过程 当前流程 测试表示例 为了更新记录 例如本示例中的 Field3 我们会将所有现有值传
  • 从 select 将记录插入到 OrientDB 类的嵌入字段中

    我正在评估 OrientDB 数据库 我有两个从关系数据库导入的文档类 class Order with properties ID integer OrderItems EmbeddedList of OrderItem and clas
  • 如何访问主项目中的子项目头文件

    我有一个主项目和另一个作为子项目添加的项目 我想将子项目中定义的头文件访问到主项目中 但不幸的是它说文件找不到错误 请查看附件图片 我应该修改什么来访问子项目的头文件 您需要将子项目的路径添加到search path for headers
  • 将实体中的列表转换为数据库中的单个字符串列

    我有一个VARCHAR我的数据库中的字段 该字段的值为val1 val2 val3 是否可以将其设置为ArrayList
  • 在 Pig 中编写 udf 有点像教程

    我是 Pig 新手 并且正在尝试编写 udf 函数 所以基本上这是问题陈述 我有一个这样的虚拟数据 user id movie id date time stamp 所以我想做的就是这个 如果交易是在 9 am and 11 am gt b