猪需要储存/装载才能工作

Pig needs store / load to work

我有 Pig 脚本,它只有在我在脚本中间存储和加载变量时才能工作。

我的试验表明像下面这样的序列在 DISTINCT 之后会失败:

  1. FOREACH
  2. 不同
  3. 群组
  4. FOREACH
  5. 商店
  6. 商店

但是如果我按如下方式存储然后加载变量,同样会成功:

  1. FOREACH
  2. 不同
  3. 商店
  4. 加载
  5. 群组
  6. FOREACH
  7. 商店

我的工作顺序是:

此外,我不能简单地编写存储和 rmf 函数的代码,因为 Pig 的代码优化将尝试跳过它认为无用的所有步骤(因为我存储一个变量并随后在同一变量名上加载它).

有没有人见过这种奇怪的行为?

编辑:很遗憾,我无法在此处粘贴代码。

我们已经看到这种行为,就像您所说的那样 - 如果您不存储值,pig 将跳过它

您可以编写获取元组和变量的 UDF,并且 return 仅获取元组。 这样,它将处理变量,因为您将元组串起来。