Hive-Partitionen – Sellkart-Fallstudie – Daten strategisch nutzen
Veröffentlicht: 2015-08-14Sellkart 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.