ハイブパーティション–セルカートのケーススタディ–データを戦略的に使用する
公開: 2015-08-14Sellkartは、主要な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;
現在、上位の消費都市をグループ化して、ユーザー名をコレクションとして取得します。
データはグループ化されていますが、順序付けされていません。
だから今すぐ注文する必要があります。
したがって、このようにして最終データが順序付けられます。
これで、このデータを使用できます。 同様に、消費者が最も少ない都市を抽出できます。これらの都市では、企業は広告キャンペーンと宣伝キャンペーンの予算をより多く定義して、より多くの人々がポータルを操作できるようにすることができます。
そして、消費率の高い都市や消費者のために、企業は新製品を発売し、その輪を広げることができます。
ご不明な点やご質問がございましたら、下のコメント欄にご記入ください。