Разделы Hive — пример Sellkart — стратегическое использование данных

Опубликовано: 2015-08-14

Sellkart — это основной индийский веб-сайт электронной коммерции и розничный магазин, и, как и любой другой веб-сайт электронной коммерции, он должен хранить пользовательские данные и инвентарь всех товаров, которые он продает. Он использует базу данных MySQL, которая является одним из основных вариантов хранения данных. MySQL — это безопасное, надежное и надежное хранилище данных. Но по мере того, как Sellkart росла, все больше и больше клиентов начинали заходить на этот портал электронной коммерции. Теперь Sellkart собирает пользовательские данные, такие как их местоположение, их поведение, демографические журналы, купленные и возвращенные товары, их способ оплаты, такой как наложенный платеж, кредитная карта / дебетовая карта. Аналитики используют эти данные для прогнозирования ценности клиентов, лучших вариантов оплаты и расширения бизнеса с помощью более эффективных рекламных кампаний, упрощая процессы.

Чтобы показать, как собранные данные могут использоваться стратегически, мы рассмотрим здесь поддельный набор данных о потребителях, который состоит из имен пользователей, их города, их рода занятий, общего количества. купленных предметов и общее количество. товаров, возвращенных из-за дефектов.

Здесь, в поддельном наборе данных (data.csv), у нас есть данные клиентов, которые купили более 25 товаров.

Поля в data.csv

  • Имя пользователя (строка)
  • Город (строка)
  • Род занятий (строка)
  • Куплено (целое число)
  • Возвращено (целое число)
  • Sellkart использует эти данные, которые имеют несколько столбцов и довольно большой набор данных размером более нескольких гигабайт, чтобы прогнозировать и понимать ключевые идеи своей системы, такие как:

  • Пожизненная ценность клиента
  • Успех продукта
  • Демографическая покупка продукта
  • Зоны беспокойства
  • Цены на товары в режиме реального времени
  • Допродажи, привлекающие клиентов

Теперь покажем, как в Hadoop происходит анализ малого диапазона. Что мы узнаем, используя данные:

а) Нахождение лучшего потребителя на основе количества купленного им продукта.

Использование: давать особые привилегии лучшим покупателям, повышая продажи средним клиентам.

б) Нахождение сектора занятости, в котором закупается больше всего товаров.

Использование: хранение большего количества продуктов из наиболее продаваемого ассортимента, рекомендации по продуктам аналогичного типа.

в) Нахождение городов, в которых покупается больше всего товаров.

Использование: Ориентация на покупателей по регионам, сосредоточение внимания на областях, где меньше клиентов, проба новых продуктов на хорошем рынке.

1. Копирование данных в HDFS.

а) Создайте каталог в 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

б) Копирование файла для дальнейшего использования

[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

После того, как этот файл скопирован, он обрабатывается с помощью Hive для получения разных результатов.

2. Использование куста для обработки данных.

а) Создание таблицы в улье, которая будет использоваться для хранения этих данных.

[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

б) Загрузить файл в магазины ульев

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

в) Знание выводов из таблицы.

hive> описать отформатированные покупки;

Ok

 # col_name data_type комментарий             

строка имени пользователя                
строка города                
Строка занятия Нет                
закупленный элемент int Нет                
возвращенный элемент целое Нет                

# Подробная информация о таблице             
База данных: по умолчанию                  
Владелец: обучение                 
CreateTime: Вт, 21 июля, 16:56:38 IST 2015     
LastAccessTime: НЕИЗВЕСТНО                  
Режим защиты: нет                     
Удержание: 0                        
Расположение: hdfs://localhost/user/hive/warehouse/shopping    
Тип таблицы: MANAGED_TABLE            
Параметры таблицы:                
        transient_lastDdlTime 1437478210          

# Информация о хранилище            
Библиотека SerDe: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe    
Формат ввода: org.apache.hadoop.mapred.TextInputFormat         
Выходной формат: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat     
Сжатый: Нет                       
Количество ведер: -1                       
Столбцы ведра: []                       
Сортировать столбцы: []                       
Параметры описания хранилища:             
        поле.делим ,                   
        сериализация.формат ,                   
Затраченное время: 0,302 секунды

3. Теперь нам нужно посмотреть, как можно использовать эти данные.

а) Поиск людей, которые являются лучшими клиентами, чтобы предложить им больше скидок. Сначала мы найдем наибольшее заказанное количество, затем сопоставим это количество со всеми записями и найдем лучших клиентов.

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

И так по списку, теперь компания может найти лучших клиентов, этот шаг можно легко выполнить на MySQL, но только когда данных очень мало, когда данные в гигабитах, Hadoop приходит, чтобы спасти положение.

б) Теперь аналитик может определить, какой сектор занятости является его лучшим клиентом, т. е. проанализировать рабочие места людей, которые покупают больше всего, чтобы увеличить продукцию этого сектора.

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.

И так далее.

Теперь, зная, что клерк по работе с клиентами является одним из лучших секторов вакансий, в котором люди покупают товары, они могут увеличить продажи в этом отделе.

4. Использование свиньи

Теперь мы будем использовать свинью для выполнения некоторых других функций, таких как сбор групп имен пользователей из определенного города, а эти города являются основными потребителями.

а) Загрузите данные в свинью

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;

б) Теперь сгруппируем имена пользователей топовых потребителей по городам.

Для разделения записей основных потребителей

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

Теперь сгруппируйте лучшие города-потребители, чтобы получить имена пользователей в виде коллекции.

Данные сгруппированы, но неупорядочены.

Так что нам нужно заказать его сейчас.

Так упорядочиваются окончательные данные.

Теперь мы можем использовать эти данные. Точно так же мы можем выделить города с наименьшим количеством потребителей, в этих городах компания может выделить больший бюджет для рекламных и рекламных кампаний, чтобы больше людей взаимодействовало с порталом.

А для городов и потребителей, где высокий уровень потребления, компания может запустить новые продукты и расширить их круг.

Если у вас есть какие-либо сомнения или вопросы, укажите их в поле для комментариев ниже.