大數據面試總結 二

1、事實表主要分成幾種:

1、事務事實表:又稱作原子事實表,主要是用來描述業務過程,跟蹤控件或者時間上某點的度量事件,保存的是最原子的數據

2、周期事實表:以一個周期作為一個時間間隔,用來記錄事實,一個周期可以是每天、每周、每月、每年等。

3、累計快照事實表:用來描述過程開始和過程結束之間的關鍵步驟事件,覆蓋過程的整個生命周期,通常具有多個日期字段來記錄關鍵時間點,當過程隨著生命周期不斷的變化時,記錄也會隨著生命的周期變化而被修改。

2、數倉建模的規范

數倉分層,阿里主要分成了五層,分別是ods、dwd、dim、dws、ads層,每一層都有自己的一個單獨的作用

ods層的主要的作用就是將數據從數據源采集過來,對數據來說,基本上是不做任何的處理。

dwd層這層的主要的作用就是ods層的數據采集過來,在這層會對數據做一些處理,例如說在這層會對一些空的數據進行過濾,對于用戶的手機號、身份證號碼進行加密的操作等。

dim層主要存儲的是一些維度數據,就是一些不怎么變化的數據,例如說一些省份的名稱是不會發生改變的。

dws層的主要的作用就是對數據進行匯總,構建寬表,對維度表進行維度退化的操作

ads層的主要的作用就是計算一些指標,對外使用構建好的寬表,以便計算指標。

在構建寬表的時候需要注意的是禁止逆向調用,需要避免同層調用、還需要避免跨層調用

3、將數據從ods層采集到dwd層主要的操作有哪些

對數據進行清洗,過濾一些空數據,對敏感數據進行脫敏操作。又是也會做一些維度退化。

4、 寬表的設定

做寬表實際上就是做join,實際上就是做維度退化,把維度表中的數據退化到事實表中。

5、? 什么是維度退化

就是將維度表退化到事實表中,例如說一個訂單表,是一個事實表,還有一個就是商品的信息表,是維度表,將來進行展示的時候,需要展示的商品的所有的信息,就類似于join,將維度表關聯到事實表中。

6、什么是維度表

主要存放的就是一些不怎么變化的數據表,就比如說一些地域的省份的名稱就不會發生改變。

7、什么事實表

?有度量值的表,就是哪些需要需要參與計算的一些表,就比如說訂單表中會有金額、數量等信息。

8、hdfs中的組件的作用:

hdfs中的組件主要包括namenode、datanode、SecondaryNameNode分別的作用:

namenode:主要的作用就是存儲元數據,也是接收客戶端的一些讀寫數據的請求。

datanode:是hdfs中的真實存儲數據的地方,會與namenode保持保持心跳機制。

SecondaryNameNode:主要的作用就是用來合并日志文件,下次hadoop會根據這個合并的文件啟動。將hadoop中的edit logs文件合并到fismage文件中。

9、hadoop不適合存儲小文件,以及解決方法:

不適合存儲小文件的原因:

首先小文件的數量變多,那么namenode的壓力就會變大,因為元數據是存儲在namenode中,可能會導致namenode出現宕機。其次就是計算的資源消耗會比較大,小文件越多,map任務的數量就會越多,此時消耗的計算資源就會比較多。

解決方法:

1、使用har歸檔,hadoop archive(har),是一個高效的將小文件放入到hdfs塊中的文件存檔工具,它能夠將多個小文件打包成一個HAR文件

例如:
在本地準備兩個小文件:
cat >
user1.txt<<EOF1,tom,male,162,jerry,male,10EOFcat >
user2.txt<<EOF101,jack,male,19102,rose,female,18EOF>將本地的文件put到hdfs中
hdfs dfs -put user.* /foo/bar/對某個目錄/foo/bar下的所有小文件存檔成/outputdir/zoo.har:
hadoop archive -archiveName foo.har -p /foo/bar/outputdir查看文件:
hdfs dfs -ls har:///user/zoo/foo.har

但是需要注意的是,對小文件進行存檔的時候,原來的小文件是不會被刪除的,需要用戶進行手動刪除。?

