成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

大數(shù)據(jù)有道之spark選擇去重

存儲(chǔ) 數(shù)據(jù)管理 大數(shù)據(jù) Spark
spark是基于內(nèi)存運(yùn)算的大數(shù)據(jù)分布式并行計(jì)算框架,本身具有豐富的API,可實(shí)現(xiàn)與HDFS、HBase、Hive、Kafka、Elasticsearch、Druid等組件的交互,同時(shí)也是優(yōu)秀的MapReduce替代方案。

 一.spark簡介

spark是基于內(nèi)存運(yùn)算的大數(shù)據(jù)分布式并行計(jì)算框架,本身具有豐富的API,可實(shí)現(xiàn)與HDFS、HBase、Hive、Kafka、Elasticsearch、Druid等組件的交互,同時(shí)也是優(yōu)秀的MapReduce替代方案。

spark卓越的計(jì)算性能得意于其核心的分布式數(shù)據(jù)架構(gòu):RDD和DataFrame。

1、RDD

RDD(Resilient Distributes Dataset), 是spark中最基礎(chǔ)、最常用的數(shù)據(jù)結(jié)構(gòu)。其本身封裝了作業(yè)中input data數(shù)據(jù),并以分區(qū)方式分布在內(nèi)存或者磁盤上的Block中。但實(shí)質(zhì)上RDD對(duì)象是一個(gè)元數(shù)據(jù)結(jié)構(gòu),存儲(chǔ)著Block、Node映射關(guān)系等元數(shù)據(jù)信息。

RDD常規(guī)去重算子:

2、DataFrame

DataFrame是一種以RDD為基礎(chǔ)的分布式數(shù)據(jù)集,具有schema元數(shù)據(jù)信息,即標(biāo)注了DataFrame中每一列名稱和類型,能夠大幅提升Transform、Action的計(jì)算效率。

DataFrame常規(guī)去重算子:

3、RDD與DataFrame對(duì)比

二.選擇去重

接下來,大數(shù)據(jù)有道將和大家一起學(xué)習(xí)一下spark RDD和DataFrame選擇去重的技巧。

1、原始數(shù)據(jù)

江南皮革廠訂單數(shù)據(jù)(input),需要指出“original_price”和real_pay對(duì)應(yīng)double類型、“create_time”和“modify_time”為long類型。

源數(shù)據(jù)預(yù)處理:

為了方便對(duì)每條訂單進(jìn)行提取和計(jì)算,作業(yè)中封裝了訂單對(duì)象RiveSouthOrder:

2、RDD選擇去重

a.選擇去重代碼(scala):

b.執(zhí)行日志:

c.計(jì)算結(jié)果:

d.邏輯解析:

***部分,加載源數(shù)據(jù)并封裝到RiveSouthOrder樣例類中,生成RDD;

第二部分,首先通過groupBy對(duì)order_id數(shù)據(jù)做分組后生成RDD[(String, Iterable[RiveSouthOrder])]對(duì)象([K,V]結(jié)構(gòu)),隨即使用map對(duì)每個(gè)Key(order_id)下多組記錄(Iterable[RiveSouthOrder])進(jìn)行reduce操作(maxBy),***在maxBy算子傳入一個(gè)字面量函數(shù)(也可寫為x=>x.modify_time),即提取該order_id下每條記錄中的modify_time進(jìn)行比對(duì),然后選出***時(shí)間記錄(maxBy為高階函數(shù),依賴reduceLeft實(shí)現(xiàn));

第三部分,toDebugString方法打印RDD轉(zhuǎn)換過程,***值得注意collect才是真正觸發(fā)一系列運(yùn)算的源頭。

3、DataFrame選擇去重

a.選擇去重代碼(scala):

b.執(zhí)行日志:

c.計(jì)算結(jié)果:

d.邏輯解析:

***部分,引入依賴和隱式轉(zhuǎn)換,分別對(duì)應(yīng)DataFrame類型識(shí)別、使用sql格式的$"modify_time"和row_number()+Window()函數(shù)的使用;

