2015-05-06 26 views
1

我有猪脚本,只有当我在脚本的中间存储和加载变量时才起作用。猪需要存储/加载工作

我的试验表明,类似下面的顺序将DISTINCT失败后:

  1. FOREACH
  2. DISTINCT
  3. 集团
  4. FOREACH
  5. STORE
  6. STORE

但是,如果我存储和随后如下加载变量同样会取得成功:

  1. FOREACH
  2. DISTINCT
  3. STORE
  4. LOAD
  5. 集团
  6. FOREACH
  7. STORE

工作序列我是:

  • 的foreach /加入/的foreach

  • 组/的foreach

  • 加入/的foreach

此外我不能简单地进行编码的store & rmf作为Pig的代码优化功能将尝试跳过它认为无用的所有步骤(因为我存储了一个变量,然后在同一个变量名上加载它)。

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

编辑:不幸的是我不能在这里粘贴代码。

回答

0

我们已经看到这种行为,就像你说的 - 如果你不存储值,猪会跳过它

您可以编写UDF是获得元组和您的变量,只返回元组。 这样,它会处理变量,因为你是字符串的元组。

+0

感谢您的反馈意见。你有什么线索为什么猪会这样做? –

+0

我同意你 - 猪发现他并不真的需要运行这个,因为你没有存储结果。也许我会更多地了解它 – Mzf