2、使用Sequence file 由一個二進制key/value組成,如果key為小文件的名稱,那么value就是文件的內容,可以將大批的小文件合并成一個大文件。

3、CombineFileinputFormat(針對hive表中的小文件數合并處理)

是一種新的inputformat,用于將多個文件合并成一個單獨的split,在map和reduce處理之前進行合并小文件。

4、開啟JVM重用

有小文件的時候需要開啟JVM重用,會在任務執行前將所有需要的資源進行申請,當任務只想完成后在釋放資源。

<property>     <name>mapreduce.job.jvm.numtasks</name>    <value>10</value>   
<description>
How many tasks to run per jvm,if set to -1 ,there is  no limit
</description>
</property>

5、將本地的小文件進行合并,再將文件上傳到hdfs中。(appenToFile)

將本地的多個小文件上傳到hdfs中,可以通過hdfs的客戶端的appendToFile命令對小文件進行合并

在本地準備兩個文件:
cat 
>user1.txt<<EOF1,tom,male,162,jerry,male,10EOFcat >user2.txt<<EOF101,jack,male,19102,rose,female,18EOF使用appendToFile合并小文件
hdfs dfs -appendToFile user1.txt user2.txt /test/upload/merged_user.txt# 查看
hdfs dfs -cat /test/upload/merged_user.txt

6、合并hdfs中的小文件,下載到本地(getmerge)

可以通過hdfs中的命令getmerge,將多個小文件進行合并,在下載到本地。

# 先上傳小文件到
hdfs dfs -put user1.txt user2.txt /test/upload
# 下載,同時合并:
hdfs dfs -getmerge /test/upload/user*.txt ./merged_user.txt
10、hive與mysql的區別:
1、數據存儲位置 ,Hive存儲在 HDFS 上,數據庫將數據保存在塊設備或者本地?件系統中
2、數據更新 ,Hive默認不?持 update delete 操作,需要開始事務配置。?般場景不建議使?跟新。 mysql?持更新刪除操作。如果在 hive 中需要 update 。可以 insert into 新表 select 字段 1 ,字
2 if (更新條件,返回,否則返回) from 舊表
3、執?延遲 ,Hive執?延遲較?,數據庫的執?延遲較低。這個是有條件的,在數據規模較?時,在數據 ,規模?到超過數據庫的處理能?的時候,Hive 的并?計算顯然能體現出優勢。
4、數據規模 Hive?持很?規模的數據計算,數據庫可以?持的數據規模較?。
5、SQL 語法區別:
1 hive 不?持 where 后?跟?查詢。
2 hive ?持建表分區操作, mysql 不?持。
3 group by hive sql select 中的維度字段,必須出現在 group by 后?。 mysql 語法可以不
?。
11、hive的四個by的區別:
order by :全局排序,只有?個 reduce
sort by :分區內有序
distribute by :類似于 MR partition ,進?分區,結合 sort by 使?
cluster by :當 distribute by sort by 字段相同的時候,可以使? cluster by ?式。 cluster by 除了
具有 distribute by 的功能外還兼具了 sort by 的功能。但是排序只能是升序排序,不能指定排序規則 ASC 或者 DESC
12、自定UDF的步驟:

?UDF函數解析公共字段,?UDTF函數解析事件字段 ,?定義UDF:繼承UDF,重寫evaluate?法

13、hbase的架構,每一個組件的作用:

hbase的架構主要包括zookeeper、regionserver、region、memstore、storefile、hmaster、hlog

zookeeper作用:

1、保證在任何的時候,集群中只含有一個hmaster(hbase也是一個主從架構的,支持高可用)

2、存儲所有的region的尋址入口,用戶需要訪問數據,就需要向zookeeper發送請求,獲取元數據的元數據表的地址信息,返回給客戶端,客戶端與對應的regionserver建立連接

3、實時監控regionserver的上線和下線,實時向hmaster進行報告。

hmaster作用:
1、為regionserver分配region

2、監控region server,發現失敗的region server,重新分配region

3、管理用戶對表的增刪改。

regionserver作用:

1、regionserver用來維護region,負責接受region的io

2、region server負責監控region,對于那個變大的region進行切分。

