Partiții Hive – Studiu de caz Sellkart-Utilizarea strategică a datelor

Publicat: 2015-08-14

Sellkart 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.