Kovan bölümleri – Sellkart Vaka Çalışması-Verileri stratejik olarak kullanma
Yayınlanan: 2015-08-14Sellkart, birincil bir e-ticaret Hint web sitesi ve perakende mağazasıdır ve diğer tüm e-ticaret web siteleri gibi, sattığı tüm ürünlerin kullanıcı verilerini ve envanterini depolaması gerekir. Başlıca veri depolama seçeneklerinden biri olan MySQL veritabanını kullanır. MySQL, güvenli, güvenli ve güvenilir veri depolamadır. Ancak Sellkart büyüdükçe, daha fazla müşteri bu E-ticaret portalına girmeye başladı. Artık Sellkart, konumları, davranışları, demografik günlükleri, satın alınan ürün ve iade edilen ürünler, COD, Kredi kartı/Banka kartı gibi ödeme seçenekleri gibi kullanıcı verilerini toplar. Analistler bu verileri müşteri değerini, daha iyi ödeme seçeneklerini tahmin etmek ve daha iyi reklam kampanyaları kullanarak işleri genişletmek ve süreçleri kolaylaştırmak için kullanır.
Toplanan verilerin stratejik olarak nasıl kullanılabileceğini göstermek için, burada kullanıcı adları, şehirleri, meslekleri, toplam no'dan oluşan sahte bir tüketici veri kümesini ele alacağız. satın alınan öğelerin sayısı ve toplam no. kusurlar nedeniyle iade edilen ürünlerin.
Burada sahte veri setinde (data.csv), 25'ten fazla ürün satın alan müşterilerin verileri var.
data.csv dosyasındaki alanlar
- Kullanıcı adı (Dize)
- Şehir (Dize)
- Meslek (Dize)
- Satın alındı (Tamsayı)
- Döndürülen (Tamsayı)
Sellkart, birden çok sütunu ve birkaç gigabaytın üzerinde oldukça büyük bir veri kümesini içeren bu verileri, sisteminin temel öngörülerini tahmin etmek ve anlamak için kullanır, örneğin:
- Müşterinin yaşam boyu değeri
- Ürün başarısı
- Bir ürünün demografik satın alınması
- endişe bölgeleri
- Ürünlerin gerçek zamanlı fiyatlandırması
- İlgi çekici müşterileri yukarı satmak
Şimdi Hadoop'ta küçük bir aralık analizinin nasıl yapıldığını göstereceğiz. Verileri kullanarak öğreneceğimiz şeyler:
a) Aldıkları ürün miktarına göre en üst tüketiciyi bulmak.
Kullanım Alanları: Ortalama müşterilere satış yaparak en iyi alıcılara özel ayrıcalıklar verin.
b) En çok ürünü satın alan iş sektörünü bulmak.
Kullanım Alanları: En çok satan ürün yelpazesinden daha fazla ürün tutmak, benzer türdeki ürünlere tavsiye.
c) En çok ürünün satın alındığı şehirlerin bulunması.
Kullanım Alanları: Bölge bilge alıcıları hedeflemek, daha az müşterinin olduğu alanlara odaklanmak, iyi pazarlarda yeni ürünler denemek.
1.Verilerin HDFS'ye kopyalanması.
a) Dizini hadoop HDFS'de yapın
[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) Dosyayı daha fazla kullanım için kopyalamak
[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
Bu dosya kopyalandıktan sonra farklı sonuçlar elde etmek için Hive kullanılarak işlenir.
2. Verileri işlemek için kovanı kullanma.
a) Bu verileri depolamak için kullanılacak kovanda tablo oluşturma.
[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) Dosya alışverişini kovan tablolarına yükleyin
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) Tablonun içgörülerini bilmek.
kovan> biçimlendirilmiş alışverişi tanımlayın;
Tamam
# col_name data_type yorumu kullanıcı adı dizisi Yok şehir dizisi Yok meslek dizisi Yok satın alınan öğe int Yok iade öğe int Yok # Ayrıntılı Tablo Bilgileri Veritabanı: varsayılan Sahip: eğitim CreateTime: 21 Temmuz Salı 16:56:38 IST 2015 Son Erişim Süresi: BİLİNMİYOR Koruma Modu: Yok Tutma: 0 Konum: hdfs://localhost/user/Hive/warehouse/shopping Tablo Türü: MANAGED_TABLE Tablo Parametreleri: transient_lastDdlTime 1437478210 # Depolama Bilgileri SerDe Kitaplığı: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe InputFormat: org.apache.hadoop.mapred.TextInputFormat OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat Sıkıştırılmış: Hayır Kova Sayısı: -1 Kova Sütunları: [] Sütunları Sırala: [] Depolama Tanım Paramları: alan.delim , serileştirme.format , Geçen süre: 0.302 saniye
3. Şimdi bu verilerin nasıl kullanılabileceğini görmemiz gerekiyor.
a) Onlara daha fazla indirim sunmak için en iyi müşteri olan kişileri bulmak. İlk önce sipariş edilen en yüksek miktarı bulacağız, ardından bu miktarı tüm kayıtlarla eşleştireceğiz ve en iyi müşterileri bulacağız.
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
Ve böylece liste devam ediyor, şimdi şirket en iyi müşterileri bulabiliyor, bu adım MySQL üzerinde kolayca gerçekleştirilebilir, ancak yalnızca veriler çok küçük olduğunda veriler gigabitlerdeyken Hadoop günü kurtarmak için gelir.
b) Artık analist hangi iş sektörünün en iyi müşterisi olduğunu bulabilir, yani o sektörün ürünlerini artırmak için en çok satın alan kişilerin işlerini analiz edebilir.
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.
Ve bunun gibi.
Artık bir muhasebe memurunun insanların bir şeyler satın aldığı en iyi iş sektörlerinden biri olduğunu bilerek, bu bölümdeki satışları artırabilirler.
4. Domuz Kullanmak
Şimdi, belirli bir şehirden kullanıcı adı gruplarını toplamak gibi bazı diğer işlevleri gerçekleştirmek için domuz kullanacağız ve bu şehirler en iyi tüketicilerdir.
a) Verileri domuza yükleyin
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) Şimdi en iyi tüketicilerin kullanıcı adlarını şehirlere göre gruplayacağız.
En iyi tüketicilerin kayıtlarını ayırmak için
Hive>top = filter fulldata by purchaseditem==250;
Kullanıcı adlarını bir koleksiyon olarak almak için en çok tüketici şehirleri şimdi gruplandırın.
Veriler gruplandırılmıştır ancak sırasızdır.
Bu yüzden şimdi sipariş vermeliyiz.
Böylece nihai veriler sıralanır.
Artık bu verileri kullanabiliriz. Benzer şekilde tüketicinin en az olduğu şehirleri de çıkartabiliriz, bu şehirlerde şirket reklam ve tanıtım kampanyaları için daha fazla bütçe tanımlayabilir, böylece daha fazla insan portalla etkileşime girebilir.
Tüketim oranının yüksek olduğu şehirler ve tüketiciler için ise şirket yeni ürünler çıkarabilir ve çevresini genişletebilir.
Herhangi bir şüpheniz veya sorunuz varsa, bunları aşağıdaki yorumlar kutusunda belirtin.