hlog作用:

就是hadoop中的有個Sequence File,Sequence File 的Key是 HLogKey對象,HLogKey中記錄了寫入數據的歸屬信息,除了table和 region名字外,同時還包括sequence number和timestamp,timestamp是” 寫入時間”,sequence number的起始值為0,或者是最近一次存入文件系 統sequence number。HLog SequeceFile的Value是HBase的KeyValue對象,即對應HFile中的 KeyValue

region作用:?

hbase會自動的將表水平劃分成多個region,每一個region中都存儲一串連續的數據,首先一張表一開始只含有一個region,但是隨著數據的不斷的插入,region就會不斷的增大,當達到一定的闕值的時候(默認是128M),region就會等分成兩個region,當表中的行不斷的增加,就會有越來越多的region,被regionserver多管理。

memstore作用:

1、一個region由多個store組成,一個store對應一個CF(列簇)

2、store包括位于內存中的memstore和位于磁盤的storefile寫操作先寫入 memstore,當memstore中的數據達到某個閾值,hregionserver會啟動 flashcache進程寫入storefile,每次寫入形成單獨的一個storefile

3、當storefile文件的數量增長到一定閾值后,系統會進行合并(minor、 major compaction),在合并過程中會進行版本合并和刪除工作 (majar),形成更大的storefile。

4、當一個region所有storefile的大小和超過一定閾值后,會把當前的region 分割為兩個,并由hmaster分配到相應的regionserver服務器,實現負載均衡。

5、客戶端檢索數據,先在memstore找,找不到再找storefile

6、HRegion是HBase中分布式存儲和負載均衡的最小單元。最小單元就表 示不同的HRegion可以分布在不同的HRegion server上。

7、HRegion由一個或者多個Store組成,每個store保存一個columns family。

8、每個Strore又由一個memStore和0至多個StoreFile組成。

14、spark中的一些轉化算子和行為算子

轉化算子 :map、gruopby、groupbykey、reducebukey

行為算子:foreach、foreachpartition、take、top、count

15、persist與cache的區別

persist(持久化):在大數據處理的框架中,persists是將rdd或者是dataframe持久化到內存中,或者是持久化到磁盤中,以便在后續的操作中重復中這些數據而不需要在沖重新計算,持久化是用來提高性能,在使用相同的數據的時候,比較明顯,可以選擇不同級別的持久化,例如:MEMORY_ONLYDISK_ONLYMEMORY_AND_DISK

cache(緩存):在類似的spark這樣的分布式計算框架中,cache的主要的作用是將數據緩存到內存中,以便以后可以快速的訪問。

兩者的區別:

1、持久化的方式不同:persists既可以將數據緩存到內存中,也可以將數據緩存到磁盤中。

2、使用的方式不同:persists是一種比較通用的持久化的方式,可以選擇不同的緩存級別,然而對于cache來說,它是persists的一種的特殊情況,將數據持久化到內存中。

16、dataframe、dataset、rdd的區別

1、RDD

RDD是spark中最早引入的抽象數據類型,代表的是一個彈性分布式數據集。

RDD是面向對象的,可以包含任何類型的java、scala、python對象

2、dataframe

是基于RDD的高級抽象,代表的是一張表格化的數據結構,類似于關系型數據庫中的表。

dataframe具有優化的執行計劃,可以提高新性能。

dataframe通常用于結構化數據的處理,支持sql操作,列式操作,dataframe API等。

3、dataset

結合了rdd面向對象的風格和dsataframe的查詢優化的特點

dataset是類型安全的,允許使用強類型的API,可以在編譯的時候捕獲編譯的錯誤。

17、flink中的插槽

主要是用來資源隔離,因為在flink中,每一個task都是在taskmanager中運行,solt就是最小的資源單位,每一個solt中接受一個task,防止在多個task在運行的時候搶占資源。

18、flink中的組件以及每一個的作用

client、jobmanager、taskmanager

client:

構建和配置flink作業,設置作業的參數并將任務通過flink run提交到jobmanager上去執行。

jobmanager:

