我目前正在使用Pig中包含多个值的字段。我希望按位置按产品对用户进行计数,并且我使用LOAD来创建以下格式的数据:(Location, {(product1), (product2), (product3)}, numOfUsers)。我希望将每种产品分离出来,并将它们视为独立的实体,这意味着我希望得到以下结果:

(location, (product1), numOfUsers)
(location, (product2), numOfUsers)
(location, (product3), numOfUsers)

我相信我需要使用某种嵌套的FOREACH函数,但是我有点迷路了。由于元组已分组,因此每个元组中包含的每个产品的用户数将相同。我是初学者(三天前从Pig开始),因此任何指导都将不胜感激。我相信我会使用FLATTEN吗?

最佳答案

FOREACH A GENERATE location, FLATTEN(products) AS product, numOfUsers;

解决了问题。这创建了存储在袋子中的所有记录的叉积。使用了http://www.st.ewi.tudelft.nl/~hauff/BDP-Lectures/9_10_advanced_pig.pdf作为引用。非常有用的资源。

08-28 05:17