hadoop和hive的資料處理淚流成
hive cli常用操作
需求場景:統計每日使用者登入總數
每分鐘的原始日誌內容如下:
假如只有兩個欄位uid和ip,其中uid是使用者的uid
是使用者的uid,是使用者的唯一標識,ip是使用者的
登入ip,每日的記錄行數是10億行,要統計出一天使用者登入的總數
處理流程
1、建表
那麼我們首先要在hive裡面建立一張表,建表語句如下:
表名-login
fields 列分分隔符號
create table login(
uid string,
ip string
)partitioned by (dt string)
row format delimited
fields terminated by ','
stored as textfile;
其實表名是login,字段之間以,隔開,儲存是text,其次
還以dt這個字段作為分割槽
建立成功之後,會看到hdfs上建立了
/user/hive/warehouse/login這個目錄
2、入庫
格式完畢,就可以把資料入庫到hive了。假設幾天
執行的命令
load data local inpath '/hadoop/hive0.9/testhive/test*' overwrite into
table login partition (dt='20150207')
執行成功
3、分析
在hive執行一下語句
select count(distinct uid) from login
where dt='20150207';
使用dt這個分割槽條件查詢,就可以避免hive去查詢其他分割槽的檔案
這樣減少io操作,這個是hive分割槽很重要的特性,也是已
天為單位,作為login表分割槽的重要意義。
執行完畢後,就可以在命令裡出現結果,一般通過管道執行hive shell命令
,讀取管道的內容,把結果入庫到mysql裡就完成了分析了、
分割槽不能做的太多。
一般是以天做為分割槽。
第十三天 練兵
問 昨天您講的很驚心動魄。這樣快節奏的配合確實非常完美,很羨慕。但要形成這樣的結果必須我們之間配合需要非常流暢,我們有什麼方法可以促成這樣的氛圍?答 練兵。如果一開始就進入業務系統功能的設計開發,業務組長對業務還沒有很深的吃透,這樣倉促上陣功能不但連上一版不如,而且為了補課,軟體不斷修改,什麼都亂了...
2020 7 18第十三天
1.學習了static關鍵字 靜態變數,靜態方法以及靜態模組 1 public class vardemo 9 1 public class staticblockdemo 5public staticblockdemo 8public static void main string args 12...
android基礎 第十三天
可航訓練營 為幫助大家更好的 系統性的學習 android 一 progressbar頁面進度提示 密碼 9ewc 二 fragment優化選項卡切換 密碼 gvsb 三 fragment和activity進行通訊 密碼 45u2 四 xlistview上拉重新整理 密碼 na6r 五 提示對話方塊...