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的。後面思考...