主要的作用是負責接收客戶端的作業提交的請求,負責整體任務的資源調度,協調任務之間的數據交換,同時也負責整體的狀態維護。

taskmanager:

主要是負責接受jobmanager分配的任務,并執行這些任務,并負責任務之間的數據傳輸并將計算的結果返回。

19、窗口

滑動窗口、滾動窗口、會話窗口、統計窗口

會話窗口:在定義的時候于滑動窗口、滾動窗口的區別是在定義窗口的時候是基于事件之間的間隔,而不是固定的時間段或者是固定數量的事件。

20、事實表設置的主要的流程:

1、選擇業務 2、聲明粒度 3、確定維度 4、確定事實 5、冗余維度

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

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

相關文章

2021版吳恩達深度學習課程Deeplearning.ai 05序列模型 12.5

學習內容 05.序列模型 1.1 為什么用序列模型 1.序列模型常見的應用 1.2 注釋 notation 1.*T_x(i)表示訓練樣本x(i)的序列長度&#xff0c;T_y(i)表示target(i)的序列長度2.訓練集表示單詞的方式*構建字典的方式*在訓練集中查找出現頻率最高的單詞*網絡搜集常用字典3.如果遇…

【C語言快速學習基礎篇】之一基礎類型、進制轉換、數據位寬

文章目錄 一、基礎類型(根據系統不同占用字節數會有變化)1.1、有符號整形1.2、無符號整形1.3、字符型1.4、浮點型1.5、布爾型 二、進制轉換2.1、二進制2.2、八進制2.3、十進制2.4、十六進制2.5、N進制2.6、進制轉換關系對應表 三、數據位寬3.1、位3.2、字節3.3、字3.4、雙字3.5…

程序員常用英文單詞

英語對于程序員來說多么重要應該無需過多解釋了&#xff0c;把近期在網上收集到的分享到這里供大家學習交流。 PS&#xff1a;感謝原作者的收集&#xff0c;謝謝。 A abstract 抽象的 abstract base class (ABC) 抽象基類abstract class 抽象類 abstraction 抽象、抽象物、抽象…

【數據結構高階】紅黑樹

目錄 一、紅黑樹的概念 二、紅黑樹的性質 2.1 紅黑樹與AVL樹的比較 三、紅黑樹的實現 3.1 紅黑樹節點的定義 3.2 數據的插入 3.2.1 紅黑樹的調整思路 3.2.1.1 cur為紅&#xff0c;f為紅&#xff0c;g為黑&#xff0c;u存在且為紅 3.2.1.2 cur為紅&#xff0c;f為紅&am…

【重點】【LCA】236. 二叉樹的最近公共祖先

