当前,我得到了一个数据文件,该文件逐行处理,大多数行包含我需要的一条记录,例如: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/