gpt4 book ai didi

python-2.7 - pig 过滤器不工作

转载 作者:可可西里 更新时间:2023-11-01 15:35:32 26 4
gpt4 key购买 nike

有人遇到 Pig 过滤器无法正常工作的问题吗?而且通常表现得很愚蠢。

例如,我有一些看起来像这样的日志。

a1

(2013-12-25 02:55:08,000085594,15468,80365991,1387940111723)
(2013-12-25 02:55:08,000085594,63943,80365991,1387940111723)
(2013-12-25 02:55:08,000085594,64014,80365991,1387940111723)

decribe a1

a1: {time:chararray, id:chararray, buckets::bucket: int, chararray, chararray)

如果我尝试过滤 $2。我收到一个错误。

a2 = filter a2 by ($2 == 64034);

我收到以下错误。错误 1066:无法打开别名 a2 的迭代器。

我纠结了好久,没弄明白。所以,我错了一个 Python UDF,它在数字匹配时返回"is"或“否”。

@outputSchema('y:chararray')
def bucket(bucket):
if bucket == '64034':
return "Yes"
else:
return "No"

a3 = foreach a1 generate time, myfuncs.bucket($2), $3, $4;

describe a3
a3: {time:chararray, id:chararray, y:chararray, chararray, cararray}

没有,当我过滤这个是有效的。

a4 = filter a3 by ($2 == 'Yes');

这会产生所需的结果。但是,我需要使用其他 UDF 对数据运行更多的转换。这些 UDF 不会对 $2 列做任何事情。他们只查看 $1 和 $3 列。当我在过滤器之前使用它们时,这两个 UDF 都有效。但是,如果我尝试在过滤器之后应用 UDF,我会收到“无法打开别名”错误。此外,如果我在过滤器之前执行额外的 UDF,然后应用过滤器 - 过滤器停止工作并且我收到“无法打开别名”错误。同样,这些根本不会改变 $2 的模式。

那么,这里可能发生了什么?一,为什么过滤器原来不起作用。第二,为什么某些 UDF 可以工作,然后似乎没有逻辑地工作。任何类型的故障排除指导都会有所帮助。

最佳答案

好像 a2 还没有定义。更有可能的是,代码应该如下所示:

a2 = filter a1 by ($2 == 64034);

关于python-2.7 - pig 过滤器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26241489/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com