2015-05-06 23 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