Cloisons Hive - Étude de cas Sellkart - Utilisation stratégique des données

Publié: 2015-08-14

Sellkart est un site Web et un magasin de détail indien principal de commerce électronique et, comme tous les autres sites Web de commerce électronique, il doit stocker les données des utilisateurs et l'inventaire de tous les articles qu'il vend. Il utilise la base de données MySQL qui est l'un des principaux choix de stockage de données. MySQL est un stockage de données sûr, sécurisé et fiable. Mais à mesure que Sellkart grandissait, de plus en plus de clients ont commencé à plonger dans ce portail de commerce électronique. Désormais, Sellkart collecte des données utilisateur telles que leur emplacement, leur comportement, les journaux démographiques, les articles achetés et les articles retournés, leur option de paiement telle que COD, carte de crédit/carte de débit. Les analystes utilisent ces données pour prédire la valeur client, de meilleures options de paiement et développer l'activité en utilisant de meilleures campagnes publicitaires, ce qui facilite les processus.

Pour décrire comment les données collectées peuvent être utilisées stratégiquement, nous considérerons ici un faux ensemble de données de consommateurs qui se compose des noms d'utilisateur, de leur ville, de leur profession, du nombre total. d'articles achetés et nombre total. des articles retournés en raison de défauts.

Ici, dans le faux jeu de données (data.csv), nous avons les données des clients qui ont acheté plus de 25 articles.

Champs dans data.csv

  • Nom d'utilisateur (chaîne)
  • Ville (chaîne)
  • Profession (chaîne)
  • Acheté (Entier)
  • Renvoyé (Entier)
  • Sellkart utilise ces données, qui comportent plusieurs colonnes et un ensemble de données considérablement volumineux de plusieurs gigaoctets, pour prédire et comprendre les informations clés de son système, telles que :

  • Valeur vie client
  • Succès du produit
  • Achat démographique d'un produit
  • Régions préoccupantes
  • Tarification en temps réel des produits
  • Ventes incitatives engageant les clients

Nous allons maintenant montrer comment une petite analyse de plage se déroule dans Hadoop. Ce que nous découvrirons à l'aide des données :

a) Trouver le meilleur consommateur sur la base de la quantité de produit qu'il a achetée.

Utilisations : accorder des privilèges spéciaux aux meilleurs acheteurs, en incitant les clients moyens à vendre.

b) Trouver le secteur d'emploi qui achète le plus de produits.

Utilisations : conserver plus de produits de la gamme la plus vendue, recommander des types de produits similaires.

c) Trouver les villes où la plupart des produits sont achetés.

Utilisations : cibler les acheteurs par région, se concentrer sur les zones où il y a moins de clients, essayer de nouveaux produits sur un bon marché.

1.Copier les données dans HDFS.

a) Créer le répertoire dans hadoop HDFS

[training@localhost ~]$ hadoop fs -mkdir /user/training/case1

[training@localhost ~]$ hadoop fs -ls

Found 3 items

drwxr-xr-x - training supergroup 0 2015-07-21 16:48 /user/training/case1

-rw-r--r-- 1 training supergroup 44009445 2015-07-20 12:39 /user/training/crime

drwxr-xr-x - training supergroup 0 2015-07-20 14:21 /user/training/csvfile

b) Copier le fichier pour une utilisation ultérieure

[training@localhost ~]$ hadoop fs -copyFromLocal ~/Desktop/case1/data.csv /user/training/case1

[training@localhost ~]$ hadoop fs -ls /user/training/case1

Found 1 items

-rw-r--r-- 1 training supergroup 2489638 2015-07-21 16:49 /user/training/case1/data.csv

Une fois ce fichier copié, il est traité à l'aide de Hive, pour obtenir des résultats différents.

2. Utilisation de Hive pour traiter les données.

a) Création d'une table dans la ruche, qui servira à stocker ces données.

[training@localhost ~]$ hive

creatHive history file=/tmp/training/hive_job_log_training_201507211652_319213433.txt

hive> create table shopping (username string,city string,occupation string,purchaseditem,int,returneditem int) row format delimited fields

