Cloisons Hive - Étude de cas Sellkart - Utilisation stratégique des données
Publié: 2015-08-14Sellkart 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.