Spark面試題整理

整理來源:《Spark面試2000題》

目錄
Spark section-0 基礎(chǔ) (3)
Spark section-1 Spark運行細節(jié) (13)
Spark section-2 Spark 與 Hadoop/MapReduce 比較 (7)
Spark section-3 RDD (4)
Spark section-4 RDD操作 (13)
Spark section-5 大數(shù)據(jù)問題 (7)
Spark section-6 機器學(xué)習(xí)算法 (4)
Spark section-7 Hive (2)

Spark section-0 基礎(chǔ)(3)

1. spark的有幾種部署模式僻他,每種模式特點兔院?

  • 本地模式
    • Spark不一定非要跑在hadoop集群崎场,可以在本地块促,起多個線程的方式來指定兜挨。方便調(diào)試替久,本地模式分三類
      • local:只啟動一個executor
      • local[k]: 啟動k個executor
      • local:啟動跟cpu數(shù)目相同的 executor
  • standalone模式
    • 分布式部署集群箱锐,自帶完整的服務(wù)研铆,資源管理和任務(wù)監(jiān)控是Spark自己監(jiān)控埋同,這個模式也是其他模式的基礎(chǔ)
  • Spark on yarn模式
    • 分布式部署集群,資源和任務(wù)監(jiān)控交給yarn管理
    • 粗粒度資源分配方式逆甜,包含cluster和client運行模式
      • cluster 適合生產(chǎn)虱肄,driver運行在集群子節(jié)點,具有容錯功能
      • client 適合調(diào)試萝挤,dirver運行在客戶端
  • Spark On Mesos模式

2. Spark技術(shù)棧有哪些組件绘面,每個組件都有什么功能亭罪,適合什么應(yīng)用場景燥筷?

  • Spark core
    • 是其它組件的基礎(chǔ)谢揪,spark的內(nèi)核
    • 主要包含:有向循環(huán)圖、RDD、Lingage、Cache、broadcast等
  • SparkStreaming
    • 是一個對實時數(shù)據(jù)流進行高通量绞旅、容錯處理的流式處理系統(tǒng)
    • 將流式計算分解成一系列短小的批處理作業(yè)
  • Spark sql:
    • 能夠統(tǒng)一處理關(guān)系表和RDD晃琳,使得開發(fā)人員可以輕松地使用SQL命令進行外部查詢
  • MLBase
    • 是Spark生態(tài)圈的一部分專注于機器學(xué)習(xí),讓機器學(xué)習(xí)的門檻更低
    • MLBase分為四部分:MLlib、MLI、ML Optimizer和MLRuntime蛤肌。
  • GraphX
    • 是Spark中用于圖和圖并行計算

3. spark有哪些組件

  • master:管理集群和節(jié)點琅锻,不參與計算。
  • worker:計算節(jié)點僵芹,進程本身不參與計算处硬,和master匯報荷辕。
  • Driver:運行程序的main方法惫谤,創(chuàng)建spark context對象。
  • spark context:控制整個application的生命周期蛔糯,包括dagsheduler和task scheduler等組件拯腮。
  • client:用戶提交程序的入口。

Spark section-1 Spark運行細節(jié)(13)

1. spark工作機制

  • 用戶在client端提交作業(yè)后淮逻,會由Driver運行main方法并創(chuàng)建spark context上下文琼懊。
  • 執(zhí)行add算子,形成dag圖輸入dagscheduler
  • 按照add之間的依賴關(guān)系劃分stage輸入task scheduler
  • task scheduler會將stage劃分為taskset分發(fā)到各個節(jié)點的executor中執(zhí)行

2. Spark應(yīng)用程序的執(zhí)行過程

  • 構(gòu)建Spark Application的運行環(huán)境(啟動SparkContext)
  • SparkContext向資源管理器(可以是Standalone爬早、Mesos或YARN)注冊并申請運行Executor資源哼丈;
  • 資源管理器分配Executor資源,Executor運行情況將隨著心跳發(fā)送到資源管理器上筛严;
  • SparkContext構(gòu)建成DAG圖醉旦,將DAG圖分解成Stage,并把Taskset發(fā)送給Task Scheduler
  • Executor向SparkContext申請Task桨啃,Task Scheduler將Task發(fā)放給Executor運行车胡,SparkContext將應(yīng)用程序代碼發(fā)放給Executor。
  • Task在Executor上運行照瘾,運行完畢釋放所有資源匈棘。

