考虑以下代码:

ebook = LOAD '$ebook' USING PigStorage AS (line:chararray);
ranked = RANK ebook;

关系ranked有两个字段:行号和文本。该文本称为line,可以用该别名引用,但是RANK生成的行号没有。结果,我可以引用的唯一方法是$0

如何给$0命名,以便在将其连接到另一个数据集并且不再是$0时可以更轻松地引用它?

最佳答案

您要做的是为您的数据定义一个架构。这样做的最简单方法是像使用AS一样使用LOAD密钥库。

您可以使用三个运算符定义一个架构:LOADSTREAMFOREACH
在这里,最简单的方法如下:

ebook = LOAD '$ebook' USING PigStorage AS (line:chararray);
ranked = RANK ebook;
renamed_ranked = foreach B generate $0 as rank, $1;

您可以在associated documentation上找到更多信息。

还很高兴知道此操作不会向您的脚本添加迭代。就像@ ArnonRotem-Gal-Oz所说的那样:

关于hadoop - 如何重命名关系中的字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24207095/

10-12 23:47