1

我有这个文件,其中包含 Hadoop 中的数据列表。我已经构建了一个简单的 Pig 脚本,它通过id 号分析文件,依此类推......

我正在寻找的最后一步是:我想为每个唯一的id number创建(存储)一个文件。所以这应该取决于一个组步骤......但是,我不明白这是否可能(也许有一个自定义商店模块?)。

任何想法?

谢谢

丹尼尔

4

2 回答 2

2

在记住 frail 所说的话的同时,PiggyBank 中的MultiStorage似乎就是您正在寻找的东西。

于 2011-03-14T18:00:14.413 回答
0

要获取输出(文件或任何内容),您需要将数据分配给变量,这就是它的工作方式STORE。如果 id 是有限的和有限的,你可以FILTER一个接一个,然后STORE它们。(我总是对大约 20-25 的动作类型这样做)。

但是,如果您非常需要获取每个唯一的 id 文件,则制作 2 个文件。1 包含按 id 分组的全部数据,1 仅包含唯一 id。然后尝试生成 1 个(或更多,如果你有太多)过滤该 id 的猪脚本。但这是一个糟糕的解决方案。假设您将 10 个 id 分组到一个猪脚本中,您将拥有(唯一 id 计数/10)个猪脚本来运行。

请注意,Hdfs 不擅长处理太多的小文件。

编辑: 更好的解决方案是通过唯一 id 对大文件进行 GROUP 和 SORT 排序。然后,由于它已排序,您可以使用 3rd 方脚本轻松划分内容。

于 2011-03-12T11:14:15.040 回答