3. driver的功能是什么?

  • 一個Spark作業(yè)運行時包括一個Driver進程析命,也是作業(yè)的主進程主卫,具有main函數(shù)逃默,并且有SparkContext的實例,是程序的人口點队秩;
  • 功能:
    • 向集群申請資源
    • 負責了作業(yè)的調(diào)度和解析
    • 生成Stage并調(diào)度Task到Executor上(包括DAGScheduler笑旺,TaskScheduler)

4. Spark中Work的主要工作是什么?

  • 管理當前節(jié)點內(nèi)存馍资,CPU的使用狀況筒主,接收master分配過來的資源指令,通過ExecutorRunner啟動程序分配任務(wù)
  • worker就類似于包工頭鸟蟹,管理分配新進程乌妙,做計算的服務(wù),相當于process服務(wù)
  • worker不會運行代碼建钥,具體運行的是Executor是可以運行具體appliaction寫的業(yè)務(wù)邏輯代碼

5. task有幾種類型藤韵?2種

  • resultTask類型,最后一個task
  • shuffleMapTask類型熊经,除了最后一個task都是

6. 什么是shuffle泽艘,以及為什么需要shuffle?

  • shuffle中文翻譯為洗牌镐依,需要shuffle的原因是:某種具有共同特征的數(shù)據(jù)匯聚到一個計算節(jié)點上進行計算

7. Spark master HA 主從切換過程不會影響集群已有的作業(yè)運行匹涮,為什么?

  • 因為程序在運行之前槐壳,已經(jīng)申請過資源了然低,driver和Executors通訊,不需要和master進行通訊的务唐。

8. Spark并行度怎么設(shè)置比較合適

  • spark并行度雳攘,每個core承載2~4個partition(并行度)
  • 并行讀和數(shù)據(jù)規(guī)模無關(guān),只和內(nèi)存和cpu有關(guān)

9. Spaek程序執(zhí)行枫笛,有時候默認為什么會產(chǎn)生很多task吨灭,怎么修改默認task執(zhí)行個數(shù)?

  • 有很多小文件的時候刑巧,有多少個輸入block就會有多少個task啟動
  • spark中有partition的概念沃于,每個partition都會對應(yīng)一個task,task越多海诲,在處理大規(guī)模數(shù)據(jù)的時候繁莹,就會越有效率

10. Spark中數(shù)據(jù)的位置是被誰管理的?

  • 每個數(shù)據(jù)分片都對應(yīng)具體物理位置特幔,數(shù)據(jù)的位置是被blockManager管理

11. 為什么要進行序列化

  • 減少存儲空間咨演,高效存儲和傳輸數(shù)據(jù),缺點:使用時需要反序列化蚯斯,非常消耗CPU

12. Spark如何處理不能被序列化的對象薄风?

  • 封裝成object

13. Spark提交你的jar包時所用的命令是什么饵较?

  • spark-submit

Spark section-2 Spark 與 Hadoop/MapReduce 比較(7)

1. Mapreduce和Spark的相同和區(qū)別

  • 兩者都是用mr模型來進行并行計算
  • hadoop的一個作業(yè):job
    • job分為map task和reduce task,每個task都是在自己的進程中運行的
    • 當task結(jié)束時遭赂,進程也會結(jié)束
  • spark用戶提交的任務(wù):application
    • 一個application對應(yīng)一個sparkcontext循诉,app中存在多個job
    • 每觸發(fā)一次action操作就會產(chǎn)生一個job
    • 這些job可以并行或串行執(zhí)行
    • 每個job中有多個stage,stage是shuffle過程中DAGSchaduler通過RDD之間的依賴關(guān)系劃分job而來的
    • 每個stage里面有多個task撇他,組成taskset有TaskSchaduler分發(fā)到各個executor中執(zhí)行
    • executor的生命周期是和app一樣的茄猫,即使沒有job運行也是存在的,所以task可以快速啟動讀取內(nèi)存進行計算困肩。
  • hadoop的job只有map和reduce操作划纽,表達能力比較欠缺
    • 在mr過程中會重復(fù)的讀寫hdfs,造成大量的io操作锌畸,多個job需要自己管理關(guān)系勇劣。
  • spark的迭代計算都是在內(nèi)存中進行的
    • API中提供了大量的RDD操作如join,groupby等
    • 通過DAG圖可以實現(xiàn)良好的容錯

