我有这样的文件:
cat > hdfs_bag.txt
{(1,pawel,kowalski,36),(4,pawel,kowalski,47)}
{(2,john,smith,55),(5,john,smith,66)}
{(3,paul,psmithski,44),(6,paul,psmithski,88)}
然后我加载它并把它转换成一个包:
grunt> a = load 'hdfs_bag.txt' as (b1 : bag { k1:tuple (id, name, surname, age)});
grunt> describe a;
a: {b1: {k1: (id: bytearray,name: bytearray,surname: bytearray,age: bytearray)}}
我想要实现的结果是包含两个仅包含 id 和 age 的元组的包:
({(1,36),(4,47)})
({(2,55),(5,66)})
({(3,44),(6,88)})
您至少可以建议第一步吗?
问候
帕维尔
最佳答案
我找到了一个解决方案:
b = foreach a generate $0.($0,$3);
给出预期的结果:
({(1,36),(4,47)})
({(2,55),(5,66)})
({(3,44),(6,88)})
很简单,但不是很明显...
关于hadoop - 如何从带有 Pig 的袋子中获取很少的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30268504/