Pig 在空集中生成结果

Posted

技术标签:

【中文标题】Pig 在空集中生成结果【英文标题】:Pig Generate results in empty set 【发布时间】:2014-03-04 19:01:26 【问题描述】:

我正在编写一个相当基本的 Pig Latin 脚本,但我在执行 GENERATE 时遇到了问题。在生成之前,转储显示数据看起来像我预期的那样。但是,一旦我执行 GENERATE,结果是一个空集。根据 Pig Latin 参考手册,这似乎是正确的。当脚本运行时,我没有收到任何错误(它报告成功。)如果我在 LOAD 期间对字段使用名称或位置表示法,则会发生这种情况。

我的脚本:

B = LOAD 'data';
DUMP B;
C = FOREACH B GENERATE (int)$2, (int)$3, (int)$4;
DESCRIBE C;
DUMP C;

这是输出:

(2014-01-26 08:14:21,672,1,0,1,55,...)
(2014-01-26 08:14:23,654,1,1,0,55,...)

C: f1: int,f2: int,f3: int

(,,)
(,,)

为什么 DUMP C 的输出不产生 (1,0,1), (1,1,0) ?

【问题讨论】:

【参考方案1】:

您的数据文件以逗号分隔。默认情况下,加载函数将解析制表符分隔的记录。 您可以使用 PigStorage 加载器来读取字符分隔的记录:

B = LOAD 'data' USING PigStorage(',');

【讨论】:

就是这样。谢谢!

以上是关于Pig 在空集中生成结果的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Pig 和 HBaseStorage 存储到 HBase

使用 pig 生成最大数量

Pig - 生成 JSON 文件的结构格式

未设置 Pig 架构元组。不会生成代码

在 Pig 中投影分组元组

在单列上应用 Pig UDF 并自动生成所有其他列