2. 簡答說一下hadoop的mapreduce編程模型

  • 首先map task會從本地文件系統(tǒng)讀取數(shù)據(jù)潭枣,轉(zhuǎn)換成key-value形式的鍵值對集合比默,使用的是hadoop內(nèi)置的數(shù)據(jù)類型(longwritable、text)
  • 將鍵值對集合輸入mapper進行業(yè)務(wù)處理過程盆犁,將其轉(zhuǎn)換成需要的key-value在輸出
  • 之后會進行一個partition分區(qū)操作命咐,默認使用的是hashpartitioner,自定義分區(qū):重寫getpartition方法
  • 之后會對key進行進行sort排序蚣抗,grouping分組操作將相同key的value合并分組輸出
  • 之后進行一個combiner歸約操作侈百,其實就是一個本地段的reduce預(yù)處理瓮下,以減小后面shufle和reducer的工作量
  • reduce task會通過網(wǎng)絡(luò)將各個數(shù)據(jù)收集進行reduce處理
  • 最后將數(shù)據(jù)保存或者顯示翰铡,結(jié)束整個job

3. 簡單說一下hadoop和spark的shuffle相同和差異?

  • high-level 角度:
    • 兩者并沒有大的差別 都是將 mapper(Spark: ShuffleMapTask)的輸出進行 partition讽坏,不同的 partition 送到不同的 reducer(Spark 里 reducer 可能是下一個 stage 里的 ShuffleMapTask锭魔,也可能是 ResultTask)
      Reducer 以內(nèi)存作緩沖區(qū),邊 shuffle 邊 aggregate 數(shù)據(jù)路呜,等到數(shù)據(jù) aggregate 好以后進行 reduce()迷捧。
  • low-level 角度:
    • Hadoop MapReduce 是 sort-based,進入 combine() 和 reduce() 的 records 必須先 sort胀葱。
    • 好處:combine/reduce() 可以處理大規(guī)模的數(shù)據(jù)
      • 因為其輸入數(shù)據(jù)可以通過外排得到
      • mapper 對每段數(shù)據(jù)先做排序
      • reducer 的 shuffle 對排好序的每段數(shù)據(jù)做歸并
    • Spark 默認選擇的是 hash-based漠秋,通常使用 HashMap 來對 shuffle 來的數(shù)據(jù)進行 aggregate,不提前排序
    • 如果用戶需要經(jīng)過排序的數(shù)據(jù):sortByKey()
  • 實現(xiàn)角度:
    • Hadoop MapReduce 將處理流程劃分出明顯的幾個階段:map(), spilt, merge, shuffle, sort, reduce()
    • Spark 沒有這樣功能明確的階段抵屿,只有不同的 stage 和一系列的 transformation()庆锦,spill, merge, aggregate 等操作需要蘊含在 transformation() 中

4. 簡單說一下hadoop和spark的shuffle過程

  • hadoop:map端保存分片數(shù)據(jù),通過網(wǎng)絡(luò)收集到reduce端
  • spark:spark的shuffle是在DAGSchedular劃分Stage的時候產(chǎn)生的轧葛,TaskSchedule要分發(fā)Stage到各個worker的executor搂抒,減少shuffle可以提高性能

5. partition和block的關(guān)聯(lián)

  • hdfs中的block是分布式存儲的最小單元艇搀,等分,可設(shè)置冗余求晶,這樣設(shè)計有一部分磁盤空間的浪費焰雕,但是整齊的block大小,便于快速找到芳杏、讀取對應(yīng)的內(nèi)容
  • Spark中的partition是RDD的最小單元矩屁,RDD是由分布在各個節(jié)點上的partition組成的。
  • partition是指的spark在計算過程中蚜锨,生成的數(shù)據(jù)在計算空間內(nèi)最小單元
  • 同一份數(shù)據(jù)(RDD)的partion大小不一档插,數(shù)量不定,是根據(jù)application里的算子和最初讀入的數(shù)據(jù)分塊數(shù)量決定
  • block位于存儲空間亚再;partion位于計算空間郭膛,block的大小是固定的、partion大小是不固定的氛悬,是從2個不同的角度去看數(shù)據(jù)则剃。

