ハイブパーティション–セルカートのケーススタディ–データを戦略的に使用する

公開: 2015-08-14

Sellkartは、主要なeコマースインドのWebサイトおよび小売店であり、他のすべてのeコマースWebサイトと同様に、販売するすべてのアイテムのユーザーデータと在庫を保存する必要があります。 これは、主要なデータストレージの選択肢の1つであるMySQLデータベースを使用します。 MySQLは安全で、安全で、信頼できるデータストレージです。 しかし、Sellkartが大きくなるにつれて、ますます多くの顧客がこのEコマースポータルに飛び込み始めました。 現在、Sellkartは、場所、行動、人口統計ログ、購入したアイテムと返品されたアイテム、代金引換、クレジットカード/デビットカードなどの支払いオプションなどのユーザーデータを収集します。 アナリストはこのデータを使用して、顧客価値、より良い支払いオプションを予測し、より良い広告キャンペーンを使用してビジネスを拡大し、プロセスを簡素化します。

収集されたデータを戦略的に使用する方法を説明するために、ここでは、ユーザー名、都市、職業、合計数で構成される消費者の偽のデータセットを検討します。 購入したアイテムの総数と合計数欠陥のために返されたアイテムの。

ここに偽のデータセット(data.csv)があり、25を超えるアイテムを購入した顧客のデータがあります。

data.csvのフィールド

  • ユーザー名(文字列)
  • 市(文字列)
  • 職業(文字列)
  • 購入済み(整数)
  • 返された(整数)
  • Sellkartは、複数の列と数ギガバイトを超えるかなり大きなデータセットを持つこのデータを使用して、次のようなシステムの重要な洞察を予測および理解します。

  • 顧客の生涯価値
  • 製品の成功
  • 製品の人口統計学的購入
  • 関心のある地域
  • 製品のリアルタイム価格設定
  • 魅力的な顧客を売り上げる

次に、Hadoopで小範囲分析がどのように行われるかを示します。 データを使用して私たちが見つけること:

a)購入した製品の量に基づいてトップの消費者を見つける。

用途:最高の購入者に特別な特権を与え、平均的な顧客をアップセルします。

b)ほとんどの製品を購入する職種を見つける。

用途:ベストセラーの範囲のより多くの製品を維持し、同様のタイプの製品に推奨します。

c)ほとんどの製品が購入されている都市を見つける。

用途:地域ごとに購入者をターゲットにし、顧客が少ない地域に焦点を当て、良い市場で新製品を試します。

1.データをHDFSにコピーします。

a)HadoopHDFSでディレクトリを作成します

[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)さらに使用するためにファイルをコピーする

[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.ハイブを使用してデータを処理します。

a)このデータを格納するために使用されるハイブにテーブルを作成します。

[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)ハイブテーブルショッピングにファイルをロードする

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)テーブルの洞察を知る。

ハイブ>フォーマットされたショッピングについて説明します。

わかった

#col_namedata_typeコメント             

ユーザー名文字列なし                
都市文字列なし                
職業文字列なし                
Purchaseditemintなし                
returnitemintなし                

#詳細なテーブル情報             
データベース:デフォルト                  
所有者:トレーニング                 
CreateTime:Tue Jul 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    
InputFormat:org.apache.hadoop.mapred.TextInputFormat         
OutputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat     
圧縮:いいえ                       
バケット数:-1                       
バケット列:[]                       
列の並べ替え:[]                       
ストレージ説明パラメータ:             
        field.delim、                   
        serialization.format、                   
所要時間:0.302秒

3.次に、このデータをどのように使用できるかを確認する必要があります。

a)より多くの割引を提供するのに最適な顧客を見つける。 まず、注文された最大数量を見つけ、次にその数量をすべてのレコードと照合して、上位の顧客を見つけます。

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がその日を節約します。

b)これで、アナリストはどのジョブセクターが最適なクライアントであるかを見つけることができます。つまり、そのセクターの製品を増やすために、最も購入する人々のジョブを分析できます。

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.

等々。

アカウント担当者が人々が物を購入しているトップの職種の1つであることを知った今、彼らはこの部門の売り上げを増やすことができます。

4.Pigの使用

次に、pigを使用して、特定の都市からユーザー名のグループを収集するなど、他のいくつかの機能を実行します。これらの都市は、トップの消費者です。

a)データを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)次に、上位の消費者のユーザー名を都市ごとにグループ化します。

トップ消費者の記録を分離するため

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

現在、上位の消費都市をグループ化して、ユーザー名をコレクションとして取得します。

データはグループ化されていますが、順序付けされていません。

だから今すぐ注文する必要があります。

したがって、このようにして最終データが順序付けられます。

これで、このデータを使用できます。 同様に、消費者が最も少ない都市を抽出できます。これらの都市では、企業は広告キャンペーンと宣伝キャンペーンの予算をより多く定義して、より多くの人々がポータルを操作できるようにすることができます。

そして、消費率の高い都市や消費者のために、企業は新製品を発売し、その輪を広げることができます。

ご不明な点やご質問がございましたら、下のコメント欄にご記入ください。