面試經驗分享-某電影廠

  • java會嗎?不會。。。。。
  • hdfs讀文件寫文件的流程
    數據寫入
    1-客戶端向NameNode發起請求
    2-NameNode審核權限和剩余空間,滿足條件即允許寫入,并告知客戶端寫入的DataNode地址
    3-客戶端向指定的DataNode發送數據包
    4-被寫入數據的DataNode同時完成數據副本的復制工作,將其接收到的數據分給其他DataNode
    5-DataNode1復制給2,2復制給3,4
    6-寫入完成后客戶端會通知NameNode,NameNode負責做好元數據記錄工作(edits和fsimage)
    關鍵點:
    1-NameNode不負責數據寫入,只負責元數據記錄和權限審批
    客2-戶端直接向一臺DataNode寫入數據,這個DataNode通常是離客戶端最近的一個
    3-數據塊副本的復制工作由DataNode自行完成,別的節點不參與
    數據讀取
    1-客戶端想NameNode申請讀取文件
    2-NameNode判斷客戶端權限等細節信息,允許其進行讀取,返回此文件的block列表(存儲節點位置)
    3-客戶端拿到block列表后到DataNode尋找并讀取即可
    關鍵點:
    1-數據不由NameNode直接提供
    2-NameNode提供的block列表,會基于網絡距離計算盡量給客戶端返回最近的哪一個
    3-因為一個塊通常由三個備份,所以可以去尋找最近的一個,通常是通過IP地址和路由表推斷其網絡距離。
  • map reduce 兩階段shuffle
    1、map結果寫入環形內存緩沖區,當內存不足以存儲所有數據時,將數據批量溢寫到磁盤。為了盡量減少IO消耗,所以在數據寫入磁盤之前會先寫入緩沖區,待緩沖區達到閾值后才批量將數據寫入磁盤
    2、partition分區。在數據寫入磁盤之前會先進行分區,一個分區對應一個reducer,期望數據在多個reducer之間達到均衡
    3、排序(sort)和合并(combine)。數據經過分區之后,先按照key進行排序,如果用戶指定了Combiner,再進行combine操作
    4、溢寫(spill)。經過排序和合并之后的數據會寫入磁盤文件,每次spill都會產生一個文件。一個分區上的文件也叫一個segment
    5、歸并(merge)。一個map最終會生成一個磁盤文件,由于多次spill會產生多個文件,所以需要將這些文件進行merge,最終形成一個有序的大文件。merge過程中有可能遇到相同key的數據,如果用戶設置了Combiner,會執行combine操作
    以上1-5是map階段的shuffle,以下是reduce階段的shuffle步驟
    6、拷貝(copy)。當某個map完成后,reduce不斷拉取map生成的文件到ruduce。和map階段一樣先將數據寫入環形內存緩沖區,當達到閾值時,將數據批量溢寫到磁盤
    7、排序(sort)和歸并(merge)。sort是伴隨copy動作時執行的,由于map的輸出是有序的,所以copy是進行sort消耗很低。當溢寫數據到磁盤之前,如果用戶設置了Combiner會先進行combine,然后將數據寫入磁盤文件。當接受完map數據會生成多個溢寫磁盤文件,將這些文件歸并merge,合并成一個有序的大文件