terminated by ',' stored as textfile

OK

Time taken: 2.892 seconds

hive> show tables;

OK

crimes

shopping

Time taken: 0.171 seconds

b) Charger le fichier dans les achats de tables de ruche

Hive>load data inpath '/user/training/case1/data.csv' overwrite into table shopping;

Loading data to table default.shopping

Deleted hdfs://localhost/user/hive/warehouse/shopping

OK

Time taken: 2.798 seconds

c) Connaître les idées du tableau.

ruche> décrire les achats formatés ;

d'accord

 # col_name data_type commentaire             

nom d'utilisateur chaîne Aucun                
chaîne de ville Aucune                
chaîne d'occupation Aucune                
article acheté int Aucun                
article retourné int Aucun                

# Informations détaillées sur le tableau             
Base de données : par défaut                  
Propriétaire : formation                 
CreateTime : mar 21 juillet 16:56:38 IST 2015     
Heure du dernier accès : INCONNU                  
Mode de protection : aucun                     
Rétention : 0                        
Emplacement : hdfs://localhost/user/hive/warehouse/shopping    
Type de tableau : MANAGED_TABLE            
Paramètres du tableau :                
        transient_lastDdlTime 1437478210          

# Informations de stockage            
Bibliothèque SerDe : org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe    
InputFormat : org.apache.hadoop.mapred.TextInputFormat         
Format de sortie : org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat     
Compressé : Non                       
Nombre de compartiments : -1                       
Colonnes de compartiment : []                       
Trier les colonnes : []                       
Paramètres de description de stockage :             
        champ.delim ,                   
        sérialisation.format ,                   
Temps pris : 0,302 seconde

3. Nous devons maintenant voir comment ces données peuvent être utilisées.

a) Trouver les meilleurs clients pour leur offrir plus de rabais. Nous trouverons d'abord quelle est la plus grande quantité commandée, puis nous ferons correspondre cette quantité à tous les enregistrements et trouverons les meilleurs clients.

hive> select * from shopping limit 5;

OK

Seattle Podiatric doctor 187 5

Detroit Lakes Engineering and natural sciences manager 168 11

Jackson Map editor 187 17

Miami Clinical manager 193 5

Santa Fe Springs Radiographer 207 20

Time taken: 0.335 seconds

hive> select max(purchaseditem) from shopping;

Total MapReduce jobs = 1

Launching Job 1 out of 1

Number of reduce tasks determined at compile time: 1

In order to change the average load for a reducer (in bytes):

set hive.exec.reducers.bytes.per.reducer=

In order to limit the maximum number of reducers:

set hive.exec.reducers.max=

In order to set a constant number of reducers:

set mapred.reduce.tasks=

Starting Job = job_201507212155_0001, Tracking URL = http://localhost:50030/jobdetails.jsp?jobid=job_201507212155_0001

Kill Command = /usr/lib/hadoop/bin/hadoop job -Dmapred.job.tracker=localhost:8021 -kill job_201507212155_0001

2015-07-21 23:16:01,887 Stage-1 map = 0%, reduce = 0%

2015-07-21 23:16:06,988 Stage-1 map = 100%, reduce = 0%

2015-07-21 23:16:16,075 Stage-1 map = 100%, reduce = 100%

Ended Job = job_201507212155_0001

OK

250

Time taken: 18.794 seconds

hive> select * from shopping where purchaseditem = 250;

Total MapReduce jobs = 1

Launching Job 1 out of 1

Number of reduce tasks is set to 0 since there's no reduce operator

Starting Job = job_201507212155_0002, Tracking URL = http://localhost:50030/jobdetails.jsp?jobid=job_201507212155_0002

Kill Command = /usr/lib/hadoop/bin/hadoop job -Dmapred.job.tracker=localhost:8021 -kill job_201507212155_0002

2015-07-21 23:18:31,586 Stage-1 map = 0%, reduce = 0%

2015-07-21 23:18:33,598 Stage-1 map = 100%, reduce = 0%

2015-07-21 23:18:34,608 Stage-1 map = 100%, reduce = 100%

