猪需要储存/装载才能工作
Pig needs store / load to work
我有 Pig 脚本,它只有在我在脚本中间存储和加载变量时才能工作。
我的试验表明像下面这样的序列在 DISTINCT 之后会失败:
- FOREACH
- 不同
- 群组
- FOREACH
- 商店
- 商店
但是如果我按如下方式存储然后加载变量,同样会成功:
- FOREACH
- 不同
- 商店
- 加载
- 群组
- FOREACH
- 商店
我的工作顺序是:
foreach/加入/foreach
组/foreach
加入/foreach
此外,我不能简单地编写存储和 rmf 函数的代码,因为 Pig 的代码优化将尝试跳过它认为无用的所有步骤(因为我存储一个变量并随后在同一变量名上加载它).
有没有人见过这种奇怪的行为?
编辑:很遗憾,我无法在此处粘贴代码。
我们已经看到这种行为,就像您所说的那样 - 如果您不存储值,pig 将跳过它
您可以编写获取元组和变量的 UDF,并且 return 仅获取元组。
这样,它将处理变量,因为您将元组串起来。
我有 Pig 脚本,它只有在我在脚本中间存储和加载变量时才能工作。
我的试验表明像下面这样的序列在 DISTINCT 之后会失败:
- FOREACH
- 不同
- 群组
- FOREACH
- 商店
- 商店
但是如果我按如下方式存储然后加载变量,同样会成功:
- FOREACH
- 不同
- 商店
- 加载
- 群组
- FOREACH
- 商店
我的工作顺序是:
foreach/加入/foreach
组/foreach
加入/foreach
此外,我不能简单地编写存储和 rmf 函数的代码,因为 Pig 的代码优化将尝试跳过它认为无用的所有步骤(因为我存储一个变量并随后在同一变量名上加载它).
有没有人见过这种奇怪的行为?
编辑:很遗憾,我无法在此处粘贴代码。
我们已经看到这种行为,就像您所说的那样 - 如果您不存储值,pig 将跳过它
您可以编写获取元组和变量的 UDF,并且 return 仅获取元组。 这样,它将处理变量,因为您将元组串起来。