Partisi sarang – Studi Kasus Sellkart-Menggunakan data secara strategis

Diterbitkan: 2015-08-14

Sellkart adalah situs web e-niaga dan toko ritel India utama dan seperti setiap situs web e-niaga lainnya, ia harus menyimpan data pengguna dan inventaris semua barang yang dijualnya. Ini menggunakan database MySQL yang merupakan salah satu pilihan penyimpanan data utama. MySQL adalah penyimpanan data yang aman, aman, dan andal. Namun seiring dengan pertumbuhan Sellkart, semakin banyak pelanggan yang mulai terjun ke portal E-commerce ini. Sekarang Sellkart, mengumpulkan data pengguna seperti lokasi mereka, perilaku mereka, log demografis, item yang dibeli dan item yang dikembalikan, pilihan pembayaran mereka seperti COD, kartu kredit/kartu Debit. Analis menggunakan data ini untuk memprediksi nilai pelanggan, opsi pembayaran yang lebih baik, dan memperluas bisnis menggunakan kampanye iklan yang lebih baik, sehingga memudahkan proses.

Untuk menggambarkan bagaimana data yang dikumpulkan dapat digunakan secara strategis, kami akan mempertimbangkan di sini kumpulan data palsu konsumen yang terdiri dari nama pengguna, kota mereka, pekerjaan mereka, total no. dari item yang dibeli dan total no. item yang dikembalikan karena cacat.

Di sini, di dataset palsu (data.csv), kami memiliki data pelanggan yang telah membeli lebih dari 25 item.

Bidang di data.csv

  • Nama Pengguna (String)
  • Kota (Tali)
  • Pekerjaan (String)
  • Dibeli (Bilangan Bulat)
  • Dikembalikan (Bilangan Bulat)
  • Sellkart menggunakan data ini, yang memiliki banyak kolom dan kumpulan data yang cukup besar hingga beberapa gigabyte, untuk memprediksi dan memahami wawasan utama sistemnya, seperti:

  • Nilai seumur hidup pelanggan
  • Keberhasilan produk
  • Pembelian demografis suatu produk
  • Daerah yang menjadi perhatian
  • Penetapan harga produk secara real time
  • Tingkatkan penjualan yang menarik pelanggan

Sekarang kami akan menunjukkan bagaimana analisis rentang kecil terjadi di Hadoop. Hal-hal yang akan kita temukan menggunakan data:

a) Menemukan konsumen teratas berdasarkan jumlah produk yang mereka beli.

Kegunaan: Memberikan hak istimewa kepada pembeli terbaik, meningkatkan penjualan rata-rata pelanggan.

b) Menemukan sektor pekerjaan yang paling banyak membeli produk.

Kegunaan: menjaga lebih banyak produk dari kisaran terlaris, rekomendasi untuk jenis produk serupa.

c) Menemukan kota tempat sebagian besar produk dibeli.

Kegunaan: Menargetkan pembeli berdasarkan wilayah, berfokus pada area di mana lebih sedikit pelanggan, mencoba produk baru di pasar yang bagus.

1.Menyalin data ke HDFS.

a) Buat direktori di 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) Menyalin file untuk penggunaan lebih lanjut

[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

Setelah file ini disalin, diproses menggunakan Hive, untuk mendapatkan hasil yang berbeda.

2. Menggunakan Hive untuk mengolah data.

a) Membuat tabel di dalam hive, yang akan digunakan untuk menyimpan data ini.

[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) Muat file ke dalam tabel sarang belanja

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) Mengetahui wawasan tabel.

hive> mendeskripsikan belanja terformat;

oke

 # col_name data_type komentar             

string nama pengguna Tidak ada                
string kota Tidak ada                
string pekerjaan Tidak ada                
item yang dibeli int Tidak ada                
item yang dikembalikan ke Tidak ada                

# Informasi Tabel Rinci             
Basis data: default                  
Pemilik: pelatihan                 
Waktu Pembuatan: Sel 21 Jul 16:56:38 IST 2015     
Waktu Akses Terakhir: TIDAK DIKETAHUI                  
Mode Perlindungan: Tidak Ada                     
Retensi: 0                        
Lokasi: hdfs://localhost/user/hive/warehouse/shopping    
Jenis Tabel: MANAGED_TABLE            
Parameter Tabel:                
        transient_lastDdlTime 1437478210          

# Informasi Penyimpanan            
Pustaka SerDe: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe    
Format Input: org.apache.hadoop.mapred.TextInputFormat         
OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat     
Terkompresi: Tidak                       
Jumlah Bucket: -1                       
Kolom Keranjang: []                       
Urutkan Kolom: []                       
Parameter Desc Penyimpanan:             
        bidang.delim ,                   
        serialisasi.format ,                   
Waktu yang dibutuhkan: 0,302 detik

3. Sekarang kita perlu melihat bagaimana data ini dapat digunakan.

a) Menemukan orang-orang yang merupakan pelanggan terbaik untuk menawarkan lebih banyak diskon. Pertama, kami akan menemukan jumlah pesanan tertinggi, kemudian kami akan mencocokkan jumlah itu dengan semua catatan dan menemukan pelanggan teratas.

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

Dan seterusnya daftar terus, sekarang perusahaan dapat menemukan pelanggan teratas, langkah ini dapat dilakukan dengan mudah di MySQL, tetapi hanya ketika data sangat kecil ketika data dalam gigabit Hadoop masuk untuk menyelamatkan hari.

b) Sekarang analis dapat menemukan sektor pekerjaan mana yang merupakan klien terbaik mereka, yaitu menganalisis pekerjaan orang-orang yang paling banyak membeli, sehingga dapat meningkatkan produk dari sektor tersebut.

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.

Dan seterusnya.

Sekarang mengetahui bahwa petugas akun adalah salah satu sektor pekerjaan teratas tempat orang membeli barang, mereka dapat meningkatkan penjualan di departemen ini.

4. Menggunakan Babi

Sekarang kita akan menggunakan babi untuk melakukan beberapa fungsi lain seperti mengumpulkan kelompok nama pengguna dari kota tertentu, dan kota-kota ini adalah konsumen teratas.

a) Muat data dalam 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) Sekarang kita akan mengelompokkan nama pengguna konsumen teratas menurut kota.

Untuk memisahkan catatan konsumen teratas

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

Mengelompokkan kota konsumen teratas sekarang, untuk mendapatkan nama pengguna sebagai koleksi.

Data dikelompokkan tetapi tidak berurutan.

Jadi kita harus memesannya sekarang.

Jadi dengan cara ini data akhir dipesan.

Sekarang kita dapat menggunakan data ini. Demikian pula kita dapat mengekstrak kota-kota dengan konsumen paling sedikit, di kota-kota tersebut perusahaan dapat menetapkan lebih banyak anggaran untuk kampanye iklan dan publisitas sehingga lebih banyak orang berinteraksi dengan portal.

Dan untuk kota dan konsumen yang tingkat konsumsinya tinggi, perusahaan dapat meluncurkan produk baru dan memperluas lingkaran mereka.

Jika Anda memiliki keraguan atau pertanyaan, sebutkan di kotak komentar di bawah.