0

昨日、仕事の機会のために Pig を使い始めました。これまで使用したことがなく、来週のために何かを作成する必要があります。私はまだそれをインストールすることができませんでしたが、それに取り組んでいます...

その間、Pig Latin の使い方を学ぼうとして何かを作成しましたが、テストできませんでした。

私が作業しているデータの形式は user_name|Country|movie|director で、ユーザーが映画を見るたびに新しいエントリがファイルに追加され、ファイルは 1 日を表します。

私がやりたいことは、ユーザーのトップ 5 の映画、トップ 5 の監督、およびユーザーが 1 日に見た映画の数を示す「ユーザー プロファイル」を作成することです。

私がコーディングしたもの:

daily_watch=LOAD '$docs_in' USING PigStorage('|') AS     (user_id:int,country:chararray,director_id:int,movie_id:int)

users=GROUP daily_watch BY (user_id);
number_of_watch= FOREACH users GENERATE group, COUNT(daily_watch) AS total; 
STORE number_of_watch INTO "$number_of_watch"
--at this point I want number of watch = (user_id,number_film_watched)


directors_and_users =  GROUP daily_watch BY (user_id,director_id);
top_directors= FOREACH directors_and_users GENERATE 
    user_id
    group
    COUNT(daily_watch) AS total_director;
top5_directors= FOREACH top_directors {
    sorted = order directors_and_users by total_directors desc;
    top5= limit sorted 5;
    GENERATE FLATTEN(top5);
};
STORE top_director INTO "$top5_directors"
--at this point I want top5_directors=(user_id,{user_id,director_id},number_of_movie_seen_from_director)


movies_directors_users= GROUP daily_watch BY (user_id,movie_id,director_id);
top_movies = FOREACH movies_directors_users GENERATE
    user_id
    group
    COUNT(daily_watch) AS total_movies
;
top5_movies= FOREACH top_movies {
    sorted=order movies_directors_users by total_movies desc;
    top5=limit sorted 5;
    GENERATE FLATTEN(top5);
}
--at this point, I want top5_movies=(user_id,{user_id,director_id,movie_id},number_of_times_movie_seen)


STORE top5_movies INTO "$top5_movies"
output= FOREACH users GENERATE AppendToBag(top5_movies.$1,top5_movies.$2,top5_directors.$1,top5_directors.$2)
-- now I want to have output=(user_id,{user_id,director_id,movie_id},number_of_times_movie_seen,{user_id,director_id},number_of_movie_seen_from_director)

私のコードに明らかな間違いはありますか? 私は良い方向に進んでいますか?このコードを python に埋め込もうとしています (python の部分を書きました)。

また、私のコードをテストする簡単な方法はありますか? (テスト用のtxtファイルをいくつか書きましたが、PCにhadoopとpigをインストールするのに苦労しています(Windows 7を使用しています)。

助けてくれてありがとう!

4

2 に答える 2

0

軽量 VM に付属するCloudera-Liveを使用できます。これには、Django ベースの Web ツールであるCloudera Hueが付属しており、テストと実行に使用できる Pig エディターが付属しています。スクリプト作成をお楽しみください。

于 2016-03-04T00:20:51.053 に答える