Partiții Hive – Studiu de caz Sellkart-Utilizarea strategică a datelor
Publicat: 2015-08-14Sellkart este un site web indian de comerț electronic și un magazin de vânzare cu amănuntul și, ca orice alt site web de comerț electronic, trebuie să stocheze datele utilizatorilor și inventarul tuturor articolelor pe care le vinde. Utilizează baza de date MySQL, care este una dintre opțiunile principale de stocare a datelor. MySQL este stocarea de date sigură, sigură și de încredere. Dar, pe măsură ce Sellkart a crescut, tot mai mulți clienți au început să se scufunde în acest portal de comerț electronic. Acum, Sellkart colectează date despre utilizatori, cum ar fi locația lor, comportamentul lor, jurnalele demografice, articolul achiziționat și articolele returnate, opțiunea lor de plată, cum ar fi COD, card de credit/card de debit. Analiștii folosesc aceste date pentru a prezice valoarea clienților, opțiuni de plată mai bune și pentru a extinde afacerea folosind campanii publicitare mai bune, ușurând procesele.
Pentru a descrie modul în care datele colectate pot fi utilizate strategic, vom lua în considerare aici un set de date fals de consumatori care constă din numele de utilizator, orașul lor, ocupația lor, nr. de articole achizitionate si nr total. de articole returnate din cauza unor defecte.
Aici, în setul de date fals (data.csv), avem datele clienților care au cumpărat mai mult de 25 de articole.
Câmpurile din data.csv
- Nume de utilizator (șir)
- Oraș (șir)
- Ocupație (șir)
- Achiziționat (întreg)
- Returnat (întreg)
Sellkart folosește aceste date, care au mai multe coloane și un set de date considerabil mare de peste câțiva gigaocteți, pentru a prezice și înțelege informațiile cheie ale sistemului său, cum ar fi:
- Valoarea pe viață a clientului
- Succesul produsului
- Cumpărarea demografică a unui produs
- Regiunile de îngrijorare
- Prețuri în timp real pentru produse
- Vindeți clienți captivanți
Acum vom arăta cum are loc o analiză a intervalului mic în Hadoop. Lucruri pe care le vom afla folosind datele:
a) Găsirea celui mai mare consumator pe baza cantității de produs pe care l-a cumpărat.
Utilizări: Oferiți privilegii speciale celor mai buni cumpărători, vânzând în plus clienții medii.
b) Găsirea sectorului de muncă care achiziționează cele mai multe produse.
Utilizari: pastrarea mai multor produse din gama bestseller-ului, recomandare tip similar de produse.
c) Găsirea orașelor în care sunt achiziționate cele mai multe produse.
Utilizări: direcționarea în funcție de regiune către cumpărători, concentrându-se pe zonele în care sunt mai puțini clienți, încercând produse noi pe piața bună.
1. Copierea datelor în HDFS.
a) Faceți directorul în 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) Copierea fișierului pentru utilizare ulterioară
[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
După ce acest fișier este copiat, este procesat folosind Hive, pentru a obține rezultate diferite.
2. Utilizarea hive pentru a procesa datele.
a) Crearea tabelului în stup, care va fi folosit pentru stocarea acestor date.
[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) Încărcați fișierul în mesele stup de cumpărături
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) Cunoașterea perspectivelor tabelului.
stup> descrie cumpărăturile formatate;
Bine
# col_name data_type comentariu nume de utilizator șir Nici unul șir de oraș Nici unul şir de ocupaţie Niciuna buyditem int Nici unul returneditem int Nici unul # Informații detaliate ale tabelului Baza de date: implicit Proprietar: antrenament CreateTime: marți, 21 iulie, 16:56:38 IST 2015 LastAccessTime: NECUNOSCUT Mod de protecție: niciunul Retentie: 0 Locație: hdfs://localhost/user/hive/warehouse/shopping Tip tabel: MANAGED_TABLE Parametrii tabelului: transient_lastDdlTime 1437478210 # Informații de stocare Biblioteca SerDe: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe InputFormat: org.apache.hadoop.mapred.TextInputFormat OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat Comprimat: Nu Număr găleți: -1 Coloane de grup: [] Sortare coloane: [] Parametri de descriere stocare: field.delim , serialization.format , Timp luat: 0,302 secunde
3. Acum trebuie să vedem cum pot fi folosite aceste date.
a) Găsirea persoanelor care sunt cei mai buni clienți pentru a le oferi mai multe reduceri. Mai întâi vom găsi care este cea mai mare cantitate comandată, apoi vom potrivi acea cantitate cu toate înregistrările și vom găsi clienții de top.
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
Și așa mai departe, lista continuă, acum compania poate găsi clienții de top, acest pas poate fi efectuat cu ușurință pe MySQL, dar numai atunci când datele sunt foarte mici, când datele sunt în gigabiți, Hadoop intră pentru a salva ziua.
b) Acum analistul poate găsi care sector de muncă este cel mai bun client al lor, adică să analizeze locurile de muncă ale persoanelor care cumpără cel mai mult, astfel încât să crească produsele din sectorul respectiv.
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.
Și așa mai departe.
Acum, știind că un funcționar de cont este unul dintre sectoarele de muncă de top din care oamenii cumpără lucruri, pot crește vânzările în acest departament.
4. Utilizarea Porcului
Acum vom folosi porcul pentru a îndeplini alte funcții, cum ar fi colectarea de grupuri de nume de utilizator dintr-un anumit oraș, iar aceste orașe sunt consumatorii de top.
a) Încărcați datele în porc
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) Acum vom grupa numele de utilizator ale consumatorilor de top în funcție de orașe.
Pentru segregarea înregistrărilor consumatorilor de top
Hive>top = filter fulldata by purchaseditem==250;
Gruparea celor mai bune orașe de consum acum, pentru a obține numele de utilizator ca o colecție.
Datele sunt grupate, dar sunt neordonate.
Deci trebuie să-l comandăm acum.
Deci în acest fel sunt ordonate datele finale.
Acum putem folosi aceste date. În mod similar putem extrage orașele cu cei mai puțini consumatori, în acele orașe compania poate defini mai mult buget pentru campaniile de publicitate și publicitate, astfel încât mai mulți oameni să interacționeze cu portalul.
Iar pentru orașele și consumatorii unde există o rată de consum mare, compania poate lansa noi produse și își poate extinde cercul.
Dacă aveți nelămuriri sau întrebări, menționați-le în caseta de comentarii de mai jos.