6. Spark為什么比mapreduce快?

  • 基于內(nèi)存計算如捅,減少低效的磁盤交互
  • 高效的調(diào)度算法棍现,基于DAG
  • 容錯機制Linage

7. Mapreduce操作的mapper和reducer階段相當于spark中的哪幾個算子?

  • 相當于spark中的map算子和reduceByKey算子镜遣,區(qū)別:MR會自動進行排序的己肮,spark要看具體partitioner

Spark section-3 RDD(4)

1. RDD機制

  • 分布式彈性數(shù)據(jù)集,簡單的理解成一種數(shù)據(jù)結(jié)構(gòu)悲关,是spark框架上的通用貨幣
  • 所有算子都是基于rdd來執(zhí)行的
  • rdd執(zhí)行過程中會形成dag圖谎僻,然后形成lineage保證容錯性等
  • 從物理的角度來看rdd存儲的是block和node之間的映射

2. RDD的彈性表現(xiàn)在哪幾點?

  • 自動的進行內(nèi)存和磁盤的存儲切換寓辱;
  • 基于Lingage的高效容錯艘绍;
  • task如果失敗會自動進行特定次數(shù)的重試;
  • stage如果失敗會自動進行特定次數(shù)的重試秫筏,而且只會計算失敗的分片诱鞠;
  • checkpoint和persist,數(shù)據(jù)計算之后持久化緩存
  • 數(shù)據(jù)調(diào)度彈性这敬,DAG TASK調(diào)度和資源無關(guān)
  • 數(shù)據(jù)分片的高度彈性航夺,a.分片很多碎片可以合并成大的,b.par

3. RDD有哪些缺陷崔涂?

  • 不支持細粒度的寫和更新操作(如網(wǎng)絡(luò)爬蟲)
    • spark寫數(shù)據(jù)是粗粒度的阳掐,所謂粗粒度,就是批量寫入數(shù)據(jù) (批量寫)
    • 但是讀數(shù)據(jù)是細粒度的也就是說可以一條條的讀 (一條條讀)
  • 不支持增量迭代計算,F(xiàn)link支持

4. 什么是RDD寬依賴和窄依賴锚烦?

  • RDD和它依賴的parent RDD(s)的關(guān)系有兩種不同的類型
    • 窄依賴:每一個parent RDD的Partition最多被子RDD的一個Partition使用 (一父一子)
    • 寬依賴:多個子RDD的Partition會依賴同一個parent RDD的Partition (一父多子)

Spark section-4 RDD操作(13)

**1. cache和pesist的區(qū)別 **

  • cache和persist都是用于緩存RDD觅闽,避免重復(fù)計算
  • .cache() == .persist(MEMORY_ONLY)

2. cache后面能不能接其他算子,它是不是action操作?

  • 可以接其他算子涮俄,但是接了算子之后蛉拙,起不到緩存應(yīng)有的效果,因為會重新觸發(fā)cache
  • cache不是action操作

3. 什么場景下要進行persist操作彻亲?
以下場景會使用persist

  • 某個步驟計算非常耗時或計算鏈條非常長孕锄,需要進行persist持久化
  • shuffle之后為什么要persist,shuffle要進性網(wǎng)絡(luò)傳輸苞尝,風險很大畸肆,數(shù)據(jù)丟失重來,恢復(fù)代價很大
  • shuffle之前進行persist宙址,框架默認將數(shù)據(jù)持久化到磁盤轴脐,這個是框架自動做的。

4. rdd有幾種操作類型抡砂?三種4笤邸!

  • transformation注益,rdd由一種轉(zhuǎn)為另一種rdd
  • action
  • cronroller碴巾,控制算子(cache/persist) 對性能和效率的有很好的支持

5. reduceByKey是不是action?

  • 不是丑搔,很多人都會以為是action厦瓢,reduce rdd是action

