Pig Latin:使用一个表中的字段作为位置值来访问另一个表中的数据

时间:2014-04-17 21:37:31

标签: apache-pig

假设我们有两张桌子。第一个表有以下描述:

animal_count:{zoo_name:chararray,counts:()}

“zoo_name”字段的含义很明显。 “计数”字段包含每种特定动物物种的计数。为了知道“count”元组中给定字段的确切种类,我们使用另一个表:

species_position:{species:chararray,position:int}

假设我们在“species_position”表中有以下数据: “老虎”,0 “大象”,1 “狮子”,2

此数据表示animal_count.counts中的第一个字段是给定动物园中的老虎数。该元组中的第二个字段是大象的数量,依此类推。因此,如果我们想要表示“圣地亚哥动物园”有2只老虎,4只大象而没有狮子的事实,我们将在“animal_count”表中提供以下数据: “圣地亚哥动物园”,(2,4,0)

鉴于此设置,如何编写查询以提取所有动物园中给定物种的数量?我希望有类似的东西:

FOREACH species_position GENERATE species,animal_count.counts。$ position;

当然,“animal_count.counts。$ position”将不起作用。

这是否可以在不使用UDF的情况下实现?

0 个答案:

没有答案