考虑以下代码:
ebook = LOAD '$ebook' USING PigStorage AS (line:chararray);
ranked = RANK ebook;
关系
ranked
有两个字段:行号和文本。该文本称为line
,可以用该别名引用,但是RANK
生成的行号没有。结果,我可以引用的唯一方法是$0
。如何给
$0
命名,以便在将其连接到另一个数据集并且不再是$0
时可以更轻松地引用它? 最佳答案
您要做的是为您的数据定义一个架构。这样做的最简单方法是像使用AS
一样使用LOAD
密钥库。
您可以使用三个运算符定义一个架构:LOAD
,STREAM
和FOREACH
。
在这里,最简单的方法如下:
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/