6. collect功能是什么,其底層是怎么實現(xiàn)的啤月?

  • driver通過collect把集群中各個節(jié)點的內(nèi)容收集過來匯總成結(jié)果
  • collect返回結(jié)果是Array類型的煮仇,合并后Array中只有一個元素,是tuple類型(KV類型的)的顽冶。

7. map與flatMap的區(qū)別

  • map:對RDD每個元素轉(zhuǎn)換欺抗,文件中的每一行數(shù)據(jù)返回一個數(shù)組對象
  • flatMap:對RDD每個元素轉(zhuǎn)換售碳,然后再扁平化强重,將所有的對象合并為一個對象,會拋棄值為null的值

8. 列舉你常用的action贸人?
collect间景,reduce,take,count,saveAsTextFile等

9. union操作是產(chǎn)生寬依賴還是窄依賴?

  • 窄依賴

10. Spark累加器有哪些特點艺智?

  • 全局的倘要,只增不減,記錄全局集群的唯一狀態(tài)
  • 在exe中修改它,在driver讀取
  • executor級別共享的封拧,廣播變量是task級別的共享
  • 兩個application不可以共享累加器志鹃,但是同一個app不同的job可以共享

11. spark hashParitioner的弊端

  • 分區(qū)原理:對于給定的key,計算其hashCode
  • 弊端是數(shù)據(jù)不均勻泽西,容易導(dǎo)致數(shù)據(jù)傾斜

12. RangePartitioner分區(qū)的原理

  • 盡量保證每個分區(qū)中數(shù)據(jù)量的均勻曹铃,而且分區(qū)與分區(qū)之間是有序的,也就是說一個分區(qū)中的元素肯定都是比另一個分區(qū)內(nèi)的元素小或者大
  • 分區(qū)內(nèi)的元素是不能保證順序的
  • 簡單的說就是將一定范圍內(nèi)的數(shù)映射到某一個分區(qū)內(nèi)

13. Spark中的HashShufle的有哪些不足捧杉?

  • shuffle產(chǎn)生海量的小文件在磁盤上陕见,此時會產(chǎn)生大量耗時的、低效的IO操作味抖;
  • 容易導(dǎo)致內(nèi)存不夠用评甜,由于內(nèi)存需要保存海量的文件操作句柄和臨時緩存信息
  • 容易出現(xiàn)數(shù)據(jù)傾斜,導(dǎo)致OOM

Spark section-5 大數(shù)據(jù)問題(7)

1. 如何使用Spark解決TopN問題仔涩?(互聯(lián)網(wǎng)公司常面)
https://blog.csdn.net/oopsoom/article/details/25815443

2. 如何使用Spark解決分組排序問題忍坷?(互聯(lián)網(wǎng)公司常面)
https://blog.csdn.net/huitoukest/article/details/51273143

3. 給定a、b兩個文件熔脂,各存放50億個url承匣,每個url各占64字節(jié),內(nèi)存限制是4G锤悄,讓你找出a韧骗、b文件共同的url?

  • 方案1:可以估計每個文件安的大小為5G×64=320G,遠遠大于內(nèi)存限制的4G零聚。所以不可能將其完全加載到內(nèi)存中處理袍暴。考慮采取分而治之的方法隶症。
    遍歷文件a政模,對每個url求取hash(url)%1000,然后根據(jù)所取得的值將url分別存儲到1000個小文件(記為a0,a1,…,a999)中蚂会。這樣每個小文件的大約為300M淋样。
    遍歷文件b,采取和a相同的方式將url分別存儲到1000小文件(記為b0,b1,…,b999)胁住。這樣處理后趁猴,所有可能相同的url都在對應(yīng)的小文件(a0vsb0,a1vsb1,…,a999vsb999)中,不對應(yīng)的小文件不可能有相同的url彪见。然后我們只要求出1000對小文件中相同的url即可儡司。
    求每對小文件中相同的url時,可以把其中一個小文件的url存儲到hash_set中余指。然后遍歷另一個小文件的每個url捕犬,看其是否在剛才構(gòu)建的hash_set中,如果是,那么就是共同的url碉碉,存到文件里面就可以了柴钻。
  • 方案2:如果允許有一定的錯誤率,可以使用Bloomfilter垢粮,4G內(nèi)存大概可以表示340億bit顿颅。將其中一個文件中的url使用Bloomfilter映射為這340億bit,然后挨個讀取另外一個文件的url足丢,檢查是否與Bloomfilter粱腻,如果是,那么該url應(yīng)該是共同的url(注意會有一定的錯誤率)斩跌。

