Hadoop Pig一行包含多个记录

时间:2013-12-25 10:30:25

标签: hadoop tuples apache-pig

目前,我有一个逐行处理的数据文件,大部分行包含我需要的一条记录,例如:id,name,total

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

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

((ID1,NAME1总计1),(ID2,NAME2共2))...

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

感谢。

1 个答案:

答案 0 :(得分:0)

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

      @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();
                  }
              }
          }