2013-06-11 41 views
-1

我一直在試豬幾天,我沒有得到它的竅門。我正在嘗試做簡單的練習任務,但無濟於事。目標是創建一個記錄,顯示每年每個ID的最大運行量。於是,我開始了與:在簡單的豬任務期間的錯誤

A = LOAD 'pig/input/Batting.csv' using PigStorage(',') as (ID:int, year:int, stint:chararray, team:chararray, league:chararray, games:int, games_bat:int, atbat:int, runs:int); B = GROUP A by year; C = FOREACH B generate group, MAX(A.runs) as maxruns;

我以爲一切順利,直到這點,但隨後得到了完全搞砸時:

D = JOIN A by year, C by year; E = FOREACH D generate group, D.(group, ID), maxruns; store E into 'batting_result';

任何提示或想法在哪個方向去非常感謝。

+0

你期望輸出什麼?你得到了什麼?有沒有錯誤? –

+0

我調整了一下,我想我有點進一步了。到目前爲止,它看起來像這樣 'A = LOAD'pig/input/Batting.csv'使用PigStorage(',')作爲(ID:int,year:int,stint:chararray,team:chararray,league:chararray,遊戲:int,games_bat:int,atbat:int,runs:int); B =年份A組; C = FOREACH B生成組,MAX(A.runs)AS maxruns:int; D =由運行加入A,由maxruns加載C; E = FOREACH D產生組ID,maxruns; 轉儲Ë;' 作爲輸出I得到 (1893,149) (1893,149) 等 然而,中間空間需要顯示相應的 「maxruns」 的ID,而不是將其什麼都沒顯示 – Mako

回答

0

假設您使用的是類似的dataset,有一個問題可能是csv文件的第一列(playerId)是chararrray而非int。

我認爲你的加入可能有問題(在你的評論中寫的豬查詢)。

關係C,有兩列組/年和maxruns。 要從A獲得playerId,我們必須參加年份並運行。 所以,你們的關係d應該像

D = JOIN A by (year,runs), C by (group,maxruns); 

隨着這種變化,你應該得到的每一年,最大運行那年,和玩家的遊戲ID。

希望能幫到