原文鏈接:https://blog.csdn.net/momo898821/article/details/104847599

  • hive內部表外部表區別
    在這里插入圖片描述
    在這里插入圖片描述

  • hive全量表,增量表,快照表,拉鏈表
    全量表:記錄每天的所有的最新狀態的數據,有無變化都要上報,每次往全量表里面寫數據都會覆蓋之前的數據
    缺點:不能記錄數據的歷史變化,只能截止到當前最新、全量的數據
    增量表:記錄每天的新增的數據和改變的數據
    快照表:按日分區,記錄截止數據日期的全量數據(每個分區都是記錄截止當前分區日期的全量數據)。
    優點:可以反映歷史的變化
    缺點:在數據量大的情況下,每個分區存儲的都是全量數據,數據冗余和浪費存儲空間
    拉鏈表:
    1、概念
    記錄一個事物從開始,一直到當前狀態的所有變化的信息。(極限存儲)
    優點:能夠解決快照表數據冗余問題,還能維護數據歷史狀態和最新狀態,記錄截止數據日期的全量數據
    2、拉鏈表的使用場景
    緩慢變化維SCD(表中的部分字段會被update更新操作,如用戶聯系方式,產品的描述信息,訂單的狀態等等;表中的記錄變化的比例和頻率不是很大,比如,總共有10億的用戶,每天新增和發生變化的有200萬左右,變化的比例占的很小。)
    數據量很大(比如一張用戶表,大約10億條記錄,50個字段,這種表,即使使用ORC壓縮,單張表的存儲也會超過100G,在HDFS使用雙備份或者三備份的話就更大一些;需要查看某一個時間點或者時間段的歷史快照信息,比如,查看某一個訂單在歷史某一個時間點的狀態)

  • spark寬窄依賴
    寬依賴就是一個父親rdd被多個子rdd使用,會發生shuffle操作,對應的rdd算子有reducebykey,groupbykey,窄依賴就是一個父親rdd被一個子rdd依賴,經常做轉換傳遞等操作,對應的rdd算子例如map,filter。同時每出現一個寬依賴,會劃分一個新的stage。

  • spark常用算子,那些會引起shuffle
    groupByKey():父 RDD 所有分區中相同 key 的數據需匯總到子 RDD 的同一分區(多對 1 依賴)。
    reduceByKey(f):按 key 聚合,需收集父 RDD 多個分區的相同 key 數據(多對 1 依賴)。
    sortByKey():按 key 排序,需全局重排,依賴父 RDD 所有分區。
    distinct():去重需全局比較,依賴父 RDD 所有分區。
    repartition(n):重新分區(無論增減),需 Shuffle(多對多依賴)。

?ReduceByKey?:
同時實現?分組與聚合?功能,需傳入自定義聚合函數(如累加、求極值等)。
返回類型為RDD[(K, V)],每個鍵對應聚合后的單一值。??

?GroupByKey?:
僅實現?鍵值分組?功能,不執行聚合。
返回類型為RDD[(K, Iterable[V])],每個鍵對應原始值的迭代器。??

?數據處理流程?
?ReduceByKey?:
?Shuffle前預聚合?:在各分區內對相同鍵值執行局部聚合(Combiner階段)。
?Shuffle階段?:僅傳輸預聚合后的中間結果。
?全局聚合?:在Reduce端合并各分區的預聚合結果。??

?GroupByKey?:
?直接Shuffle?:未經預處理的全量鍵值對直接跨節點傳輸。
?分組階段?:在Reduce端收集所有相同鍵值

原文鏈接:https://blog.csdn.net/2301_76971522/article/details/149782100

  • order by sort by distribute by和cluster by的區別
    ORDER BY
    ?全局排序?:對整個結果集進行排序,僅允許一個Reducer處理數據,因此效率較低,適用于小數據量場景。 ?
    ?模式限制?:在嚴格模式下(hive.mapred.mode=strict),必須指定LIMIT或分區條件,否則執行會報錯。 ?
    SORT BY
    ?局部排序?:在Reducer內部對數據進行排序,不保證全局有序。 ?
    ?多Reducer支持?:可設置多個Reducer(如mapreduce.job.reduces=n),每個Reducer處理局部有序數據。 ?
    DISTRIBUTE BY
    ?數據分區?:通過hash算法將數據分發到不同Reducer,類似MR中的Partition。 ?
    ?結合SORT BY?:通常與SORT BY聯合使用,先分區再局部排序。 ?
    CLUSTER BY
    ?組合功能?:當DISTRIBUTE BY和SORT BY的字段相同時,CLUSTER BY可同時完成分區和排序。 ?
    ?排序限制?:僅支持升序排序(默認),不支持降序或自定義排序規則。 ?

  • 數據倉庫的特點,4個
    面向主題,可集成,隨時間變化,穩定

  • 數倉分層,簡單介紹
    結合實習經歷

  • 數據倉庫和數據庫的區別

  • 星型模型和雪花模型

  • 事實表和維度表怎么區分

  • 一道思考題
    有一張電影表movie,里面包含電影id :movie_id,日期:dt,票房:box,求某個電影過去一周票方,一日電影票房,每個電影每日電影票房,存在一張hive表里面,能一次取出三個粒度的數據,怎么設計?

