今日、私はそれが正確な意思決定のインターネットマーケティングプロジェクトのすべての作業データ処理と分析は、タグを演奏テーブルに、分類の範囲に従って含め、完了している必要があり、体重を設定し、ワイド・テーブルを追加し、価格カテゴリー分析、販売分析、分類
ここ数日で、開発プロセスでは、私はいくつかの使用のハイブ、HQL文法、ハイブ、ハイブオペレーティングシステムとへのJDBC接続を含め、多くのことを学んだ、もっと重要なステップで、自分のステップを探求するために、教師のニーズに応じて、私は、データの意識の新たな分析を持って、分析するために分類するデータを分割する方法にスコープに従って、手順に従うべきであるデータの種類を知るようになります。
基本的なノートを含む、私の具体的な操作コードの下に取り付けられているが、執筆の過程があまりにも投資しているため、何のスクリーンショットはないだろう。。。。。。
以下自分のレビューハイブを書くとき、コードの概要は、主にも、いくつかの基本的な文法で見ることができ、いくつかの白のデータセットに対して、多くのコードを最適化することができない場合でも、後から使用されているが、すべての後、私はちょうど私と一緒に、クマを学び始めました。
//手机表 テーブルのiphoneを作成します( > id文字列、 >名配列<文字列>、 >タイトル文字列、 > StoreNameを文字列、 > storeid文字列、 >リンク列、 >価格はint、 >キーワード文字列、 >コメント文字列、 > goodcom int型、 >ブランド文字列 >モデル列、 >色列、 >稼働時間文字列 >システム文字列) 「」で終了>行フォーマット区切られたフィールド 『\ T』によって終了>コレクションアイテム 『の\ n』で終了>行; (テーブルiphone1を作成します > id文字列、 >名配列<文字列>、 >タイトル文字列、 > StoreNameを文字列、 > storeid文字列、 >リンク列、 >価格はint、 >キーワード文字列、 >コメント文字列、 > goodcom整数、 >ブランド文字列、 >モデル文字列、 >色列、 >稼働時間文字列 >システム文字列) 「」で終了>行フォーマット区切られたフィールド 『\ T』によって終了>コレクションアイテム 『の\ n』で終了>行; //電話のデータ・テーブル・清掃後 (iphone1 INTO INSERTを !iPhoneからSELECT * WHEREシステム= ""); //ユーザ情報テーブル、テーブル領域識別子がテーブルの代わりに、スプリットと一致しない、テーブルがuserinfo1推奨される 表のUserInfo(作成 ID文字列、 名前の文字列、 配列を配置<文字列>、 セックスのString、 誕生日String)を 行のフィールドは、区切り形式を終了よる'' '\ N-'で終わる行; //行動テーブルは、 テーブルのアクションを作成します( >文字列ユーザID、 > commodityid文字列、 >文字列の挙動、 >月の文字列、 >日String)を フォーマット区切られたフィールドで終了>行'' >「\ N-」で終わる行; //スプライシングおよび日付テーブルの後に行動 テーブルアクション1(作成し たユーザーIDの文字列、 commodityid文字列を、 行動列、 時間列) 「\ tの」によって終了行形式区切られたフィールド 「の\ n」で終了行。 //评论表 (テーブル・コメントを作成 commodityid文字列、 文字列、議論する 時間文字列、 ユーザーIDの文字列、 名前の文字列、 ランク列、 色文字列、 replynum文字列、 スコアはint、 ソース文字列を) 「\ tの」で終わる行形式を区切られたフィールド 終端ライン「\ n」をすることにより、 //拼接日期 アクション1挿入 >を選択し、ユーザーID、commodityid、行動、CONCAT(月、 " - "、日)アクションから。 名の文字列、 場所アレイ<文字列>、 commodityidストリング、//用户IDの セックスの文字列、 agetitle int型、 agerange文字列、 ランク列) 「\ tの」で終わる行形式区切られたフィールド は「\ n」をによって終了行。 userinfo.id選択userinfo.name、userinfo.place、userinfo.sex、 次いでケース(intとして2019キャスト(SUBSTR(userinfo.birthday、1,4)))<18 1 (2019キャスト(SUBSTR( userinfo.birthday、1,4)INT))<24を2として 場合(2019キャスト(intとしてSUBSTR(userinfo.birthday、1,4)))<29、次いで3 とき(2019キャスト(SUBSTR(ユーザー情報。 intとして誕生日、1,4)))<34、次いで4 intとして場合(2019キャスト(SUBSTR(userinfo.birthday、1,4)))<39、次いで5 (2019キャスト(SUBSTR(userinfo.birthday、 1,4)intとして))<49それから6 他の7終わり、 ケース場合(intとして2019キャスト(SUBSTR(userinfo.birthday、1,4)))<18、次いで"18岁以下" <場合(intとして2019キャスト(SUBSTR(userinfo.birthday、1,4))) 24次いで、 "以下24岁" (intとして2019キャスト(SUBSTR(userinfo.birthday、1,4)))<29、次いで"以下29岁" (2019キャスト(SUBSTR(userinfo.birthday、1,4- )としてINT))<34、次いで"以下34岁" intとして(2019キャスト(SUBSTR(userinfo.birthday、1,4)))<39、次いで"以下39岁" (2019キャスト(SUBSTR(ユーザー情報.birthday、1,4)などのint))<49それから"49岁以下" "50岁以上"終わり他 userinfo.id = comment.useridにコメントを参加のUserInfoから、comment.rank。 //查询销售量前十的 選択のブランド、action.commodityid = iphone1.idどこのブランドにiphone1に参加アクションからNUMとしてカウント(*)!= "" ハイブ>表saleTop10(登録 商標ストリング、 scountのINT) 「\ tの」によって終了行形式区切られたフィールド 「の\ n」によって終了ライン、 //查询华为旗下的トップ20 を選択し、名前、num個のDESC制限20によって、名前順でiphoneブランド= '华为(HUAWEI)'グループからNUMとして(*)カウント。 //华为TOP20表 テーブルHUAWETopSale20(登録 名配列<ストリング>、 MCOUNTのINT) 「\ T」によって終了行形式区切られたフィールド 「」によって終了コレクションアイテム の\ n「で終了行を」。 //插入数据 num個のDESC制限20によって、名前順でiphoneブランド= '华为(HUAWEI)'グループからNUMとして(*)カウント、名前を選択しHUAWETopSale20に挿入します。 MCOUNTのINT) 「\ T」によって終了行形式区切られたフィールド 「」によって終了コレクションアイテム の\ n「で終了行を」。 //插入数据 num個のDESC制限20によって、名前順でiphoneブランド=「アップル」やブランド=「苹果」グループからNUMとして(*)カウント、名前を選択しAppleTopSale20に挿入します。 //各年龄段手机销售情况表 テーブルagesale(作成 agetitle int型、 モデル列、 カウントINT) '\ tの'によって終了行形式区切られたフィールド 'の\ n'によって終了ライン、 //插入数据 agesaleに挿入します com_user.agetitle、iphone1.modelを選択し、(*)カウントアクションからはaction.commodityid = iphone1.idがagetitleでaction.userid = com_user.commodityidグループにcom_userに参加する上でiphone1に参加し、 //ユーザー情報テーブル、テーブル内の一致シンボルをセグメントテーブルの場所、それが推奨されuserinfo1テーブルの領域は 、テーブルuserinfo1を作成します( ID文字列、 名前の文字列、 配列を配置<文字列>、 セックスのString、 誕生日文字列) 「で終わる形式区切られたフィールドを行" 'で終わるコレクションアイテムの ' \ N- 'で終わる行; // sales表1 、表placesale(作成 addrは文字列、 モデル文字列、 ; COUNT int型) // sales表2を 表placesale1(作成 addrは文字列、 モデル文字列、 COUNT INTを); //ユーザータグを設定する //性別タグテーブル テーブルprofile_tag_user_gender(作成 ユーザーID文字列、 タグID文字列、 //ユーザーの評価ラベルテーブル 文字列タグ変数、 TagType文字列); //ユーザーの年齢ラベルテーブル 表のprofile_tag_user_age_region(作成し たユーザーIDの文字列、 タグID文字列、 タグ名、文字列、 tagetype列); //テーブルのデータは、ユーザーの年齢に挿入され profile_tag_user_age_region INTO INSERT > SELECT commodityid、 > CONCAT(「A111U00100 "キャスト(文字列としてagetitle))、AgeRange、 >"ユーザーの年齢" com_userから>; 挿入INTO profile_tag_user_grade 、SELECT commodityid 表の作成(profile_tag_user_grade >文字列のユーザーID、 >タグID文字列、 >タグ変数文字列、 > TagType文字列); //ユーザレベルメーターの挿入 、テーブルperson_user_tag_actionを作成します( actioncount int型); //插入数据 person_user_tag_actionに挿入 を選択し、ユーザーID、連結( "B21U001_00"、行動)、 ケース際の行動=「0」である場合には、「クリック」 したときの動作=「1」、次に「追加カート」 行動=「2」し、「買う」 とき行動=「3」その後「懸念」 他「」エンド、 「ユーザーの行動」、 ユーザーID、行動によってアクション・グループからC AS COUNT(*); //カスタム重量:購入:5カートに入れる:4を、注意:3、ヒット:カスタム2の冷却率を1.68 重み付けテーブル@ テーブルact_weight_detail作成します( ユーザーIDの文字列を、 タグID文字列、 タグ名の文字列、 CNTはint、 tagtypeid int型は、 floatをactweight); //時間を計算し、データを挿入して使用されます SELECT月ザ・は、日、(11-キャスト(月AS int型))* 30、(int型AS 12は、キャスト(日)) 、(11キャストとして(月 C限界20によって行動順序からCとしてINT))* 30+(12キャスト(intとして日))。 //計算TFは、データ内に挿入されます 選択ユーザーID、TF1、ユーザーID制限20によってperson_user_tag_action順から(ユーザーIDによってパーティション)にわたる和(actioncount)として(ユーザIDによってパーティション、TAGID)にわたる和(actioncount)。 //计算IDF、在插入数据中会使用 セレクトTAGID、(TAGIDによって(パーティション)にわたる和(actioncount))/ 477008 person_user_tag_action限界20から。 //データ挿入 act_weight_detailへの挿入を 選択action.userid、person_user_tag_action.tagid、person_user_tag_action.tagname、person_user_tag_action.actioncount、キャスト(action.behavior intとして)、 ケース場合action.behavior = "0"、次に2 /(EXP((11キャスト(intとしてaction.month))* 30+(12キャストintとして(action.day))))*(和(actioncount)オーバー(person_user_tag_action.userid、TAGIDによってパーティション)(TAGIDによってパーティション))* person_user_tag_action.actioncount上(person_user_tag_action.useridによってパーティション))* 477008 /(和(actioncount)上/和(actioncount) action.behavior = "1 "次に、4 /(EXP(intとして(11-CAST(action.month))* 30+(12キャスト(intとしてaction.day))))person_user_tag_action.useridによって(パーティション上*(和(actioncount) TAGIDによって(パーティション))* person_user_tag_action.actioncountオーバーperson_user_tag_action.useridによって(パーティション))* 477008 /(合計(actioncount)を超えるTAGID)/ SUM(actioncount) 場合action.behavior = "2"次に、5 /(EXP((11キャスト(intとしてaction.month))* 30+(12キャストintとして(action.day))))*(和(actioncount)上(person_user_tag_action.userid、TAGIDによってパーティション)/ SUM(actioncount)(person_user_tag_action.useridによってパーティション))* 477008 /(和(actioncount)上(TAGIDによるパーティション)上)/ 477008 * person_user_tag_action.actioncount //生成宽表 場合action.behavior = "3"次に、3 /(EXP((11キャスト(intとしてaction.month))* 30+(12キャストintとして(action.day))))*(和(actioncount)上(パーティションperson_user_tag_action.useridによって、TAGID)/ SUM(actioncount)(TAGIDによるパーティション)を超える(person_user_tag_action.useridによってパーティション))* 477008 /(合計(actioncount))/ 477008 * person_user_tag_action.actioncount以上の 他に0終了 person_user_tag_actionから参加person_user_tag_action.userid = action.userid上のアクション。 テーブルprofile_user_tb(作成 >ユーザーID文字列、 > tagid1文字列、 > tagname1文字列、 > tagtype1文字列、 > tagid2文字列、 > tagname2文字列、 > tagtype2文字列、 > tagid3文字列、 > tagname3文字列を、 > Tagtype3文字列 > tagid4文字列、 > tagname4文字列、 > INT ActionCount、 >フロート、actionweight > tagtype4文字列); //データが挿入 profile_user_tbに挿入 profile_tag_user_gender.userid、profile_tag_user_gender.tagid、profile_tag_user_gender.tagname、profile_tag_user_gender.tagtype、profile_tag_user_age_region.tagid、profile_tag_user_age_region.tagname、profile_tag_user_age_region.tagetype、profile_tag_user_grade.tagid、profile_tag_user_grade.tagname、profile_tag_user_grade.tagtype、act_weight_detail.tagid、act_weight_detail.tagname、act_weight_detailを選択profile_tag_user_genderから.CNT、act_weight_detail.actweightは、 "用户行为" profile_tag_user_gender.userid = profile_tag_user_grade.userid profile_tag_user_gender.userid = act_weight_detail.useridにact_weight_detailの参加にprofile_tag_user_gradeに参加profile_tag_user_gender.userid = profile_tag_user_age_region.useridにprofile_tag_user_age_regionに参加します。 //在pycharm中操作のpython //提取评论 F1 =オープン( "../ comment1.txt"、エンコーディング=」 F2 =オープン( "../共通" "R +"、エンコーディング= "UTF-8") 行= f1.readline( ) :線一方 f2.write(line.split( "\ tの")[1] + "\ n") 行= f1.readline() f1.close() f2.close() //计算评论的字数输出字数:12421790 コンテンツ= "" 試みる: F =オープン( "../共通"、エンコード= "UTF-8") f.readlines()の行のための: コンテンツ+ = line.strip()。 :印刷(、LEN(コンテンツ) "字数") ValueErrorを除い: 印刷( "AAAAAA") //建立分词统计表 テーブルcomment_word_count_tb(作成 単語列を、 「\ N-」で終わる行; //インポートワード統計 負荷データのローカルINPATH「/ホーム/ Hadoopの/ファイル/ wordcutsum」INTO comment_word_count_tb表; //テーブル分割時の販売、販売ディスプレイ一日は、 (テーブルdate_range_sail_countを作成します sailcount int型、 DataRange文字列); //範囲の販売価格表は、 表のprice_range_sail_countを作成します( pricerange文字列、 sailcount int型); //入力データへの最初のリストの価格帯の中間テーブルを作成するための テーブルMID1(作成 pricerange列); //テーブルの中間データに INSERT MID1 INTO SELECT ケースとき価格<= 1000、その後「千元。 「 価格<= 2000その後、」1000年から2000年の要素「 価格<= 3000その後、」2000-3000要素「 価格<= 5000その後、」3000〜5000の要素「 価格<= 10000その後」5000〜10000元 " 価格> = 10000その後、 "10000以上の" 他の0終了 iphone1から; //書き込みデータの販売価格範囲テーブルに INSERT INTO price_range_sail_count SELECT pricerange、COUNT(*)グループMID1からpricerangeすることにより、