hadoop pig一行包含多个记录

ni65a41a  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(281)

目前,我得到了一个逐行处理的数据文件,大多数行包含一个我需要的记录,比如:id,name,total
但是有些行包含多个记录,例如:id1,name1,total1,id2,name2,total2
我编写了我的加载函数,并试图返回元组列表组成的元组。但我不知道如何处理以下数据?
((id1,name1,total1),(id2,name2,total2))。。。
另一个问题是关于loadfun,如果我发现某行包含无效值,我应该返回一个空元组还是将行读取器设置到下一行?
谢谢。

iyfjxgzm

iyfjxgzm1#

我得到了一个解决方案,那就是定义我自己的加载或存储。对于load,定义文件输入。对于存储,在我的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();
                  }
              }
          }

相关问题