【hive建表】
create table characterlogin(
gameid string,
childid string,
ip string,
serverid string,
accountid string,
characterid string,
logtype string,
logtime int,
platformchannelid string,
islogin int,
onlinetime int,
level int,
viplevel int
)partitioned by(year string,month string,day string) row format delimited fields terminated by '|';
將資料根據時間分割槽匯入hive,分割槽格式為,年/月/日(將檔案用xshell上傳到linux過程略)
shell指令碼如下
path="/home/li/desktop/characterlogin"
files=$(ls $path)
for filename in $files
do filename=$
var1=`echo "$filename"|awk -f '-' ''`
var2=`echo "$filename"|awk -f '-' ''`
var3=`echo "$filename"|awk -f '-' ''`
$hive_home/bin/hive -e "load data local inpath '$path/$filename.txt' into table
bigtrouble.characterlogin partition (year='$var1',month='$var2',day='$var3');"
done
【查詢思路】
新建hive資料庫為統計庫,新建一張表為統計結果表,表中兩個欄位date,count
查詢已分割槽的角色登入登出表,根據使用者id去重,統計單張表的id總數,取單錶的日期和id總數插入統計表
shell指令碼如下
path="/home/li/desktop/characterlogin"
files=$(ls $path)
for filename in $files
do filename=$
var1=`echo "$filename"|awk -f '-' ''`
var2=`echo "$filename"|awk -f '-' ''`
var3=`echo "$filename"|awk -f '-' ''`
count=`$hive_home/bin/hive -e "select count(distinct accountid) from bigtrouble.characterlogin
where year='$var1' and month='$var2' and day='$var3';"`
#不列印查詢欄位名
$hive_home/bin/hive -e "set hive.cli.print.header=false;"
$hive_home/bin/hive -e "insert into table day01.count1 values('$var1/$var2/$var3','$count');"
done
【坑】
注意把hsql語句執行的結果賦值給shell變數時,那個符號不是單引號
Hive實現詞頻統計
hive中提供了類似於sql語言的查詢語言 hiveql,可以通過 hiveql語句快速實現簡單的 mapreduce統計,hive 自身可以將 hiveql 語句快速轉換成 mapreduce 任務進行執行,而不必開發專門的 mapreduce 應用程式,因而十分適合資料倉儲的統計分析。通過乙個簡...
使用hive做單詞統計
1 首先建立乙個檔案單詞的檔案,例如a.txt kk,123,weiwei,123 hlooe,hadoop,hello,ok h,kk,123,weiwei,ok ok,h 2 將檔案上傳到hdfs中 hdfs dfs copyfromlocal a.txt upload wangwei a.tx...
Hive實現多表級聯統計
有如下訪客訪問次數統計表 t access times 訪客月份 訪問次數 a2015 015a 2015 0115b 2015 015a 2015 018b 2015 0125a 2015 015a 2015 024a 2015 026b 2015 0210b 2015 025 需要輸出報表 t ...