oracle中join另一个表后会查询不出一些数据_面试必备 | 8个Hive数据仓工具面试题锦集!...
是新朋友嗎?記得先點藍字關注我哦~
今日課程菜單
Java全棧開發 |?Web前端+H5
大數據開發 | 數據分析
?人工智能+Python | 人工智能+物聯網
進入數據時代,大數據技術成為互聯網發展的核心要素之一。與此同時大數據開發工程師的薪資也成為行業內高薪的代表。想從事大數據開發需要掌握多種核心技術:Hadoop、Hive、Storm、Spark、Scala等等。而且這些技術知識點已經成為大數據工程師進入職場時面試中必備的考點。這里主要和大家分享一下數據倉庫工具hive相關的面試題!
Hive 的 join 有幾種方式,怎么實現 join 的?
答:有3 種 join 方式。
? 1. 在 reduce 端進行 join,最常用的 join 方式
Map 端的主要工作:為來自不同表(文件)的 key/value 對打標簽以區別不同來源的記錄。然后用連接字段作為 key,其余部分和新加的標志作為 value,最后進行輸出。
reduce 端的主要工作:在 reduce 端以連接字段作為 key 的分組已經完成,我們只需要在每一個分組當中將那些來源于不同文件的記錄 (在 map 階段已經打標志)分開,最后進行笛卡爾。
? 2. 在 map 端進行 join,使用場景:一張表十分小、一張表很大
在提交作業的時候先將小表文件放到該作業的 DistributedCache 中,然后從 DistributeCache 中取出該小表進行 join key / value 解釋分割放到內存中(可以放大 Hash Map 等等容器中)。然后掃描大表,看大表中的每條記錄的 join key /value 值是否能夠在內存中找到相同 join key 的記錄,如果有則直接輸出結果。
? 3. SemiJoin,semijoin 就是左邊連接是 reducejoin 的一種變種,在 map 端過濾掉一些數據,在網絡傳輸過程中,只傳輸參與連接的數據,減少了 shuffle的網絡傳輸量,其他和 reduce的思想是一樣的。
實現:將小表中參與 join 的 key 單獨抽取出來通過 DistributeCache 分發到相關節點,在 map 階段掃描連接表,將 join key 不在內存 hashset 的記錄過濾掉,讓參與 join 的記錄通過 shuffle 傳輸到 reduce 端進行 join,其他和 reduce join 一樣。
Hive 內部表和外部表的區別?
? 內部表:建表時會在 hdfs 創建一個表的存儲目錄,增加分區的時候,會將數據復制到此location下,刪除數據的時候,將表的數據和元數據一起刪除。
??外部表:一般會建立分區,增加分區的時候不會將數據移到此表的 location下,刪除數據的時候,只刪除了表的元數據信息,表的數據不會刪除。
Hive 是如何實現分區的?
建表語句:
create table tablename (id) partitioned by (dt string)
增加分區:
alter table tablenname add partition (dt = ‘2016-03-06’)
刪除分區:
alter table tablename drop partition (dt = ‘2016-03-06’)
Hive 有哪些方式保存元數據,各有哪些優缺點
??存儲于 derby數據庫,此方法只能開啟一個hive客戶端,不推薦使用
??存儲于mysql數據庫中,可以多客戶端連接,推薦使用
hive 如何優化?
? join 優化,盡量將小表放在 join 的左邊,如果一個表很小可以采用 mapjoin。
??排序優化,order by 一個 reduce 效率低,distirbute by +sort by 也可以實現全局排序。
??使用分區,查詢時可減少數據的檢索,從而節省時間。
hive 中的壓縮格式 RCFile、 TextFile、 SequenceFile 各有什么區別?
? TextFile:默認格式,數據不做壓縮,磁盤開銷大,數據解析開銷大。
? SequenceFile:Hadoop API提供的一種二進制文件支持,使用方便,可分割,可壓縮,支持三種壓縮,NONE,RECORD,BLOCK。
? RCFILE:是一種行列存儲相結合的方式。首先,將數據按行分塊,保證同一個 record 在同一個塊上,避免讀一個記錄讀取多個block。其次,塊數據列式存儲,有利于數據壓縮和快速的列存取。數據加載的時候性能消耗大,但具有較好的壓縮比和查詢響應。
hive 相對于 Oracle 來說有哪些優點?
??存儲,hive 存儲在 hdfs 上,oracle 存儲在本地文件系統。
??擴展性,hive 可以擴展到數千節點,oracle 理論上只可擴展到 100 臺左右。
??單表存儲,數據量大 hive 可以分區分桶,oracle 數據量大只能分表。
Hive 的 sort by 和 order by 的區別!
? order by 會對輸入數據做全局排序,只有一個 reduce,數據量較大時,很慢。
? sort by 不是全局排序,只能保證每個 reduce 有序,不能保證全局有序,需設置mapred.reduce.tasks>1。
面試找工作不是一朝一夕就可以完成的事情,而且失敗的面試經歷未必是壞事,積累面試經驗也是一種進步,希望這里可以幫到你。
職坐標大數據開發課程從入門到實戰項目,讓你快速掌握企業所需前沿技術,助你在6個月挑戰高薪入職。
我是小職,記得找我
免費獲取最新技術干貨教程資源
小職精選
7個數據分析面試問題點
面試常考,64個數據分析常用術語 !
常見的數據分析面試題總結(一)
數據分析——SQL面試知識點總結
看了它,再也不怕數據分析面試了
程序員面試時這樣介紹自己的項目經驗,成功率能達到98.99%
版權聲明:“職坐標在線” 公眾號所發布內容,凡未注明"原創“等字樣的均來源于網絡,如涉及版權問題,請聯系本公眾號小編進行刪除,謝謝!文中部分圖片來源于網絡。
更多精彩內容“閱讀原文”
轉發你最帥,點贊漲薪快
總結
以上是生活随笔為你收集整理的oracle中join另一个表后会查询不出一些数据_面试必备 | 8个Hive数据仓工具面试题锦集!...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 数据包处理流程(linux
- 下一篇: js动态给按钮赋id_如何给SHOPIF