-- 每日每個電影票房
SELECT'daily' as type,movie_id,dt,SUM(box) as box_sum
FROM movie
WHERE dt >= date_sub(current_date, 7)
GROUP BY movie_id, dtUNION ALL-- 某個電影過去一周票房
SELECT'movie_week' as type,movie_id,NULL as dt,SUM(box) as box_sum
FROM movie
WHERE dt >= date_sub(current_date, 7)
GROUP BY movie_idUNION ALL-- 全部電影過去一周票房
SELECT'all_week' as type,NULL as movie_id,NULL as dt,SUM(box) as box_sum
FROM movie
WHERE dt >= date_sub(current_date, 7);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/96159.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/96159.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/96159.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據清理后續

前篇:Python 項目里的數據清理工作(數據清洗步驟應用) 一,先接上文添加兩種數據填充的方法 1、線性回歸填充 def lr_train_fill(train_data,train_label):train_data_all pd.concat([train_data, train_label], axis1)train_d…

nuc設置腳本開機自啟動

在終端執行gnome-session-properties這個是帶有圖型化頁面的設置開機自啟動的軟件沒有這個軟件的可以直接下載sudo apt update sudo apt install gnome-startup-applications一般都有,ubunutu自帶的右邊有添加,名稱和注釋隨便寫,只需要把命令…

JavaScript 性能優化實戰大綱

