Free Shipping

Secure Payment

easy returns

24/7 support

  • Home
  • Blog
  • PIG Use Case: Pokemon Data Analysis

PIG Use Case: Pokemon Data Analysis

 July 14  | 0 Comments

In this blog for Apache Pig beginners, we will use the simple Pig built-in functions to form two lists of 5 randomly selected Pokémons with some parameters set by the management. So Pig queries are listed below for the perusal of a data analyst.

The Pokémon Fight League (PFL) management for the 2017 match has first of all decided a minimum criterion for the entry selection process that filters through the defense power for any Pokémon, which should ideally be greater than 55.

Hence, the eligible list will be randomly formed after filtering out the Pokémons with a defenseless than 55.
Furthermore,Our job is to give 2 list of names of those Pokémons who will be eligible for taking part in PFL this year from the list of all the participating 800 Pokémons.
Use the link to download dataset for all the Pokémons seems like taking part in PFL 2017.
Especially relevant in addition readers may go through the link to practice the HIVE Use Case basics commands on the Pokémon dataset.

So First of all, we will load the dataset inside PIG. We can either use the local mode or the MR mode. Here consequently, we will be using the local mode.
Load_Data = LOAD ‘/home/prateek/Documents/PIG/Pokémon.csv’ USING PigStorage(‘,’) AS(Sno:int,Name:chararray,Type1:chararray,Type2:chararray,Total:int,HP:int,Attack:int,Defense:int,SpAtk:int,SpDef:int,Speed:int);

Check while loading the data, it is done correctly by using the dump; command.

Ques 1: Find the list of players that have been selected in the qualifying round (DEFENCE>55).


selected_list = FILTER Load_Data BY Defense>55;

The dataset is filtered, and hence out of all the 800 Pokémons, only 544 are eligible to take part in the tournament. In order to get the count, refer the next problem statement.

Ques 2: State the number of players taking part in the competition after getting selected in the qualifying round.


gourp_selcted_list = Group selected_list All;
count_selcted_list = foreach gourp_selcted_list GENERATE COUNT(selected_list);

So, All the 544 players taking part will be alphabetically arranged and two teams of 5 Pokémons need to be extracted out randomly from the earlier list.
Seems like,this way we will have 2 lists containing 5 Pokémon each so to fight each other.

Ques 3: Using random() generate random numbers for each Pokémon on the selected list.


random_include1 = foreach selected_list GENERATE RANDOM(),Name,Type1,Type2,Total,HP,Attack,Defense,SpAtk,SpDef,Speed;

Hence sample for the list after adding random numbers:

Ques 4: Arrange the new list in a descending order according to a column randomly.


Explanation: This will give us consequently a layer arranged to pick the random list which 1st player will choose.
random1_desending = ORDER random_include1 BY $0 DESC;

Hence the sample for the list after the query.

Yet we want 1 more list with random arrangements of Pokémons which will be therefore chosen by the 2nd player later on.

Ques 5: Now on a new relation again associate random numbers for each Pokémon and arrange in descending order according to column random.


Explanation: We will be repeating above two steps again to form the 2nd list.
random_include2 = foreach selected_list GENERATE RANDOM(),Name,Type1,Type2,Total,HP,Attack,Defense,SpAtk,SpDef,Speed;
random2_desending = ORDER random_include2 BY $0 DESC;

Hence sample for the list.

Hence sample for the list.

Now, especially relevant selecting the top 5.

Ques: From the two different descending lists of random Pokémons, select the top 5 Pokémons for 2 different players.

limit_data_random1_desending = LIMIT random1_desending 5 ;
limit_data_random2_desending = LIMIT random2_desending 5 ;

Hence sample for the list.

Hence sample for the list.

Ques: Store the data on a local drive to announce for the final match. By the name player1 and player2 (only show the NAME and HP).

filter_only_name1 = foreach limit_data_random1_desending Generate ($1,HP);

filter_only_name2 = foreach limit_data_random2_desending Generate ($1,HP);

Since for Player1 we have:

Since for Player2 we have:

Therefore querying is over using some simple pre-defined functions to get 2 sets of 5 Pokémons, which get select randomly.
In conclusion, let’s store this result in our local system  so we can use it as input to our next blog. Especially relevant where we will see UDF using PIG and calculations will be done through user-defined formulas.
STORE limit_data_random1_desending INTO ‘/home/acadgild/Documents/prateek/PIG/player1.txt’;

As a Result:

STORE limit_data_random2_desending INTO ‘/home/acadgild/Documents/prateek/PIG/player2.txt’;

As a Result:

As a result, the Pokémons for both players got selected . This player will be fighting consequently in the Finals with their respective Pokémons assigned.
Finally,subscribe to visit our next blog furthermore to see what happens when players clash in the battlefield to win the PFL with data analytics.
Keep visiting our site for more updates on Big Data Ecosystem and other technologies.