I次のデータセットがあります。はどのようにsepatare行にセルを分割し、minial集計値を見つけるために
Movies : moviename, genre1, genre2, genre3 ..... genre19
(全てのジャンルは、上記の1が映画は、そのジャンルであることを示し、値が0または1を持っている)
を これで、どの映画のジャンルが最も少ないのか探したいですか?
私は豚のスクリプトの下に試してみました:
items = load 'path' using PigStorage('|') as (mName:chararray,g1:int,g2:int,g3:int,g4:int,g5:int,g6:int,g7:int,g8:int,g9:int,g10:int,g11:int,g12:int,g13:int,g14:int,g15:int,g16:int,g17:int,g18:int,g19:int);
sumGenre = foreach items generate mName, g1+g2+g3+g4+g5+g6+g7+g8+g9+g10+g11+g12+g13+g14+g15+g16+g17+g18+g19 as sumOfGenres;
groupAll = group sumGenre All;
MIN(sumGenre.sumofGenres)を使用して、次のステップでは、私は、MIN値であるジャンルを得ることができますが、何を探していますと、取得することです最も少ない番号を持つmovienameです。のジャンルの数、その映画のジャンルの数。
誰かが助けてくれますか?
1.私はg1 + g2 + ... g19の合計を得る他の簡単な方法があることを知りたいですか?
2.ジャンル:ジャンルが最も少ない映画も出力しますか?
助けてくれてありがとうございます、それは働いていますが、私はあなたと同じロジックで内部結合を取った。再度、感謝します!!!また、(g1 + g2 + g3..g19)がコーディングの良い方法であるか、私はUDFのために行くかどうか私にお勧めしますか? –
@ValarMorghulis g1 + g2 + g3..g19は、削除する新しい列や古い列を持つことができますが、間違っています。 – Alex
@Alex:返信いただきありがとうございます。多くの列の巨大な和、またはUDFを使用するか? –