Partições Hive – Sellkart Case Study-Usando dados estrategicamente

Publicados: 2015-08-14

O Sellkart é o principal site de comércio eletrônico indiano e loja de varejo e, como qualquer outro site de comércio eletrônico, precisa armazenar dados do usuário e inventário de todos os itens que vende. Ele usa o banco de dados MySQL, que é uma das principais opções de armazenamento de dados. MySQL é um armazenamento de dados seguro, seguro e confiável. Mas à medida que o Sellkart crescia, mais e mais clientes começaram a mergulhar neste portal de comércio eletrônico. Agora Sellkart, coleta dados do usuário como sua localização, seu comportamento, registros demográficos, itens comprados e itens devolvidos, sua opção de pagamento, como COD, cartão de crédito/débito. Os analistas usam esses dados para prever o valor do cliente, melhores opções de pagamento e expandir os negócios usando melhores campanhas publicitárias, facilitando os processos.

Para descrever como os dados coletados podem ser usados ​​estrategicamente, consideraremos aqui um conjunto de dados falso de consumidores que consiste em nomes de usuário, cidade, ocupação, número total. de itens comprados e número total. de itens devolvidos devido a defeitos.

Aqui no dataset falso (data.csv), temos os dados dos clientes que compraram mais de 25 itens.

Campos no data.csv

  • Nome de usuário (cadeia)
  • Cidade (String)
  • Ocupação (String)
  • Comprado (Inteiro)
  • Retornado (Inteiro)
  • A Sellkart usa esses dados, que possuem várias colunas e um conjunto de dados consideravelmente grande de mais de vários gigabytes, para prever e entender os principais insights de seu sistema, como:

  • Valor vitalício do cliente
  • Sucesso do produto
  • Compra demográfica de um produto
  • Regiões de interesse
  • Precificação de produtos em tempo real
  • Up sell engajando clientes

Agora vamos mostrar como uma análise de pequeno intervalo ocorre no Hadoop. Coisas que descobriremos usando os dados:

a) Encontrar o principal consumidor com base na quantidade de produto que comprou.

Usos: Dê privilégios especiais aos melhores compradores, fazendo upselling para clientes médios.

b) Encontrar o setor de trabalho que mais compra produtos.

Usos: manter mais produtos da gama mais vendida, recomendação de produtos similares.

c) Encontrar as cidades onde se compra a maioria dos produtos.

Usos: Segmentação de compradores por região, concentrando-se em áreas onde há menos clientes, experimentando novos produtos em um bom mercado.

1. Copiar os dados para HDFS.

a) Faça o diretório no 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) Copiando o arquivo para uso posterior

[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

Depois que esse arquivo é copiado, ele é processado usando o Hive, para obter resultados diferentes.

2. Usando o hive para processar os dados.

a) Criação de tabela no hive, que será utilizada para armazenar esses dados.

[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) Carregar arquivo em compras de tabelas de colmeia

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) Conhecer os insights da tabela.

colmeia> descrever compras formatadas;

OK

 # col_name data_type comentário             

nome de usuário string Nenhum                
cidade string Nenhum                
cadeia de ocupação Nenhum                
item comprado int Nenhum                
returnitem int Nenhum                

# Informações detalhadas da tabela             
Banco de dados: padrão                  
Proprietário: treinamento                 
CreateTime: Ter, 21 de julho 16:56:38 IST 2015     
LastAccessTime: DESCONHECIDO                  
Modo de proteção: Nenhum                     
Retenção: 0                        
Localização: hdfs://localhost/user/hive/warehouse/shopping    
Tipo de tabela: MANAGED_TABLE            
Parâmetros da tabela:                
        transient_lastDdlTime 1437478210          

# Informações de armazenamento            
Biblioteca SerDe: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe    
InputFormat: org.apache.hadoop.mapred.TextInputFormat         
OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat     
Comprimido: Não                       
Número de buckets: -1                       
Colunas do intervalo: []                       
Classificar Colunas: []                       
Parâmetros de descrição de armazenamento:             
        campo.delim ,                   
        serialização.formato ,                   
Tempo gasto: 0,302 segundos

3. Agora precisamos ver como esses dados podem ser usados.

a) Encontrar pessoas que são os melhores clientes para lhes oferecer mais descontos. Primeiro, encontraremos qual é a maior quantidade pedida, depois corresponderemos essa quantidade a todos os registros e encontraremos os principais clientes.

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 assim por diante a lista continua, agora a empresa pode encontrar os principais clientes, esta etapa pode ser realizada facilmente no MySQL, mas somente quando os dados são muito pequenos quando os dados estão em gigabits o Hadoop entra para salvar o dia.

b) Agora o analista pode descobrir qual setor de trabalho é seu melhor cliente, ou seja, analisar os empregos das pessoas que mais compram, de modo a aumentar os produtos desse setor.

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 assim por diante.

Agora, sabendo que um balconista é um dos principais setores de trabalho do qual as pessoas estão comprando coisas, eles podem aumentar as vendas nesse departamento.

4. Usando o Porco

Agora usaremos o pig para realizar algumas outras funções, como coletar os grupos de nomes de usuários de determinada cidade, e essas cidades são as principais consumidoras.

a) Carregue os dados em porco

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) Agora vamos agrupar os nomes de usuários dos principais consumidores de acordo com as cidades.

Para segregar registros dos principais consumidores

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

Agrupando as principais cidades consumidoras agora, para obter os nomes de usuário como uma coleção.

Os dados são agrupados, mas não ordenados.

Então precisamos fazer o pedido agora.

Assim, os dados finais são ordenados.

Agora podemos usar esses dados. Da mesma forma podemos extrair as cidades com menos consumidores, nessas cidades a empresa pode definir mais orçamento para as campanhas publicitárias e publicitárias para que mais pessoas interajam com o portal.

E para as cidades e consumidores onde há alto índice de consumo, a empresa pode lançar novos produtos e ampliar seu círculo.

Se você tiver dúvidas ou perguntas, mencione-as na caixa de comentários abaixo.