4. 有一個1G大小的一個文件朴摊,里面每一行是一個詞恭朗,詞的大小不超過16字節(jié),內(nèi)存限制大小是1M,要求返回頻數(shù)最高的100個詞引润。

  • Step1:順序讀文件中吝镣,對于每個詞x烂叔,取hash(x)%5000隘截,然后按照該值存到5000個小文件(記為f0,f1,...,f4999)中,這樣每個文件大概是200k左右洛姑,如果其中的有的文件超過了1M大小上沐,還可以按照類似的方法繼續(xù)往下分,直到分解得到的小文件的大小都不超過1M;
  • Step2:對每個小文件楞艾,統(tǒng)計每個文件中出現(xiàn)的詞以及相應(yīng)的頻率(可以采用trie樹/hash_map等)参咙,并取出出現(xiàn)頻率最大的100個詞(可以用含100個結(jié)點的最小堆),并把100詞及相應(yīng)的頻率存入文件硫眯,這樣又得到了5000個文件;
  • Step3:把這5000個文件進行歸并(類似與歸并排序);

5. 現(xiàn)有海量日志數(shù)據(jù)保存在一個超級大的文件中蕴侧,該文件無法直接讀入內(nèi)存,要求從中提取某天出訪問百度次數(shù)最多的那個IP两入。
分而治之+Hash
1)IP地址最多有2^32=4G種取值情況净宵,所以不能完全加載到內(nèi)存中處理;
2)可以考慮采用“分而治之”的思想,按照IP地址的Hash(IP)%1024值裹纳,把海量IP日志分別存儲到1024個小文件中择葡。這樣,每個小文件最多包含4MB個IP地址;
3)對于每一個小文件痊夭,可以構(gòu)建一個IP為key刁岸,出現(xiàn)次數(shù)為value的Hashmap脏里,同時記錄當前出現(xiàn)次數(shù)最多的那個IP地址;
4)可以得到1024個小文件中的出現(xiàn)次數(shù)最多的IP她我,再依據(jù)常規(guī)的排序算法得到總體上出現(xiàn)次數(shù)最多的IP;

6. 在2.5億個整數(shù)中找出不重復(fù)的整數(shù),注,內(nèi)存不足以容納這2.5億個整數(shù)番舆。

  • 方案1:采用2-Bitmap(每個數(shù)分配2bit酝碳,00表示不存在,01表示出現(xiàn)一次恨狈,10表示多次疏哗,11無意義)進行,共需內(nèi)存2^32*2bit=1GB內(nèi)存禾怠,還可以接受返奉。然后掃描這2.5億個整數(shù),查看Bitmap中相對應(yīng)位吗氏,如果是00變01芽偏,01變10,10保持不變弦讽。所描完事后污尉,查看bitmap,把對應(yīng)位是01的整數(shù)輸出即可往产。
  • 方案2:也可采用與第1題類似的方法被碗,進行劃分小文件的方法。然后在小文件中找出不重復(fù)的整數(shù)仿村,并排序锐朴。然后再進行歸并,注意去除重復(fù)的元素蔼囊。

7. 騰訊面試題:給40億個不重復(fù)的unsignedint的整數(shù)包颁,沒排過序的,然后再給一個數(shù)压真,如何快速判斷這個數(shù)是否在那40億個數(shù)當中?

  • 申請512M的內(nèi)存娩嚼,一個bit位代表一個unsignedint值。讀入40億個數(shù)滴肿,設(shè)置相應(yīng)的bit位岳悟,讀入要查詢的數(shù),查看相應(yīng)bit位是否為1泼差,為1表示存在贵少,為0表示不存在。

Spark section-6 機器學(xué)習(xí)算法(4)

**1. mllib支持的算法堆缘? **

  • 分類滔灶、聚類、回歸吼肥、協(xié)同過濾