題目 class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {if (root null || root p || root q) {return root;}TreeNode left lowestCommonAncestor(root.left, p, q);TreeNode right lowestCommonAncestor(root.right, p, …

【重點】【DFS】124.二叉樹中的最大路徑和

題目 和求二叉樹直徑相同套路 class Solution {private int max Integer.MIN_VALUE;public int maxPathSum(TreeNode root) {if (root null) {return 0;}dfs(root);return max;}// 返回經過root的單邊分支最大和public int dfs(TreeNode root) {if (root null) {return 0;}…

IT新聞資訊系統,使用mysql作為后臺數據庫,此系統具有顯示數據庫中的所有信息和刪除兩大功能。

表的準備&#xff1a; -- MySQL Administrator dump 1.4 -- -- ------------------------------------------------------ -- Server version 5.1.40-community /*!40101 SET OLD_CHARACTER_SET_CLIENTCHARACTER_SET_CLIENT */; /*!40101 SET OLD_CHARACTER_SET_RESULTSCHAR…

LTP測試

LTP 測試 LTP套件是由 Linux Test Project 所開發的一套系統測試套件。它基于系統資源的利用率統計開發了一個測試的組合,為系統提供足夠的壓力。通過壓力測試來判斷系統的穩定性和可靠性。壓力測試是一種破壞性的測試,即系統在非正常的、超負荷的條件下的運行情況 。用來評估…

mysql庫名規范

mysql庫名的一些規范和建議&#xff1a; 庫名以小寫字母、數字、下劃線組成&#xff0c;不要以數字開頭。建議不要超過32個字符&#xff0c;但盡量用簡短的名稱。因為很多地方用到庫名&#xff0c;如果庫名太長&#xff0c;容易出錯。庫名選擇有意義的名稱&#xff0c;盡量與應…

55.手寫實現grpc連接池以及gin和grpc交互

文章目錄 一、簡介前置說明 二、敏感詞過濾服務1、定義sensitive.proto文件2、protoc生成pb.go文件3、sensitive服務端實現 三、關鍵詞匹配服務1、編寫keywords.proto文件2、生成pb.go文件3、keywords服務端實現 四、gin web 路由服務1、新建grpcpool服務作為gin web服務2、根據…

GEE影像升尺度(10m->250m)

GEE影像升尺度&#xff08;10m->250m&#xff09; 代碼 var ext /* color: #d63000 *//* shown: false *//* displayProperties: [{"type": "rectangle"}] */ee.Geometry.Polygon([[[108.74625980473367, 28.562445155322063],[108.74625980473367, …

【MySQL】之死鎖問題及其解決方案

前言 數據庫死鎖問題是我們老生常談的問題了&#xff0c;在我們實際開發過程中經常會遇到&#xff0c;為了盡量避免出現死鎖&#xff0c;我們需要了解出現死鎖的場景。同時&#xff0c;如果線上出現了死鎖之后怎么去分析、排查和解決&#xff0c;下面我就這兩點介紹一下。 一、…

ubuntu22.04 怎么開啟SSH服務

在 Ubuntu 22.04 LTS 中&#xff0c;默認情況下不會自動啟動 SSH 服務。如果你想通過 SSH 訪問你的 Ubuntu 系統&#xff0c;你需要手動安裝 SSH 服務器&#xff0c;并確保 22 端口&#xff08;SSH 的默認端口&#xff09;是開放的。以下是必要的步驟&#xff1a; 安裝 SSH 服…

Java 多線程之同步(鎖)相關類總結

文章目錄 一、概述二、volatile 可見性/有序性三、synchronized 互拆鎖/排他鎖/非觀鎖四、DCL&#xff08;Double-Checked Locking&#xff09;五、CAS&#xff08;Compare and Set&#xff09;六、ReentrantLock 可重入鎖/公平/非公平鎖七、ReentrantReadWriteLock 讀寫鎖/共享…

Day56力扣打卡

打卡記錄 數對統計&#xff08;DP狀態壓縮&#xff09; 參考文獻 #include <bits/stdc.h>using namespace std;void solve(){int n;cin >> n;map<int, int> mapp;vector<int> a(n);for (auto& x : a){cin >> x;mapp[x] ;}vector<array&…

使用WebyogSQLyog使用數據庫

數據庫 實現數據持久化到本地&#xff1a; 使用完整的管理系統統一管理&#xff0c; 數據庫&#xff08;DateBase&#xff09;&#xff1a; 為了方便數據存儲和管理&#xff08;增刪改查&#xff09;&#xff0c;將數據按照特定的規則存儲起來 安裝WebyogSQLyog -- 創建數…

101基于matlab的極限學習機ELM算法進行遙感圖像分類

基于matlab的極限學習機ELM算法進行遙感圖像分類&#xff0c;對所獲取的遙感圖片進行初步分類和最終分類。數據可更換自己的&#xff0c;程序已調通&#xff0c;可直接運行。

如何使用 Explain 分析 SQL 語句?

如何使用 Explain 分析 SQL 語句&#xff1f; MySQL中EXPLAIN命令是我們分析和優化SQL語句的利器。 如何使用EXPLAIN來分析SQL語句&#xff0c;接下來有15個例子&#xff0c;一起學習唄 1. EXPLAIN的基本使用 EXPLAIN可以用于分析MySQL如何執行一個SQL查詢&#xff0c;包括如…

ElasticSearch之cat repositories API

命令樣例如下&#xff1a; curl -X GET "https://localhost:9200/_cat/repositories?vtrue&pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPHQBEs5*lo7F9"執行結果輸出如下&#xff1a; id type repo1 fs repo2 s3查…