我有这个文件,其中包含 Hadoop 中的数据列表。我已经构建了一个简单的 Pig 脚本,它通过id 号分析文件,依此类推......
我正在寻找的最后一步是:我想为每个唯一的id number创建(存储)一个文件。所以这应该取决于一个组步骤......但是,我不明白这是否可能(也许有一个自定义商店模块?)。
任何想法?
谢谢
丹尼尔
我有这个文件,其中包含 Hadoop 中的数据列表。我已经构建了一个简单的 Pig 脚本,它通过id 号分析文件,依此类推......
我正在寻找的最后一步是:我想为每个唯一的id number创建(存储)一个文件。所以这应该取决于一个组步骤......但是,我不明白这是否可能(也许有一个自定义商店模块?)。
任何想法?
谢谢
丹尼尔
在记住 frail 所说的话的同时,PiggyBank 中的MultiStorage似乎就是您正在寻找的东西。
要获取输出(文件或任何内容),您需要将数据分配给变量,这就是它的工作方式STORE
。如果 id 是有限的和有限的,你可以FILTER
一个接一个,然后STORE
它们。(我总是对大约 20-25 的动作类型这样做)。
但是,如果您非常需要获取每个唯一的 id 文件,则制作 2 个文件。1 包含按 id 分组的全部数据,1 仅包含唯一 id。然后尝试生成 1 个(或更多,如果你有太多)过滤该 id 的猪脚本。但这是一个糟糕的解决方案。假设您将 10 个 id 分组到一个猪脚本中,您将拥有(唯一 id 计数/10)个猪脚本来运行。
请注意,Hdfs 不擅长处理太多的小文件。
编辑: 更好的解决方案是通过唯一 id 对大文件进行 GROUP 和 SORT 排序。然后,由于它已排序,您可以使用 3rd 方脚本轻松划分内容。