Разделы Hive — пример Sellkart — стратегическое использование данных
Опубликовано: 2015-08-14Sellkart — это основной индийский веб-сайт электронной коммерции и розничный магазин, и, как и любой другой веб-сайт электронной коммерции, он должен хранить пользовательские данные и инвентарь всех товаров, которые он продает. Он использует базу данных 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;
Теперь сгруппируйте лучшие города-потребители, чтобы получить имена пользователей в виде коллекции.
Данные сгруппированы, но неупорядочены.
Так что нам нужно заказать его сейчас.
Так упорядочиваются окончательные данные.
Теперь мы можем использовать эти данные. Точно так же мы можем выделить города с наименьшим количеством потребителей, в этих городах компания может выделить больший бюджет для рекламных и рекламных кампаний, чтобы больше людей взаимодействовало с порталом.
А для городов и потребителей, где высокий уровень потребления, компания может запустить новые продукты и расширить их круг.
Если у вас есть какие-либо сомнения или вопросы, укажите их в поле для комментариев ниже.