1. 程式人生 > >Hive經典面試題——級聯求和(訪客訪問統計報表)

Hive經典面試題——級聯求和(訪客訪問統計報表)

在大資料面試中,Hive知識的考察大部分會問級聯求和,業務場景雖然有很多種,比如說,年收入,月收入統計;訪客訪問次數年統計,月統計。等等。但是基本根源知識是級聯求和,本文就以訪客訪問統計為例。

1、基本需求

根據訪客的每日訪問資訊,進行累計訪問:

  • 輸入資料:

有如下訪客訪問次數統計表 t_access_times

為了減輕計算複雜度,去掉了天的資訊只留下了年月。
這裡寫圖片描述

  • 輸出資料:

需要輸出報表:t_access_times_accumulate
這裡寫圖片描述

2、實現步驟

2.1 原始資料

vi /home/chunsoft/t_access_times.dat

A,2015
-01,5 A,2015-01,15 B,2015-01,5 A,2015-01,8 B,2015-01,25 A,2015-01,5 A,2015-02,4 A,2015-02,6 B,2015-02,10 B,2015-02,5

2.2 建立表

jdbc:hive2://172.16.208.128:10000>create table t_access_times(username string,month string,access_time int)
row format delimited fields terminated by ',';

2.3 將資料載入到表中

jdbc:hive2://172.16.208.128:10000>
load
data local inpath '/home/chunsoft/t_access_times.dat' into table t_access_times;

2.4 計算單個使用者的月訪問次數

jdbc:hive2://172.16.208.128:10000>
select username,month,sum(access_time) as access_time from t_access_times group by username,month;

+-----------+----------+---------+--+
| username  |  month   | access_time  |
+-----------+----------+---------+--+
| A | 2015-01 | 33 | | A | 2015-02 | 10 | | B | 2015-01 | 30 | | B | 2015-02 | 15 | +-----------+----------+---------+--+

2.4 上面的表自己跟自己進行inner join方便求總訪問

select A.*,B.* from
(select username,month,sum(access_time) as access_time from t_access_times group by username,month) A
inner join
(select username,month,sum(access_time) as access_time from t_access_times group by username,month) B
on
A.username=B.username

+-------------+----------+-----------+-------------+----------+-----------+--+
| a.username  | a.month  | a.access_time  | b.username  | b.month  | b.access_time  |
+-------------+----------+-----------+-------------+----------+-----------+--+
| A           | 2015-01  | 33        | A           | 2015-01  | 33        |
| A           | 2015-01  | 33        | A           | 2015-02  | 10        |
| A           | 2015-02  | 10        | A           | 2015-01  | 33        |
| A           | 2015-02  | 10        | A           | 2015-02  | 10        |
| B           | 2015-01  | 30        | B           | 2015-01  | 30        |
| B           | 2015-01  | 30        | B           | 2015-02  | 15        |
| B           | 2015-02  | 15        | B           | 2015-01  | 30        |
| B           | 2015-02  | 15        | B           | 2015-02  | 15        |
+-------------+----------+-----------+-------------+----------+-----------+--+

2.5 根據當前月份的大小來判斷累計求和並排序

select A.username,A.month,max(A.access_time) access_time,sum(B.access_time) accumulate
from
  (select username,month,sum(access_time) as access_time from t_access_times group by username,month) A
  inner join
  (select username,month,sum(access_time) as access_time from t_access_times group by username,month) B
  on
  A.username=B.username
where B.month<=A.month
group by A.username,A.month
order by A.username,A.month

+-------------+----------+---------+-------------+--+
| a.username  | a.month  | access_time  | accumulate  |
+-------------+----------+---------+-------------+--+
| A           | 2015-01  | 33      | 33          |
| A           | 2015-02  | 10      | 43          |
| B           | 2015-01  | 30      | 30          |
| B           | 2015-02  | 15      | 45          |

這裡面的max(A.access_time) 起到一個聚合作用,保留一條結果。

相關推薦

Hive經典試題——求和訪問統計報表

在大資料面試中,Hive知識的考察大部分會問級聯求和,業務場景雖然有很多種,比如說,年收入,月收入統計;訪客訪問次數年統計,月統計。等等。但是基本根源知識是級聯求和,本文就以訪客訪問統計為例。 1、基本需求 根據訪客的每日訪問資訊,進行累計訪問: 輸入資

運維經典試題之網路篇

1、寫出12.23.34.0/29的掩碼 11111111.11111111.11111111.11111000 255.255.255.248 2、簡述衝突域與廣播域的區別 衝突域:基於osi的第一層物理層。 一個站點向另一個站

leetcode 經典試題之連結串列 2. 兩數相加

兩數相加 給出兩個 非空 的連結串列用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 單位 數字。 如果,我們將這兩個數起來相加起來,則會返回出一個新的連結串列來表示它們的和。 您可以假設除了數字 0 之外,這兩

leetcode 經典試題之連結串列19. 刪除連結串列的倒數第N個節點

刪除連結串列的倒數第N個節點 給定一個連結串列,刪除連結串列的倒數第 n 個節點,並且返回連結串列的頭結點。 示例: 給定一個連結串列: 1->2->3->4->5, 和 n = 2. 當刪除了倒數第二個節點後,連結串列變為 1->

經典試題golang實現方式

