專案練習(一)APP熱點標籤分析

2021-09-02 23:35:57 字數 3476 閱讀 6634

1、專案背景

2、需求分析

(2)儲存到hive做進一步分析:

通過大資料開發之hive資料倉儲命令列形式,完成資料載入、udf/udaf/udtf函式、統計分析的任務,並演示專案效果即可。

3、主要思路

(1)建立對應的資料表1

(2)載入資料到表1

(3)建立乙個表2儲存標籤和標籤量

(4)對資料表1進行處理,「產生資料儲存到表2」

4、開發過程

技術組成:hive sql+udf/udaf/udtf

開發規範:

4.0 prepare

(1)相關目錄建立

config:存放相關配置變數

create:存放表結構資料

deal:具體的sql指令碼

udf:udf/udaf/udtf相關的jar包

4.1按步驟執行

(1) 輸入、輸出表設計到位。

(2) 將資料載入到輸入表中。

(3) hivesql+udf/udaf/udtf實現熱詞統計與寫入庫表。

4.2將所有流程串聯到a_main.sh指令碼中

待開發工作基本完成,需將專案的主體流程,

串聯到a_main.sh當中,作為整個專案的主入口。

4.3詳細講解

(1)config:

#!

/bin/bash

hive=

'/usr/bin/hive'

(2)create:

表1

#!

/usr/bin/env bash

source .

./config/set_env.sh

$hive

-e "

use maanran;

(firstlevel string,

secondlevel string,

thirdlevel string,

tags string

)partitioned by

(dt string comment 'update date'

)row format delimited

fields terminated by '\t'

lines terminated by '\n'

"

1、source語句相當於引入set_env.sh檔案,即引入hive變數。

2、定義多個變數,方便後期修改方便。

3、hive -e 語句:保證可以在shell中執行hiveql。

4、hive -e後可以跟"「和』』 ,但是』'不會識別內容中的hive變數,會認為是shell變數導致出錯,所有建議使用」"

5、如何決定建立外表/內錶?

資料倉儲可以分為三個模組(源資料、倉庫、集市)

源資料:一般是load方式批量載入進來的資料,含有很多的髒資料,大多都是為外表,方便倉庫多種使用

倉庫:當建立好可靠的表結構時,將源資料的資料insert進來,可以建立內錶。

表2

#!

/usr/bin/env bash

source .

./config/set_env.sh

$hive

-e "

use maanran;

create table hot_tag_rank

(tag string,

freq int

)partitioned by

(dt string comment 'update date'

)row format delimited

fields terminated by '\t'

lines terminated by '\n'

"

(3)deal:

載入資料到表1

#!

/usr/bin/env bash

source .

./config/set_env.sh

input_tb_name=

updatedt=$1

data_source_path=

$hive

-e "

use maanran;

load data local inpath '$data_source_path' overwrite into table $input_tb_name

partition

(dt=

'$updatedt')"

echo 'load data to input_table_complete!'

1、sh load_input.sh aaa bbb ccc

aaa代表傳入的$1的引數 ,bbb代表傳入的$2的引數,所有代表引數$0。

載入資料到表2

#!

/bin/bash

source .

./config/set_env.sh

updatedt=$1

db_name=maanran

output_table=hot_tag_rank

$hive

-e "

use $db_name;

set hive.execution.engine=tez;

insert overwrite table $output_table partition

(dt=

'$updatedt'

)select tag,

count(1

)lateral view explode

(split

(tags,

',')

) tag_table as tag where tag!=

'-' and tag!=

'' and dt=

'$updatedt'

group by tag order by freq desc;

"echo 'load data to output_table_complete!'

1、set hive.execution.engine=tez;設定執行引擎是tez,這個引擎比mr快一些。

以上測試完成可以寫main.sh來依次執行這些sh檔案,建立表的檔案可以不加在main.sh中,防止以後再使用時出現建表名衝突的問題

總main:

#!

/bin/bash

currentdt=

`date +%y%m%d`

echo "currentdt="$currentdt

sh load_input.sh $currentdt

sh load_output.sh $currentdt

echo "all done!"

1、`反引號代表先執行``中的內容,在將返回值給currentdt

(4)udf:

本次專案暫時不涉及udf,但是作為開發規範還是要寫好的!!

專案 APP熱點標籤分析

三 主要思路及難點 主要思路 通過hive命令將資料加到資料倉儲中 使用hql udf udaf udtf完成統計分析 將統計分析結果插入到hive中自建的新錶中 主要難點 資料倉儲的目錄結構和開發規範 hive及hivesql常用命令 系統函式 udf udaf udtf靈活使用 hive常見問題...

團隊專案作業派app分析

一 n need 需求 分許可權登入 老師端和學生端 陳琪 老師端設有發布作業和作業提醒功能以及作業批改,學生端設有訊息通知欄和作業欄 高帥 資料庫 資料庫建立作業發布表 老師端輸入 作業提交表附有乙個批改屬性可供老師填寫 學生端 訊息表有時間屬性 老師端 薛普 ui介面 我們會根據資料和使用者需求...

vue2 0 練習專案 外賣APP 完

經過今天的努力,終於把這個專案做完了 功能不是很多,就三個頁面這樣子吧!在開發過程中也有遇到些小問題的。比如我在弄那個star評選星星元件時就遇到乙個問題了,在created事件中作資料請求是非同步的,而star控制中的created事件也只會執行一次,導致頁面在載入出來時分數值始終是0的。後面思考...