我是 PigLatin 的初学者,我需要一些(我认为是基本的)帮助。

我的数据描述为:

xmlToTuple: {(node_attr_id: int,tag: {(tag_attr_k: chararray,tag_attr_v: chararray)})}

和 DUMP 像这样:
((704398904,{(lat,-13.00583333),(lon,45.24166667)}))
((1230941976,{(place,village)}))
((1230941977,{(name,Mtsahara)}))
((1751057677,{(amenity,fast_food),(name,Brochetterie)}))
((100948360,{(amenity,ferry_terminal)}))
((362795028,{(amenity,fuel),(operator,Total)}))

我想提取 tag_attr_k 字段具有特定值的记录。例如,给我一个 tag_attr_k = amesity 的记录?那应该是:
((1751057677,{(amenity,fast_food),(name,Brochetterie)}))
((100948360,{(amenity,ferry_terminal)}))
((362795028,{(amenity,fuel),(operator,Total)}))

任何人都可以解释我这样做吗?我有点失落……

最佳答案

您应该使用 map 而不是一袋元组。键将是您的 tag_attr_k s,您的值将是您的 tag_attr_v s。因此,您的一行数据将是,例如,

(1751057677,['amenity'#'fast_food', 'name',#'Brochetterie'])

然后,您可以通过尝试访问 key 并检查该值是否为 NULL 来检查 key 是否存在。
FILTER xml BY tag_attr#'amenity' IS NOT NULL;

关于hadoop - 过滤内袋的嵌套值上的元组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14464404/

10-11 04:05