天天看點

hive 資料源,yarn 叢集測試, SQL 分别取 topN5

開發者學堂課程【大資料實時計算架構Spark快速入門:hive 資料源, yarn 叢集測試,SQL 分别取 topN5 】學習筆記,與課程緊密聯系,讓使用者快速學習知識。

課程位址:

https://developer.aliyun.com/learning/course/100/detail/1718

hive資料源,yarn 叢集測試,SQL分别取topN5

内容簡介:

一、具體内容

二、按照排序

三、開窗函數 rownumber

按照 category 這個内别來進行分組分組之後在 order by 按照年收入進行排序,進行倒叙的按照排完的資料再進行分窗打一個行号,既 row number 行号,出來的行号是新的一列稱之為 rank ,這樣在外面去取資料的時候就直接可以把打完行号的資料起個别名,叫 tmp sale s,取出來 product 産品這個字段,取出來品類category 這個字段取出來 revenue 年收入這個字段取出來 rank 這個字段,起個别名 tmp sales 然後最後真正要的并不是要 rank 排名隻是根據它來弄一個條件,這個 where rank 小于3這樣就把每一個分組裡面排名前三的找出來了因為行号是從1開始,是以是要從小于3開始,是以<等于3取前三個,這樣就做到了分組去 top3,應用完 sql 語句後,結果會生成 datefree ,把結果存到 hive 裡面去。這個東西要測,就是打入一個炸包放到叢集裡面去執行,第一列可以認為是産品的型号,第二列是産品的類别,比如 cell phone和tablelet 按照分組,就是像手機或者平闆。

按照第三列 revenue load date 的時候第一列就是産品,以此類推,分成手機和平闆兩個類别,兩個類别裡面再倒叙,然後再傳回行号,就是一個 rank ,最後再根據行号再來過濾, cell phone 裡面 6000 和 5000 排在前,跑完程式看是否是那個結果。

這個函數隻對 hive 這個功能有效,如果是讀一個 sql 的資料,那就不行,通常是用一個炸包去測試,開始讀 hive 的時候本質上這個資料在 IDFI 上面,那在一開始的時候,剛開始讀的時候那個 ID 取決于有多少 log,如果在 sparksql 裡面有那個操作,那就會變成預設的200,也可以直接改了在 confset 一下就可以直接改,可以設定 200 的大小。