第二部分,加載源數(shù)據(jù),由于源數(shù)據(jù)由RiveSouthOrder封裝,可直接toDF;

第三部分,首先使用withColumn方法添加Num字段,Num是由row_number()+Window()+orderBy()實(shí)現(xiàn)(原理同Hive sql),原則是根據(jù)modify_time對(duì)每個(gè)order_id分區(qū)下的訂單進(jìn)行降序排序,接著使用where做過濾(也可使用filter),***drop掉不再使用的Num字段;

第四部分,通過explain打印dataFrame的物理執(zhí)行過程,show方法作為action算子觸發(fā)了以上的系列運(yùn)算。

三.歸納總結(jié)

spark RDD和DataFrame均提供了豐富的API接口,極大的提升了開發(fā)效率和計(jì)算性能;

RDD的計(jì)算更傾向于map和reduce方式,而DataFrame含有schema元信息更容易與sql計(jì)算方式相結(jié)合;

RDD選擇去重使用了groupBy+maxBy方法,一氣呵成;DataFrame則使用row_number+window+orderBy方法,邏輯清晰;兩者處理方式所展現(xiàn)的spark函數(shù)式編程的精妙之處都值得探索和學(xué)習(xí)。

 

責(zé)任編輯:武曉燕 來源: 大數(shù)據(jù)有道
相關(guān)推薦

2014-07-08 11:28:42

NetBackupBackup Exec賽門鐵克

2020-10-28 15:06:12

大數(shù)據(jù)科技技術(shù)

2019-07-22 10:45:31

2015-03-16 13:49:27

大數(shù)據(jù)大數(shù)據(jù)誤區(qū)大數(shù)據(jù)錯(cuò)誤

2019-04-08 17:11:46

大數(shù)據(jù)框架Spark

2013-09-02 10:14:27

2022-04-10 23:10:13

大數(shù)據(jù)網(wǎng)絡(luò)安全云平臺(tái)

2014-05-28 10:16:11

2018-01-22 08:33:28

SparkHadoop計(jì)算

2011-03-01 10:47:20

開源技術(shù)

2017-04-24 12:07:44

Spark大數(shù)據(jù)并行計(jì)算

2022-07-20 15:10:38

Docker大數(shù)據(jù)平臺(tái)

2017-10-11 11:10:02

Spark Strea大數(shù)據(jù)流式處理

2023-09-07 13:32:00

MySQL數(shù)據(jù)庫

2021-04-21 08:46:19

大數(shù)據(jù)大數(shù)據(jù)技術(shù)

2015-09-16 14:11:47

2015-09-10 09:27:56

大數(shù)據(jù)足球

2014-09-01 10:36:35

個(gè)推推送

2016-11-30 09:36:43

大數(shù)據(jù)能源行業(yè)供熱

2018-02-23 13:17:21

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产免费一区二区 | 日韩在线免费视频 | 蜜月aⅴ免费一区二区三区 99re在线视频 | 国产精品性做久久久久久 | 日韩精品一区二区三区中文在线 | 1000部精品久久久久久久久 | 欧美综合在线观看 | 亚洲午夜精品 | 欧洲一区在线观看 | 欧美国产日本一区 | 超级黄色一级片 | 日本不卡高字幕在线2019 | 日本国产精品视频 | 免费在线黄色av | 中文字幕亚洲国产 | 农村黄性色生活片 | 91中文| 久久久成人免费视频 | 欧美欧美欧美 | 国产高清视频一区二区 | 日韩精品视频一区二区三区 | 日本网站免费在线观看 | 午夜在线影院 | 久久国内 | 国产三级大片 | 午夜精品一区二区三区在线视频 | 欧美午夜一区二区三区免费大片 | 亚洲一区欧美 | 亚洲欧美日韩久久 | 欧美一区二区在线 | 国产成人精品在线 | 中文在线一区二区 | 91精品国产综合久久久久久丝袜 | 91精品国产91久久久久游泳池 | 亚洲交性 | 欧美在线一区二区三区 | 久草网址 | 久久免费视频1 | 久久最新 | 免费激情| 欧美在线一区二区三区 |