当前,我得到了一个数据文件,该文件逐行处理,大多数行包含我需要的一条记录,例如:id,name,total

但是某些行包含多个记录,例如:id1,name1,total1,id2,name2,total2

我编写了load函数,并尝试返回由元组列表组成的元组。但是我不知道如何处理以下数据?

(((id1,name1,total1),(id2,name2,total2))...

还有另一个关于loadfun的问题,如果我发现某行包含无效值,我应该返回一个空元组还是将行阅读器设置为下一行?

谢谢。

最佳答案

我得到了一个解决方案,它定义了自己的加载或存储。
对于加载,请定义文件输入。
对于商店,在我的put next函数中定义输出,如下所示。

      @Override
      public void putNext(Tuple t) throws IOException {
              List<Object> all = t.getAll();
              for (Object o : all) {
                  logger.info(o.getClass());
                  Tuple tuple = (Tuple) o;
                  try {
                      recordWriter.write(null, new Text(tuple.toString()));
                  } catch (InterruptedException e) {
                      e.printStackTrace();
                  }
              }
          }

关于hadoop - Hadoop Pig一行包含多个记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20771746/

10-11 06:56