2. kmeans算法原理

  • 隨機初始化中心點范圍录平,計算各個類別的平均值得到新的中心點麻车。
  • 重新計算各個點到中心值的距離劃分,再次計算平均值得到新的中心點斗这,直至各個類別數(shù)據(jù)平均值無變化动猬。

3. 樸素貝葉斯分類算法原理
對于待分類的數(shù)據(jù)和分類項,根據(jù)待分類數(shù)據(jù)的各個特征屬性表箭,出現(xiàn)在各個分類項中的概率判斷該數(shù)據(jù)是屬于哪個類別的赁咙。

4. 關(guān)聯(lián)規(guī)則挖掘算法apriori原理

  • 一個頻繁項集的子集也是頻繁項集,針對數(shù)據(jù)得出每個產(chǎn)品的支持數(shù)列表免钻,過濾支持數(shù)小于預(yù)設(shè)值的項彼水,對剩下的項進行全排列,重新計算支持數(shù)极舔,再次過濾猿涨,重復(fù)至全排列結(jié)束,可得到頻繁項和對應(yīng)的支持數(shù)姆怪。

Spark section-7 Hive(2)

**1. Hive中存放是什么叛赚? **

  • 表(數(shù)據(jù)+元數(shù)據(jù)) 存的是和hdfs的映射關(guān)系,hive是邏輯上的數(shù)據(jù)倉庫稽揭,實際操作的都是hdfs上的文件俺附,HQL就是用sql語法來寫的mr程序。

**2. Hive與關(guān)系型數(shù)據(jù)庫的關(guān)系溪掀? **

  • 沒有關(guān)系事镣,hive是數(shù)據(jù)倉庫,不能和數(shù)據(jù)庫一樣進行實時的CURD操作揪胃。
  • 是一次寫入多次讀取的操作璃哟,可以看成是ETL工具。

Spark服務(wù)端口

  • 8080 spark集群web ui端口
  • 4040 sparkjob監(jiān)控端口
  • 18080 jobhistory端口

Spark Job 默認的調(diào)度模式 - FIFO
RDD 特點 - 可分區(qū)/可序列化/可持久化
Broadcast - 任何函數(shù)調(diào)用/是只讀的/存儲在各個節(jié)點
Accumulator - 支持加法/支持數(shù)值類型/可并行
Task 數(shù)量由 Partition 決定
Task 運行在 Workder node 中 Executor 上的工作單元
master 和 worker 通過 Akka 方式進行通信的
默認的存儲級別 - MEMORY_ONLY
hive 的元數(shù)據(jù)存儲在 derby 和 MySQL 中有什么區(qū)別 - 多會話
DataFrame 和 RDD 最大的區(qū)別 - 多了 schema

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末喊递,一起剝皮案震驚了整個濱河市随闪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌骚勘,老刑警劉巖铐伴,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異俏讹,居然都是意外死亡当宴,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門泽疆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來户矢,“玉大人,你說我怎么就攤上這事殉疼√堇耍” “怎么了捌年?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長驱证。 經(jīng)常有香客問我延窜,道長恋腕,這世上最難降的妖魔是什么抹锄? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮荠藤,結(jié)果婚禮上伙单,老公的妹妹穿的比我還像新娘。我一直安慰自己哈肖,他們只是感情好吻育,可當我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著淤井,像睡著了一般布疼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上币狠,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天游两,我揣著相機與錄音,去河邊找鬼漩绵。 笑死贱案,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的止吐。 我是一名探鬼主播宝踪,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼碍扔!你這毒婦竟也來了瘩燥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤不同,失蹤者是張志新(化名)和其女友劉穎颤芬,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體套鹅,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡站蝠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了卓鹿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片菱魔。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖吟孙,靈堂內(nèi)的尸體忽然破棺而出澜倦,到底是詐尸還是另有隱情聚蝶,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布藻治,位于F島的核電站碘勉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏桩卵。R本人自食惡果不足惜验靡,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望雏节。 院中可真熱鬧胜嗓,春花似錦、人聲如沸钩乍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寥粹。三九已至变过,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涝涤,已是汗流浹背媚狰。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留妄痪,地道東北人哈雏。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像衫生,于是被迫代替她去往敵國和親裳瘪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容