Przegrody Hive – Sellkart Case Study – Strategiczne wykorzystanie danych

Opublikowany: 2015-08-14

Sellkart jest główną indyjską witryną e-commerce i sklepem detalicznym i jak każda inna witryna e-commerce, musi przechowywać dane użytkowników i spis wszystkich sprzedawanych przedmiotów. Wykorzystuje bazę danych MySQL, która jest jednym z głównych wyborów do przechowywania danych. MySQL to bezpieczne i niezawodne przechowywanie danych. Ale w miarę jak Sellkart rósł, coraz więcej klientów zaczęło zagłębiać się w ten portal e-commerce. Teraz Sellkart gromadzi dane użytkowników, takie jak ich lokalizacja, zachowanie, logi demograficzne, zakupione i zwrócone przedmioty, opcje płatności, takie jak COD, karta kredytowa/debetowa. Analitycy wykorzystują te dane do przewidywania wartości klienta, lepszych opcji płatności i rozwijania działalności dzięki lepszym kampaniom reklamowym, ułatwiając procesy.

Aby zobrazować, w jaki sposób można strategicznie wykorzystać zebrane dane, rozważymy tutaj fałszywy zbiór danych konsumentów, który składa się z nazw użytkowników, ich miasta, ich zawodu, całkowitej liczby. zakupionych przedmiotów i łączna liczba rzeczy zwracanych z powodu wad.

Tutaj w fałszywym zbiorze danych (data.csv) mamy dane klientów, którzy kupili ponad 25 produktów.

Pola w data.csv

  • Nazwa użytkownika (ciąg)
  • Miasto (ciąg)
  • Zawód (ciąg)
  • Kupione (liczba całkowita)
  • Zwrócone (liczba całkowita)
  • Sellkart wykorzystuje te dane, które mają wiele kolumn i dość duży zbiór danych, liczący ponad kilka gigabajtów, do przewidywania i zrozumienia kluczowych informacji o swoim systemie, takich jak:

  • Dożywotnia wartość klienta
  • Sukces produktu
  • Demograficzny zakup produktu
  • Regiony zainteresowania
  • Wycena produktów w czasie rzeczywistym
  • Zwiększaj sprzedaż angażujących klientów

Teraz pokażemy, jak odbywa się analiza małego zasięgu w Hadoop. Rzeczy, które dowiemy się na podstawie danych:

a) Znalezienie najlepszego konsumenta na podstawie ilości zakupionego produktu.

Zastosowania: Daj specjalne przywileje najlepszym kupującym, sprzedając przeciętnym klientom.

b) Znalezienie sektora pracy, który kupuje większość produktów.

Zastosowania: utrzymanie większej ilości produktów z bestsellerowego asortymentu, rekomendacja do produktów podobnego typu.

c) Znalezienie miast, w których kupowana jest większość produktów.

Zastosowania: docieranie do nabywców z uwzględnieniem regionu, skupianie się na obszarach, w których jest mniej klientów, wypróbowywanie nowych produktów na dobrym rynku.

1. Kopiowanie danych do HDFS.

a) Utwórz katalog w 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) Kopiowanie pliku do dalszego wykorzystania

[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

Po skopiowaniu tego pliku jest on przetwarzany za pomocą Hive, aby uzyskać różne wyniki.

2. Wykorzystanie ula do przetwarzania danych.

a) Utworzenie tabeli w ulu, która będzie używana do przechowywania tych danych.

[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) Załaduj plik do tabel ula zakupy

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) Znajomość spostrzeżeń tabeli.

ula> opisz sformatowane zakupy;

ok

 # col_name data_type komentarz             

nazwa użytkownika ciąg Brak                
miasto ciąg Brak                
zawód ciąg Brak                
zakupiony przedmiot int Brak                
zwrócona pozycja int Brak                

# Szczegółowe informacje o tabeli             
Baza danych: domyślna                  
Właściciel: szkolenie                 
CreateTime: Tue Jul 21 16:56:38 IST 2015     
LastAccessTime: NIEZNANE                  
Tryb ochrony: brak                     
Retencja: 0                        
Lokalizacja: hdfs://localhost/user/hive/magazyn/zakupy    
Typ tabeli: MANAGED_TABLE            
Parametry tabeli:                
        transient_lastDdlTime 1437478210          

# Informacje o pamięci            
Biblioteka SerDe: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe    
InputFormat: org.apache.hadoop.mapred.TextInputFormat         
OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat     
Skompresowany: Nie                       
Ilość wiader: -1                       
Kolumny łyżki: []                       
Sortuj kolumny: []                       
Parametry opisu pamięci:             
        pole.delim ,                   
        serializacja.format ,                   
Czas potrzebny: 0,302 sekundy

3. Teraz musimy zobaczyć, jak można wykorzystać te dane.

a) Znalezienie ludzi, którzy są najlepszymi klientami, aby zaoferować im więcej rabatów. Najpierw dowiemy się, jaka jest największa zamówiona ilość, a następnie dopasujemy tę ilość do wszystkich rekordów i znajdziemy najlepszych klientów.

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 tak dalej na liście, teraz firma może znaleźć najlepszych klientów, ten krok można łatwo wykonać na MySQL, ale tylko wtedy, gdy dane są bardzo małe, gdy dane są w gigabitach. Hadoop wchodzi, aby uratować sytuację.

b) Teraz analityk może dowiedzieć się, który sektor pracy jest jego najlepszym klientem, czyli przeanalizować miejsca pracy osób, które kupują najwięcej, aby zwiększyć produkty z tego sektora.

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 tak dalej.

Teraz wiedząc, że księgowy jest jednym z najlepszych sektorów pracy, z których ludzie kupują rzeczy, mogą zwiększyć sprzedaż w tym dziale.

4. Korzystanie ze świni

Teraz użyjemy świni do wykonania innych funkcji, takich jak zbieranie grup nazw użytkowników z określonego miasta, a te miasta są głównymi konsumentami.

a) Załaduj dane w świni

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) Teraz pogrupujemy nazwy użytkowników najlepszych konsumentów według miast.

Do segregowania ewidencji czołowych konsumentów

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

Grupowanie najlepszych miast konsumenckich teraz, aby uzyskać nazwy użytkowników jako kolekcję.

Dane są pogrupowane, ale nieuporządkowane.

Więc musimy to teraz zamówić.

W ten sposób uporządkowane są więc ostateczne dane.

Teraz możemy wykorzystać te dane. Podobnie możemy wyodrębnić miasta o najmniejszej liczbie konsumentów, w tych miastach firma może zdefiniować większy budżet na kampanie reklamowe i promocyjne, aby więcej osób wchodziło w interakcję z portalem.

A dla miast i konsumentów, w których występuje wysoki poziom konsumpcji, firma może wprowadzać nowe produkty i poszerzać swój krąg.

Jeśli masz jakiekolwiek wątpliwości lub pytania, wspomnij je w polu komentarzy poniżej.