Hive-Partitionen – Sellkart-Fallstudie – Daten strategisch nutzen

Veröffentlicht: 2015-08-14

Sellkart ist eine primäre indische E-Commerce-Website und ein Einzelhandelsgeschäft und muss wie jede andere E-Commerce-Website Benutzerdaten und Inventar aller verkauften Artikel speichern. Es verwendet eine MySQL-Datenbank, die eine der wichtigsten Möglichkeiten zur Datenspeicherung ist. MySQL ist eine sichere und zuverlässige Datenspeicherung. Aber als Sellkart größer wurde, tauchten immer mehr Kunden in dieses E-Commerce-Portal ein. Jetzt sammelt Sellkart Benutzerdaten wie ihren Standort, ihr Verhalten, demografische Protokolle, gekaufte und zurückgegebene Artikel, ihre Zahlungsoption wie Nachnahme, Kreditkarte / Debitkarte. Analysten verwenden diese Daten, um den Kundenwert und bessere Zahlungsoptionen vorherzusagen und das Geschäft durch bessere Werbekampagnen zu erweitern und die Prozesse zu vereinfachen.

Um darzustellen, wie die gesammelten Daten strategisch genutzt werden können, betrachten wir hier einen gefälschten Datensatz von Verbrauchern, der aus den Benutzernamen, ihrer Stadt, ihrem Beruf, Gesamtzahl besteht. der gekauften Artikel und Gesamtnr. von Artikeln, die aufgrund von Mängeln zurückgegeben werden.

Hier im gefälschten Datensatz (data.csv) haben wir die Daten der Kunden, die mehr als 25 Artikel gekauft haben.

Felder in der data.csv

  • Benutzername (Zeichenfolge)
  • Stadt (Zeichenfolge)
  • Beruf (Zeichenfolge)
  • Gekauft (Ganzzahl)
  • Zurückgegeben (Ganzzahl)
  • Sellkart verwendet diese Daten, die mehrere Spalten und einen beträchtlich großen Datensatz von über mehreren Gigabyte haben, um die wichtigsten Erkenntnisse seines Systems vorherzusagen und zu verstehen, wie zum Beispiel:

  • Lebenszeitwert des Kunden
  • Produkterfolg
  • Demografischer Kauf eines Produkts
  • Besorgniserregende Regionen
  • Echtzeitpreise von Produkten
  • Verkaufen Sie ansprechende Kunden

Nun zeigen wir, wie eine Kleinbereichsanalyse in Hadoop abläuft. Dinge, die wir anhand der Daten herausfinden werden:

a) Ermittlung des Top-Verbrauchers auf der Grundlage der gekauften Produktmenge.

Verwendung: Gewähren Sie den besten Käufern besondere Privilegien und steigern Sie den Verkauf durchschnittlicher Kunden.

b) Den Berufssektor finden, der die meisten Produkte kauft.

Verwendung: Aufbewahrung von mehr Produkten aus dem Bestseller-Sortiment, Empfehlung ähnlicher Produkte.

c) Die Städte finden, in denen die meisten Produkte gekauft werden.

Verwendung: Regionales Targeting von Käufern, Konzentration auf Gebiete, in denen weniger Kunden vorhanden sind, Ausprobieren neuer Produkte in einem guten Markt.

1.Kopieren der Daten in HDFS.

a) Erstellen Sie das Verzeichnis in 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) Kopieren der Datei zur weiteren Verwendung

[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

Nachdem diese Datei kopiert wurde, wird sie mit Hive verarbeitet, um andere Ergebnisse zu erhalten.

2. Verwendung von Hive zur Verarbeitung der Daten.

a) Erstellen einer Tabelle im Hive, die zum Speichern dieser Daten verwendet wird.

[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) Laden Sie die Datei in den Hive-Tabellen-Einkauf

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) Kenntnis der Einsichten der Tabelle.

hive> formatiertes Einkaufen beschreiben;

OK

 # Spaltenname Datentyp Kommentar             

Benutzername Zeichenfolge Keine                
Stadt Zeichenfolge Keine                
Besetzungszeichenfolge Keine                
gekaufter Artikel int Keine                
returnitem int Keine                

# Detaillierte Tabelleninformationen             
Datenbank: Standard                  
Besitzer: Ausbildung                 
CreateTime: Di, 21. Juli 16:56:38 IST 2015     
LastAccessTime: UNBEKANNT                  
Schutzmodus: Keiner                     
Retention: 0                        
Speicherort: hdfs://localhost/user/hive/warehouse/shopping    
Tabellentyp: MANAGED_TABLE            
Tabellenparameter:                
        transient_lastDdlTime 1437478210          

# Speicherinformationen            
SerDe-Bibliothek: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe    
Eingabeformat: org.apache.hadoop.mapred.TextInputFormat         
Ausgabeformat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat     
Komprimiert: Nein                       
Anzahl Buckets: -1                       
Bucket-Spalten: []                       
Spalten sortieren: []                       
Speicherbeschreibungsparameter:             
        field.delim ,                   
        serialization.format ,                   
Benötigte Zeit: 0,302 Sekunden

3. Jetzt müssen wir sehen, wie diese Daten verwendet werden können.

a) Leute finden, die die besten Kunden sind, um ihnen mehr Rabatte anzubieten. Zuerst finden wir die höchste bestellte Menge, dann gleichen wir diese Menge mit allen Datensätzen ab und finden die Top-Kunden.

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

Und so geht die Liste weiter, jetzt kann das Unternehmen die Top-Kunden finden, dieser Schritt kann leicht auf MySQL durchgeführt werden, aber nur, wenn die Daten sehr klein sind, wenn Daten in Gigabit vorliegen, kommt Hadoop ins Spiel, um den Tag zu retten.

b) Jetzt kann der Analyst herausfinden, welcher Berufssektor sein bester Kunde ist, dh die Jobs der Leute analysieren, die am meisten kaufen, um die Produkte dieses Sektors zu erhöhen.

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.

Und so weiter.

Jetzt, da sie wissen, dass ein Buchhalter einer der Top-Berufssektoren ist, in denen Leute Sachen kaufen, können sie den Umsatz in dieser Abteilung steigern.

4. Schwein verwenden

Jetzt werden wir pig verwenden, um einige andere Funktionen auszuführen, z. B. das Sammeln der Gruppen von Benutzernamen aus bestimmten Städten, und diese Städte sind die Top-Konsumenten.

a) Laden Sie die Daten in 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) Jetzt werden wir die Benutzernamen der Top-Konsumenten nach Städten gruppieren.

Zum Trennen von Aufzeichnungen von Top-Verbrauchern

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

Gruppieren Sie jetzt die Top-Verbraucherstädte, um die Benutzernamen als Sammlung zu erhalten.

Die Daten sind gruppiert, aber ungeordnet.

Also müssen wir es jetzt bestellen.

Auf diese Weise werden also die endgültigen Daten geordnet.

Jetzt können wir diese Daten verwenden. Ebenso können wir die Städte mit den wenigsten Verbrauchern extrahieren, in diesen Städten kann das Unternehmen mehr Budget für die Werbe- und Werbekampagnen definieren, damit mehr Menschen mit dem Portal interagieren.

Und für die Städte und Verbraucher, in denen die Verbrauchsrate hoch ist, können Unternehmen neue Produkte auf den Markt bringen und ihren Kreis erweitern.

Wenn Sie Zweifel oder Fragen haben, erwähnen Sie diese im Kommentarfeld unten.