查看某个分区之前所有的数据_腾讯大数据面试真题汇总
騰訊面試題
學長1
1)筆試部分
(1)有一表名t_sh_mtt_netdisk_log,從表名可以看出該表是什么業務的,是什么周期粒度的表。
(2)怎么查看表結構,表創建語句?怎么查看表有哪些分區?怎么查看分區對應hdfs路徑?怎么計算某個分區的數據量大小?怎么計算某個分區的文件總數?
(3)有一hive sql,怎么計算這個sql會產生多少個map數?
(4)怎么查看hive有什么自帶函數?怎么查看函數的詳細信息?
(5)Hive支持哪些基本數據類型?
(6)請指出下面兩個語句讀取分區ds數據的不同
Select * from t where ds=20150101 and province='gd' or province='ex'
Select x fromt where ds 20150101 and(province='gd' or province='ex')
(7)將字符串"keyl=valuel&key2=value2...keyn=valuen"進行分割放到一個字段里面,可以查出任意一個keyx對應的valuex值。請寫出查詢語句,并計算總共有多少個key值。
(8)用一個字符串比如"alblc"來測試某個函數比如split(用|分隔符將字符串進行分割)的語句
(9)a表和b表內連接,a表為小表,只有2000行記錄
select a.*from a Join b on a.key=b.key
可以進行怎樣的優化
(10)a表left join b表,b表為小衣,可以進行怎樣優化?
scleet a.*from a left join Join b ona.key=b.key
如果a為小表,可以怎樣優化?
(11)請指出下面sql語句的區別
select a.* from a left Join b on a.key = b.key and a.ds=xxx and b.ds=xxx
sclect a.* from a lef Join b on a.key = b.key and b.ds=xxx
select a.* from a lef Join b on a.key = b.key and b.ds=xxx where a.ds=xxx
Select a.* from a left Join b on a.key = b.key where a.ds=xxx and b.ds=xxx
(12)多表連按的寫法:a,.b,c三個表內連接,連接字段都是key,怎樣寫連接語句?
(13)兩大表連接,發生了數據傾斜,有幾個reduce無法完成,怎么查找發生數據傾斜的原因?應該怎樣優化?
語句:select t1.*,nvl(t2.x,1) from t1 left join t2 on t1.guid=t2.guid
(14)兩大表連接,發生了數據傾斜。有一個reduce無法完成,檢直發現t1中guid="的記錄有很多,其他guid都不重復,這條語句該怎樣優化?
語句:select t1.*,nvl(t2.x,1) from t1 left join t2 on t1.guid = t2.guid
(15)如何用hive q!實現sqL中的exist/in 子句
mysql語句如下:
SEL ECT a* FROM a where a.key in(select dstinct key from b where key like ‘filter%’)
(16)sort by、distribute by、cluster by 和 order by 區別
注:可參考數據工廠的“幫助中心》集群hive》hive使用優化》hive使用注意事項”
學長2
1)筆試題
用HiveSQL實現
(1)全量用戶登員日志表t_login_all,字段信息ftime(登錄日期)、openid(登錄帳號)新增用戶登錄日志表t_login_new,字段信息ftime(登錄日期)、openid(登錄帳號)求每天新增用戶次日、7天、30天留存率。
(說明:7天留存是指當天有登錄且第7天還登錄的用戶)
(2)消息流水表t_chat all,字段信息:
Ftime(日期)、send_user id(發消息用戶id)、receive.user id(接收消息用戶id)、chat id(消息id)、send.time(發消息時間)
用戶登錄流水日志表t_login_all,字段信息:
Ftime(日期)、user_id(用戶id)、login_id(登錄id)、login_loc(登錄區服)、login_time(登錄時間)
求:每天有收發消息用戶最近登錄時間、登錄區服,輸出ftime,user_id,login_loc,login_time
用Spark core實現,寫Scala腳本
1、reduceByKey()、groupByKey()有什么區別?
2、DataFrame和RDD有什么區別?
3、使用累加器,對數組Array(1,2,3,4)每個元素實現累加操作,最后打印輸出求和結果。
4、現有文件file.txt,文件格式如下
Order_id,user_id,payment,productid
1、1768,50,155
2、1218,600,211
3、2239,788,242
4、3101,288,599
5、4899,25,230
6、2311,890,981
。。。。。。
求Top10個payment字段的值
學長3
1)技術部分
(1)我看你上面寫了你會Spark,那你用Spark寫一下剛剛那道題的代碼(第6題),不能用Spark SQL
(2)我看你上面有寫到熟悉Hive原理和優化,你說一下怎么優化
(3)優化有說到語句優化,然后又說回到pv和uv那個問題,假如說讓你優化你怎么優化(我代碼里面有count(distinct id) uv,)
(4)問了一些Kafka的,我只記得一點點,問我數據會不會重復消費,什么情況下會重復消費
(5)在Hive執行語句的時候如果很慢,什么原因造成
我有提到數據傾斜的問題,他又問怎么解決數據傾斜
2)項目部分
(1)讓你挑一個比較有亮點的項目詳細說
(2)你負責了什么,數倉中統計了哪些指標,
(3)剛剛聽你說項目里面有提到分層,如果我要你求每天商品的pv,uv,從ods層到dm層它的具體流向,各層都統計了什么(后來讓寫求pv,uv的sql語句)
3)場景部分
(1)有一個分區表,表名T,字段qq,age,按天分區,讓寫出創建表的語句
(2)剛剛的分區表,求20200221這個分區中,年齡第N大的qq號列表
(3)有一個表,兩個字段,分別是qqa和qqb,數據如下:
12,34
12,56
12,78
34,56
34,12
找出所有互相關注的qq對
4)手寫部分
(1)三個字段,timestamp,user_id,product_id,讓求pv最大的商品,寫了之后又叫用Scala代碼寫一遍,然后又問,假如說只讓你求pv數大于100的top3呢,代碼又怎么寫
學長4
1)技術部分
(1)你們數倉用什么建模方法,說出常見的建模方法?
(2)維度建模有什么好處? 為什么選擇這個?比如最后業務需求要增加一個維度,我們需要做什么工作?
(3)怎么判斷一個需求能不能實現,你們的判斷標準是什么?需求變更要做什么
(4)增加一個維度后發現查詢的速度變得非常慢,是什么原因導致的?
(5)你們ADS層的數據量每天的數據量有多大?ADS層在MySQL中的表是怎么創建的?有什么注意事項?索引怎么創建的?
(6)你知道Spark的寬窄依賴嗎? 有沒有把寬依賴轉化為窄依賴的例子?
(7)Spark參數調優做了些什么 ?
2)算法部分
(1)一個list [1,5,5,7,9] 去重,并計算時間空間復雜度
(2)單鏈表的反轉
文章來源:尚硅谷大數據培訓
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的查看某个分区之前所有的数据_腾讯大数据面试真题汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 水面反光如何拍摄_如何在雨中拍摄,这些技
- 下一篇: mysql 异步复制建立过程_mysql