Particiones Hive: estudio de caso de Sellkart: uso de datos de forma estratégica
Publicado: 2015-08-14Sellkart es un sitio web indio de comercio electrónico principal y una tienda minorista y, como cualquier otro sitio web de comercio electrónico, tiene que almacenar datos de usuario e inventario de todos los artículos que vende. Utiliza la base de datos MySQL, que es una de las principales opciones de almacenamiento de datos. MySQL es un almacenamiento de datos seguro, protegido y confiable. Pero a medida que Sellkart creció, más y más clientes comenzaron a sumergirse en este portal de comercio electrónico. Ahora Sellkart recopila datos de usuario como su ubicación, su comportamiento, registros demográficos, artículos comprados y artículos devueltos, su opción de pago, como COD, tarjeta de crédito/débito. Los analistas usan estos datos para predecir el valor del cliente, mejores opciones de pago y expandir el negocio utilizando mejores campañas publicitarias, lo que facilita los procesos.
Para describir cómo se pueden usar estratégicamente los datos recopilados, consideraremos aquí un conjunto de datos falso de consumidores que consiste en los nombres de usuario, su ciudad, su ocupación, número total. de artículos comprados y total no. de los artículos devueltos por defectos.
Aquí, en el conjunto de datos falso (data.csv), tenemos los datos de los clientes que compraron más de 25 artículos.
Campos en data.csv
- Nombre de usuario (Cadena)
- Ciudad (Cadena)
- Ocupación (cadena)
- Comprado (Entero)
- Devuelto (Entero)
Sellkart utiliza estos datos, que tienen múltiples columnas y un conjunto de datos considerablemente grande de más de varios gigabytes, para predecir y comprender la información clave de su sistema, como:
- Valor de por vida del cliente
- éxito del producto
- Compra demográfica de un producto.
- Regiones de preocupación
- Precios en tiempo real de los productos.
- Vender clientes atractivos
Ahora mostraremos cómo se lleva a cabo un análisis de rango pequeño en Hadoop. Cosas que descubriremos usando los datos:
a) Encontrar el principal consumidor sobre la base de la cantidad de producto que compraron.
Usos: Otorgue privilegios especiales a los mejores compradores, aumentando las ventas de los clientes promedio.
b) Encontrar el sector laboral que más productos compra.
Usos: mantenimiento de más productos de la gama más vendida, recomendación de tipos de productos similares.
c) Encontrar las ciudades donde se compran más productos.
Usos: Enfocándose en los compradores según la región, enfocándose en áreas donde hay menos clientes, probando nuevos productos en un buen mercado.
1. Copiar los datos en HDFS.
a) Hacer el directorio en 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) Copiar el archivo para su 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
Después de copiar este archivo, se procesa utilizando Hive para obtener diferentes resultados.
2. Usar colmena para procesar los datos.
a) Crear una tabla en Hive, que se utilizará para almacenar estos datos.
[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) Cargue el archivo en las tablas de colmena de compras
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) Conocer las percepciones de la mesa.
colmena> describir compras formateadas;
OK
# nombre_col_tipo_de_datos comentario cadena de nombre de usuario Ninguno cadena de ciudad Ninguno cadena de ocupación Ninguno artículo comprado int Ninguno elemento devuelto int Ninguno # Información detallada de la tabla Base de datos: por defecto Propietario: formación CreateTime: martes 21 de julio 16:56:38 IST 2015 LastAccessTime: DESCONOCIDO Modo de protección: Ninguno Retención: 0 Ubicación: hdfs://localhost/user/hive/warehouse/shopping Tipo de tabla: MANAGED_TABLE Parámetros de la tabla: transient_lastDdlTime 1437478210 # Información de almacenamiento Biblioteca SerDe: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe Formato de entrada: org.apache.hadoop.mapred.TextInputFormat Formato de salida: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat Comprimido: No Número de cubetas: -1 Columnas de cubo: [] Ordenar columnas: [] Parámetros de descripción de almacenamiento: campo.delim , serialización.formato, Tiempo empleado: 0,302 segundos
3. Ahora necesitamos ver cómo se pueden usar estos datos.
a) Encontrar personas que sean mejores clientes para ofrecerles más descuentos. Primero encontraremos cuál es la cantidad más alta pedida, luego compararemos esa cantidad con todos los registros y encontraremos a los mejores 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
Y así continúa la lista, ahora la empresa puede encontrar los mejores clientes, este paso se puede realizar fácilmente en MySQL, pero solo cuando los datos son muy pequeños cuando los datos están en gigabits Hadoop entra para salvar el día.
b) Ahora el analista puede encontrar qué sector laboral es su mejor cliente, es decir, analizar los trabajos de las personas que más compran, para aumentar los productos de ese sector.
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.
Y así.
Ahora que saben que un empleado de cuenta es uno de los principales sectores laborales en los que las personas compran cosas, pueden aumentar las ventas en este departamento.
4. Usando cerdo
Ahora usaremos pig para realizar otras funciones, como recopilar los grupos de nombres de usuario de una ciudad en particular, y estas ciudades son las principales consumidoras.
a) Cargar los datos en 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) Ahora agruparemos los nombres de usuario de los principales consumidores según las ciudades.
Para segregar registros de los principales consumidores
Hive>top = filter fulldata by purchaseditem==250;
Agrupando las principales ciudades consumidoras ahora, para obtener los nombres de usuario como una colección.
Los datos están agrupados pero desordenados.
Así que tenemos que pedirlo ahora.
Entonces de esta manera se ordenan los datos finales.
Ahora podemos usar estos datos. De igual manera podemos extraer las ciudades con menos consumidores, en esas ciudades la empresa puede definir más presupuesto para las campañas publicitarias y publicitarias para que más personas interactúen con el portal.
Y para las ciudades y los consumidores donde hay una alta tasa de consumo, la empresa puede lanzar nuevos productos y ampliar su círculo.
Si tiene alguna duda o consulta, menciónela en el cuadro de comentarios a continuación.