以下所有題目的關鍵資訊都會用【】括起來,我們不對題目進行分析,只給出題目的解決方案;如有疑問請不吝賜教。 題目: 請實現一個演算法,確定一個字串的所有字元【是否全都不同】。這裡我們要求【不允許使用額

自己實戰整理試題--Http網路相關帶答案,不斷更新

*1.描述下網頁一個 Http 請求,到後端的整個請求過程: https://blog.csdn.net/w372426096/article/details/82012229 瀏覽器輸入https:www.koolearn.com這個URL,瀏覽器只知道名字是www.koolearn.

自己實戰整理試題--多執行緒帶答案,不斷更新

一個執行緒兩次呼叫 start() 方法會出現什麼情況?執行緒的生命週期,狀態是如何轉移的? Java 的執行緒是不允許啟動兩次的,第二次呼叫必然會丟擲 IllegalThreadStateException,這是一種執行時異常,多次呼叫 start 被認為是程式設計錯誤。 關於執行緒生

Linux 運維工程師經典試題合集不斷更新中 ...

type ESS 9.png aux 比較 服務器 var 命令 如何 寫在前面的話 做運維以來,關註了很多關於互聯網技術,培訓等亂七八糟的公眾號,時不時的就會推一些各種公司的面試題過來。 大致看了一下,發現自己很多知識要麽遺忘了,要麽很難說出個所

二叉樹的經典試題分析三十六

        我們之前學習了二叉樹相關的概念,那麼我們今天來分析下二叉樹中的一些經典面試題。         1、單度結點的刪除  

遞迴求解走臺階問題,一次可以走一步、兩步、三步、...、n步經典試題——增強版走臺階

1、問題描述       現在有一個臺階,一共有n階,你一次性可以走1步、2步、3步、......、n步。問:一共有多少種走法。 2、求解思路       第一步走1階:那麼這種情況下的走法數量和剩下n-1階的走法數量有關;

詳解兩個佇列實現一個棧python實現——經典試題

1、任務詳解        使用兩個佇列資料結構實現一個棧,要求實現棧的出棧和進棧操作。 2、解題思路        push()操作:        為了保證先進

詳解兩個棧實現一個佇列python實現——經典試題

1、題目說明       使用兩個棧結構,實現一個佇列功能,實現佇列的新增元素和彈出元素。       注意:       佇列特點是隻能在佇列尾部新增元素,在佇列頭部刪除元素,先進先出(FIFO/

java經典試題總結

Java經典面試題總結繼續更新,有需要的小夥伴可以路過不要錯過了!看上一篇面試題總結的反響還是很不錯的,就繼續更新了,也非常感謝各位小夥伴的持續關注…… 這次更偏基礎一些! 1、String 和StringBuffer 的區別? 答:JAVA 平臺提供了兩個類:String 和StringBuffer,

java經典試題總結

上一次更新的java面試題,很多小夥伴反應很簡單,其實上一期更新的就是更偏基礎的面試題,但這並不意味著,面試就這麼簡單,在java的學習中,有從Java基礎、框架、設計模式等等都是重點學習的點。在本文的面試題分享中,我們循序漸進,儘量挑一些重點的內容來分享! 1、當一個物件被當作引數傳遞到一個方法後,此方法

Java經典試題總結

本期的java面試題是偏向資料庫方面的,對相關技術知識匱乏的,或者對這方面不大自信的同學,面試之前可以參考一下這套題,這只是節選,試運營一下,如果不能滿足你們的需求,可以直接評論留言! 1、檢視的優缺點答:優點: 1)對資料庫的訪問,因為檢視可以有選擇性的選取資料庫裡的一部分。 2 )使用者通過簡單的查詢可

java經典試題:單鏈表反轉問題詳解含遞迴法

java經典面試題:單鏈表反轉問題,有兩種方法,一種為迴圈遍歷法,一種遞迴法。 1、迴圈遍歷法   首先設定三個節點,把當前節點的下一節點指向它前面的節點,此時你會發現指標鏈會斷,所以要先把它後面一個節點用nextNode儲存下來,之後把節點向後移動遍歷即可。    程式碼如下: //

HTTP協議【詳解】——經典試題轉載

http請求由三部分組成,分別是:請求行、訊息報頭、請求正文 HTTP(超文字傳輸協議)是一個基於請求與響應模式的、無狀態的、應用層的協議,常基於TCP的連線方式,HTTP1.1版本中給出一種持續連線的機制,絕大多數的Web開發,都是構建在HTTP協議之上的Web應用。

經典試題1

將一個字元陣列的內容為:“student a am i”改為“i am a student” 要求: 1. 不能使用庫函式; 2.只能開闢有限個空間(空間個數和字串的長度無關)。 演算法思路:先將字元陣列"student a am i"逆置變為"i ma a

js經典試題

題目: function Foo(){ getName = function (){ alert(1); } return this; } Foo.getName = function(){ alert(2); }

軟體測試經典試題面試必看

引用與指標有什麼區別? 1) 引用必須被初始化,指標不必。 2) 引用初始化以後不能被改變,指標可以改變所指的物件。 3) 不存在指向空值的引用,但是存在指向空值的指標。 Internet.採用哪種網路協議?該協議的主要層次結構?Internet.實體地址和IP.地址轉