Partizioni Hive – Caso di studio Sellkart: utilizzo strategico dei dati

Pubblicato: 2015-08-14

Sellkart è un principale sito Web di e-commerce indiano e negozio al dettaglio e, come ogni altro sito Web di e-commerce, deve archiviare i dati degli utenti e l'inventario di tutti gli articoli che vende. Utilizza il database MySQL che è una delle principali scelte di archiviazione dei dati. MySQL è uno storage di dati sicuro, protetto e affidabile. Ma man mano che Sellkart cresceva, sempre più clienti iniziavano a tuffarsi in questo portale di e-commerce. Ora Sellkart raccoglie i dati degli utenti come la loro posizione, il loro comportamento, i registri demografici, gli articoli acquistati e gli articoli restituiti, la loro opzione di pagamento come contrassegno, carta di credito/carta di debito. Gli analisti utilizzano questi dati per prevedere il valore del cliente, migliori opzioni di pagamento ed espandere l'attività utilizzando migliori campagne pubblicitarie, semplificando i processi.

Per rappresentare come i dati raccolti possono essere utilizzati strategicamente, considereremo qui un falso set di dati di consumatori che consiste nei nomi utente, la loro città, la loro occupazione, totale n. di articoli acquistati e totale n. di articoli restituiti per vizi.

Qui nel set di dati falso (data.csv), abbiamo i dati dei clienti che hanno acquistato più di 25 articoli.

Campi in data.csv

  • Nome utente (stringa)
  • Città (stringa)
  • Occupazione (Stringa)
  • Acquistato (numero intero)
  • Restituito (Intero)
  • Sellkart utilizza questi dati, che hanno più colonne e un set di dati considerevolmente ampio di oltre diversi gigabyte, per prevedere e comprendere le informazioni chiave del suo sistema, come ad esempio:

  • Valore a vita del cliente
  • Successo del prodotto
  • Acquisto demografico di un prodotto
  • Regioni preoccupanti
  • Prezzo in tempo reale dei prodotti
  • Aumenta la vendita di clienti coinvolgenti

Ora mostreremo come avviene un'analisi a piccolo raggio in Hadoop. Cose che scopriremo usando i dati:

a) Trovare il miglior consumatore in base alla quantità di prodotto che ha acquistato.

Usi: Concedi privilegi speciali ai migliori acquirenti, aumentando la vendita dei clienti medi.

b) Trovare il settore lavorativo che acquista la maggior parte dei prodotti.

Usi: mantenimento di più prodotti della gamma più venduta, raccomandazione a prodotti simili.

c) Trovare le città in cui viene acquistata la maggior parte dei prodotti.

Usi: targeting per regione degli acquirenti, concentrandosi su aree in cui ci sono meno clienti, provando nuovi prodotti in un buon mercato.

1.Copiare i dati in HDFS.

a) Crea la directory 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) Copiare il file per un ulteriore utilizzo

[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

Dopo che questo file è stato copiato, viene elaborato utilizzando Hive, per ottenere risultati diversi.

2. Utilizzo di hive per elaborare i dati.

a) Creazione di una tabella nell'hive, che verrà utilizzata per memorizzare questi dati.

[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) Carica il file negli acquisti delle tabelle dell'alveare

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) Conoscere gli approfondimenti della tabella.

hive> descrivi lo shopping formattato;

ok

 # col_name tipo_dati commento             

nome utente stringa Nessuno                
stringa di città Nessuno                
stringa di occupazione Nessuno                
oggetto acquistato int Nessuno                
articolo restituito int Nessuno                

# Informazioni dettagliate sulla tabella             
Database: predefinito                  
Titolare: formazione                 
CreateTime: mar 21 luglio 16:56:38 IST 2015     
LastAccessTime: SCONOSCIUTO                  
Modalità di protezione: nessuna                     
Conservazione: 0                        
Posizione: hdfs://localhost/user/hive/warehouse/shopping    
Tipo di tabella: MANAGED_TABLE            
Parametri della tabella:                
        transient_lastDdlTime 1437478210          

# Informazioni di archiviazione            
Libreria SerDe: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe    
InputFormat: org.apache.hadoop.mapred.TextInputFormat         
OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat     
compresso: no                       
Numero di secchi: -1                       
Colonne del secchio: []                       
Ordina colonne: []                       
Storage Dec Parametri:             
        campo.delim ,                   
        serializzazione.formato ,                   
Tempo impiegato: 0,302 secondi

3. Ora dobbiamo vedere come possono essere utilizzati questi dati.

a) Trovare le persone che sono i migliori clienti per offrire loro più sconti. Per prima cosa troveremo qual è la quantità più alta ordinata, quindi abbineremo quella quantità a tutti i record e troveremo i migliori clienti.

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

E così l'elenco continua, ora l'azienda può trovare i migliori clienti, questo passaggio può essere eseguito facilmente su MySQL, ma solo quando i dati sono molto piccoli quando i dati sono in gigabit Hadoop arriva per salvare la giornata.

b) Ora l'analista può trovare quale settore lavorativo è il suo miglior cliente, ovvero analizzare i lavori delle persone che acquistano di più, in modo da aumentare i prodotti di quel settore.

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.

E così via.

Ora sapendo che un impiegato è uno dei principali settori di lavoro da cui le persone acquistano cose, possono aumentare le vendite in questo reparto.

4. Usando il maiale

Ora useremo pig per eseguire alcune altre funzioni come raccogliere i gruppi di nomi utente da una determinata città, e queste città sono i principali consumatori.

a) Carica i dati 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) Ora raggrupperemo i nomi utente dei principali consumatori in base alle città.

Per separare i record dei principali consumatori

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

Raggruppando ora le principali città di consumo, per ottenere i nomi utente come raccolta.

I dati sono raggruppati ma non ordinati.

Quindi dobbiamo ordinarlo ora.

Quindi in questo modo vengono ordinati i dati finali.

Ora possiamo usare questi dati. Allo stesso modo possiamo estrarre le città con meno consumatori, in quelle città l'azienda può definire più budget per le campagne pubblicitarie e pubblicitarie in modo che più persone interagiscano con il portale.

E per le città e i consumatori dove c'è un alto tasso di consumo, l'azienda può lanciare nuovi prodotti ed espandere la propria cerchia.

Se hai dubbi o domande, menzionali nella casella dei commenti qui sotto.