Ended Job = job_201507212155_0002

OK

Ablay1993 Seattle Ergonomist 250 7

Ablent71 Sugar Land Professional property manager 250 10

Affew1942 Alquippa Human resources consultant 250 13

Agar1976 Bell Oak Zookeeper 250 5

Akeem Manchester Marine 250 11

Alat1954 Columbus Assembler 250 7

Albertha Baton Rouge Mixing and blending machine operator 250 21

Amelia.Skiles Westfield Mediator 250 0

Amir_Spencer Polk City Epidemiologist 250 11

Angel.Thiel Hamilton Keying machine operator 250 21

Annalise_Langosh East Northport Fitness director 250 24

Et ainsi de suite la liste continue, maintenant l'entreprise peut trouver les meilleurs clients, cette étape peut être effectuée facilement sur MySQL, mais uniquement lorsque les données sont très petites lorsque les données sont en gigabits Hadoop vient sauver la situation.

b) Maintenant, l'analyste peut trouver quel secteur d'emploi est son meilleur client, c'est-à-dire analyser les emplois des personnes qui achètent le plus, afin d'augmenter les produits de ce secteur.

hive> select distinct occupation from shopping where purchaseditem = 250;;

Total MapReduce jobs = 1

Launching Job 1 out of 1

Number of reduce tasks not specified. Estimated from input data size: 1

In order to change the average load for a reducer (in bytes):

set hive.exec.reducers.bytes.per.reducer=

In order to limit the maximum number of reducers:

set hive.exec.reducers.max=

In order to set a constant number of reducers:

set mapred.reduce.tasks=

Starting Job = job_201507220045_0006, Tracking URL = http://localhost:50030/jobdetails.jsp?jobid=job_201507220045_0006

Kill Command = /usr/lib/hadoop/bin/hadoop job -Dmapred.job.tracker=localhost:8021 -kill job_201507220045_0006

2015-07-22 01:09:52,904 Stage-1 map = 0%, reduce = 0%

2015-07-22 01:09:54,914 Stage-1 map = 100%, reduce = 0%

2015-07-22 01:10:01,968 Stage-1 map = 100%, reduce = 100%

Ended Job = job_201507220045_0006

OK

Account clerk

Accounting clerk

Actuarie

Administrative assistant.

Etc.

Sachant maintenant qu'un commis de compte est l'un des principaux secteurs d'emploi à partir duquel les gens achètent des choses, ils peuvent augmenter les ventes dans ce département.

4. Utiliser le cochon

Nous allons maintenant utiliser pig pour effectuer d'autres fonctions telles que la collecte des groupes de noms d'utilisateur d'une ville particulière, et ces villes sont les principaux consommateurs.

a) Charger les données dans pig

grunt> fulldata = load '/user/training/case1/' using PigStorage(',') as

(username:chararray,city:chararray,occupation:chararray, purchaseditem:int,returneditem:int);
grunt>dump fulldata;

(username:chararray,city:chararray,occupation:chararray, purchaseditem:int,returneditem:int);
grunt>dump fulldata;

b) Nous allons maintenant regrouper les noms d'utilisateur des principaux consommateurs en fonction des villes.

Pour séparer les enregistrements des principaux consommateurs

Hive>top = filter fulldata by purchaseditem==250;

Regroupant les villes les plus consommatrices maintenant, pour obtenir les noms d'utilisateur sous forme de collection.

Les données sont groupées mais non ordonnées.

Nous devons donc le commander maintenant.

Ainsi, de cette manière, les données finales sont ordonnées.

Maintenant, nous pouvons utiliser ces données. De même, nous pouvons extraire les villes avec le moins de consommateurs, dans ces villes, l'entreprise peut définir plus de budget pour les campagnes publicitaires et publicitaires afin que plus de personnes interagissent avec le portail.

Et pour les villes et les consommateurs où le taux de consommation est élevé, l'entreprise peut lancer de nouveaux produits et élargir son cercle.

Si vous avez des doutes ou des questions, mentionnez-les dans la zone de commentaires ci-dessous.