JavaScript 性能優化實戰大綱 核心優化方向 減少主線程阻塞 避免長任務(Long Tasks)拆分計算密集型操作使用 Web Workers 處理后臺任務優先使用 requestIdleCallback 或 requestAnimationFrame 內存管理 避免內存泄漏(如未清理的定時器、閉包…

openssl生成自簽名證書的方法

因為開發中查詢過各種命令,失敗過很多次,所以記錄一下正確的命令: 生成私鑰-不要密碼 openssl genpkey -algorithm RSA -out ssl/key.pem 生成自簽名證書 openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -…

電影購票+票房預測系統 - 后端項目介紹(附源碼)

電影購票預測系統 - 后端項目介紹 項目概述 本項目是一個基于Spring BootVue的前后端分離電影購票系統,包含完整的前臺用戶功能和后臺管理功能,并提供數據可視化和電影預測功能。本文檔將詳細介紹后端項目的架構、功能模塊、技術棧和使用方法。 項目源…

專利服務系統平臺|個人專利服務系統|基于java和小程序的專利服務系統設計與實現(源碼+數據庫+文檔)

專利服務系統平臺 目錄 基于java和小程序的專利服務系統設計與實現 一、前言 二、系統設計 三、系統功能設計 四、數據庫設計 五、核心代碼 六、論文參考 七、最新計算機畢設選題推薦 八、源碼獲取: 博主介紹:??大廠碼農|畢設布道師&#x…

【HTML】3D動態凱旋門

目錄 版本1.0:簡易版本 版本2.0:建筑渲染 版本3.0:優化建筑群 版本4.0:增加公路和車流 版本5.0:去除壓在公路上的建筑 版本6.0:優化車流群 版本7.0:添加煙花效果 版本8.0:添…

(論文閱讀)FedViT:邊緣視覺轉換器的聯邦持續學習

FedViT:邊緣視覺轉換器的聯邦持續學習 FedViT: Federated continual learning of vision transformer at edge (北京理工大學-2023年發表于《Future Generation Computer Systems》中科院二區) highlight: ?提出一種輕量級的客戶端聯合持續學習方法。 ?…

微算法科技(NASDAQ: MLGO)研究利用PBFT中的動態視圖變換機制,實現區塊鏈系統高效運轉

隨著區塊鏈技術的飛速發展,其去中心化、透明性、不可篡改等特性使得它在金融、供應鏈管理、物聯網等多個領域得到了廣泛應用。然而,區塊鏈系統在高并發場景下的性能瓶頸問題一直是制約其大規模應用的關鍵因素。傳統的共識算法如PoW(工作量證明…

從數據匯總到高級分析,SQL 查詢進階實戰(下篇)—— 分組、子查詢與窗口函數全攻略

引言:從 “提取數據” 到 “洞察價值”,SQL 進階之路 在掌握了基礎查詢與多表關聯后,你是否曾遇到這樣的挑戰:如何按部門統計平均薪資?怎樣找出每個崗位薪資最高的員工?或者如何計算銷售額的月度環比增長率…

Spring 和 Lettuce 源碼分析 Redis 節點狀態檢查與失敗重連的工作原理

關鍵步驟:Spring Boot 啟動時創建 LettuceConnectionFactory根據配置類型(集群/哨兵/單機)初始化客戶端對于集群模式:創建 RedisClusterClient調用 setOptions(getClusterClientOptions(configuration)) 應用配置2. 節點狀態檢查機…

從ChatGPT到智能助手:Agent智能體如何顛覆AI應用

從ChatGPT到智能助手&#xff1a;Agent智能體如何顛覆AI應用 更多大模型知識分享&#xff0c;盡在>>>GitHub<<< Agent 智能體是什么 簡單來說&#xff0c;Agent 智能體是一種能夠感知環境&#xff0c;并根據自身目標自主采取行動的智能實體。它就像是一個擁…

Spring Boot應用實現圖片資源服務

在這篇文章中&#xff0c;我們將介紹如何使用Spring Boot創建一個REST API來提供服務器上的靜態圖片資源。該API包括路徑安全檢查、文件存在性驗證以及緩存控制等功能&#xff0c;并且代碼包含詳細的注釋以幫助理解。Maven依賴 首先&#xff0c;在您的pom.xml文件中添加以下依賴…

Word 中 MathType 公式編號問題與解決

注&#xff1a;本文為 “Word 中 MathType 公式編號” 相關合輯。 圖片清晰度受引文原圖所限。 略作重排&#xff0c;未整理去重。 如有內容異常&#xff0c;請看原文。 【Word】解決 MathType 已插入公式按新章節開始編號的問題 Allan326 于 2020-03-25 15:30:08 發布 問題…

19. 大數據-產品概念

文章目錄前言一、數據庫1. 簡介2. 使用場景3. 數據庫類型4. 數據類型二、數據倉庫1. 簡介2. 使用場景3. 數據倉庫架構三、數據平臺1. 簡介2. 使用場景3. 數據倉庫架構四、數據中臺1. 簡介2. 使用場景3. 數據中臺架構五、數據湖1. 簡介2. 使用場景3. 數據湖架構六、總結1. 區別2…

python學習DAY46打卡

DAY 46 通道注意力(SE注意力) 內容&#xff1a; 不同CNN層的特征圖&#xff1a;不同通道的特征圖什么是注意力&#xff1a;注意力家族&#xff0c;類似于動物園&#xff0c;都是不同的模塊&#xff0c;好不好試了才知道。通道注意力&#xff1a;模型的定義和插入的位置通道注意…

Ansible 中的文件包含與導入機制

Ansible 中的文件包含與導入機制本文介紹了在 Ansible 中如何通過模塊化方式管理復雜的 Playbook&#xff0c;包括使用 include 和 import 系列語句來拆分和重用代碼。概述 當 Playbook 變得冗長或復雜時&#xff0c;可以將其拆分為多個小文件以提高可管理性。Ansible 提供了模…

OpenCV-循環讀取視頻幀,對每一幀進行處理

原型代碼 內存模型&#xff1a; 核心變量&#xff1a;frame&#xff0c;Numpy ndarray&#xff0c;每次會被覆蓋&#xff0c;大小保持恒定import cv2video_path your_video.mp4cap cv2.VideoCapture(video_path)if not cap.isOpened():print("Cant open Video")exi…

決策樹的學習(二)

一、整體框架本 PPT 聚焦機器學習中的決策樹算法&#xff0c;圍繞 “核心算法&#xff08;ID3、C4.5、CART&#xff09;→ 特殊問題&#xff08;連續值處理&#xff09;→ 優化策略&#xff08;剪枝&#xff09;→ 代碼實現→ 課堂練習” 展開&#xff0c;系統補充決策樹的進階…

粗糧廠的基于spark的通用olap之間的同步工具項目

粗糧廠的基于spark的通用olap之間的同步工具項目1 項目背景2 項目實現2.1 實現原理2.2 細節要點3 抽樣說明4 項目運行狀態4.1 運行速度4.2 項目吞吐4.3 穩定性說的比較簡單&#xff0c;有需要的可以留言&#xff0c;我不斷補充完善1 項目背景 我們公司內部的需要一款&#xff…