最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Spark進(jìn)行實(shí)時(shí)流計(jì)算的方法

 更新時(shí)間:2020年08月04日 09:11:02   作者:獨(dú)孤風(fēng)  
這篇文章主要介紹了用Spark進(jìn)行實(shí)時(shí)流計(jì)算的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

Spark Streaming VS Structured Streaming

Spark Streaming是Spark最初的流處理框架,使用了微批的形式來(lái)進(jìn)行流處理。

提供了基于RDDs的Dstream API,每個(gè)時(shí)間間隔內(nèi)的數(shù)據(jù)為一個(gè)RDD,源源不斷對(duì)RDD進(jìn)行處理來(lái)實(shí)現(xiàn)流計(jì)算

Apache Spark 在 2016 年的時(shí)候啟動(dòng)了 Structured Streaming 項(xiàng)目,一個(gè)基于 Spark SQL 的全新流計(jì)算引擎 Structured Streaming,讓用戶像編寫(xiě)批處理程序一樣簡(jiǎn)單地編寫(xiě)高性能的流處理程序。

Structured Streaming是Spark2.0版本提出的新的實(shí)時(shí)流框架(2.0和2.1是實(shí)驗(yàn)版本,從Spark2.2開(kāi)始為穩(wěn)定版本)

從Spark-2.X版本后,Spark Streaming就進(jìn)入維護(hù)模式,看見(jiàn)Spark已經(jīng)將大部分精力投入到了全新的Structured Streaming中,而一些新特性也只有Structured Streaming才有,這樣Spark才有了與Flink一戰(zhàn)的能力。

1、Spark Streaming 不足

Processing Time 而不是 Event Time

首先解釋一下,Processing Time 是數(shù)據(jù)到達(dá) Spark 被處理的時(shí)間,而 Event Time 是數(shù)據(jù)自帶的屬性,一般表示數(shù)據(jù)產(chǎn)生于數(shù)據(jù)源的時(shí)間。比如 IoT 中,傳感器在 12:00:00 產(chǎn)生一條數(shù)據(jù),然后在 12:00:05 數(shù)據(jù)傳送到 Spark,那么 Event Time 就是 12:00:00,而 Processing Time 就是 12:00:05。我們知道 Spark Streaming 是基于 DStream 模型的 micro-batch 模式,簡(jiǎn)單來(lái)說(shuō)就是將一個(gè)微小時(shí)間段,比如說(shuō) 1s,的流數(shù)據(jù)當(dāng)前批數(shù)據(jù)來(lái)處理。如果我們要統(tǒng)計(jì)某個(gè)時(shí)間段的一些數(shù)據(jù)統(tǒng)計(jì),毫無(wú)疑問(wèn)應(yīng)該使用 Event Time,但是因?yàn)?Spark Streaming 的數(shù)據(jù)切割是基于 Processing Time,這樣就導(dǎo)致使用 Event Time 特別的困難。

Complex, low-level api

這點(diǎn)比較好理解,DStream (Spark Streaming 的數(shù)據(jù)模型)提供的 API 類似 RDD 的 API 的,非常的 low level。當(dāng)我們編寫(xiě) Spark Streaming 程序的時(shí)候,本質(zhì)上就是要去構(gòu)造 RDD 的 DAG 執(zhí)行圖,然后通過(guò) Spark Engine 運(yùn)行。這樣導(dǎo)致一個(gè)問(wèn)題是,DAG 可能會(huì)因?yàn)殚_(kāi)發(fā)者的水平參差不齊而導(dǎo)致執(zhí)行效率上的天壤之別。這樣導(dǎo)致開(kāi)發(fā)者的體驗(yàn)非常不好,也是任何一個(gè)基礎(chǔ)框架不想看到的(基礎(chǔ)框架的口號(hào)一般都是:你們專注于自己的業(yè)務(wù)邏輯就好,其他的交給我)。這也是很多基礎(chǔ)系統(tǒng)強(qiáng)調(diào) Declarative 的一個(gè)原因。

reason about end-to-end application

這里的 end-to-end 指的是直接 input 到 out,比如 Kafka 接入 Spark Streaming 然后再導(dǎo)出到 HDFS 中。DStream 只能保證自己的一致性語(yǔ)義是 exactly-once 的,而 input 接入 Spark Streaming 和 Spark Straming 輸出到外部存儲(chǔ)的語(yǔ)義往往需要用戶自己來(lái)保證。而這個(gè)語(yǔ)義保證寫(xiě)起來(lái)也是非常有挑戰(zhàn)性,比如為了保證 output 的語(yǔ)義是 exactly-once 語(yǔ)義需要 output 的存儲(chǔ)系統(tǒng)具有冪等的特性,或者支持事務(wù)性寫(xiě)入,這個(gè)對(duì)于開(kāi)發(fā)者來(lái)說(shuō)都不是一件容易的事情。

批流代碼不統(tǒng)一

盡管批流本是兩套系統(tǒng),但是這兩套系統(tǒng)統(tǒng)一起來(lái)確實(shí)很有必要,我們有時(shí)候確實(shí)需要將我們的流處理邏輯運(yùn)行到批數(shù)據(jù)上面。關(guān)于這一點(diǎn),最早在 2014 年 Google 提出 Dataflow 計(jì)算服務(wù)的時(shí)候就批判了 streaming/batch 這種叫法,而是提出了 unbounded/bounded data 的說(shuō)法。DStream 盡管是對(duì) RDD 的封裝,但是我們要將 DStream 代碼完全轉(zhuǎn)換成 RDD 還是有一點(diǎn)工作量的,更何況現(xiàn)在 Spark 的批處理都用 DataSet/DataFrame API 了。

2.、Structured Streaming 優(yōu)勢(shì)

相對(duì)的,來(lái)看下Structured Streaming優(yōu)勢(shì):

  • 簡(jiǎn)潔的模型。Structured Streaming 的模型很簡(jiǎn)潔,易于理解。用戶可以直接把一個(gè)流想象成是無(wú)限增長(zhǎng)的表格。
  • 一致的 API。由于和 Spark SQL 共用大部分 API,對(duì) Spaprk SQL 熟悉的用戶很容易上手,代碼也十分簡(jiǎn)潔。同時(shí)批處理和流處理程序還可以共用代碼,不需要開(kāi)發(fā)兩套不同的代碼,顯著提高了開(kāi)發(fā)效率。
  • 卓越的性能。Structured Streaming 在與 Spark SQL 共用 API 的同時(shí),也直接使用了 Spark SQL 的 Catalyst 優(yōu)化器和 Tungsten,數(shù)據(jù)處理性能十分出色。此外,Structured Streaming 還可以直接從未來(lái) Spark SQL 的各種性能優(yōu)化中受益。
  • 多語(yǔ)言支持。Structured Streaming 直接支持目前 Spark SQL 支持的語(yǔ)言,包括 Scala,Java,Python,R 和 SQL。用戶可以選擇自己喜歡的語(yǔ)言進(jìn)行開(kāi)發(fā)。
  • 同樣能支持多種數(shù)據(jù)源的輸入和輸出,Kafka、flume、Socket、Json。
  • 基于Event-Time,相比于Spark Streaming的Processing-Time更精確,更符合業(yè)務(wù)場(chǎng)景。
  • Event time 事件時(shí)間: 就是數(shù)據(jù)真正發(fā)生的時(shí)間,比如用戶瀏覽了一個(gè)頁(yè)面可能會(huì)產(chǎn)生一條用戶的該時(shí)間點(diǎn)的瀏覽日志。
  • Process time 處理時(shí)間: 則是這條日志數(shù)據(jù)真正到達(dá)計(jì)算框架中被處理的時(shí)間點(diǎn),簡(jiǎn)單的說(shuō),就是你的Spark程序是什么時(shí)候讀到這條日志的。
  • 事件時(shí)間是嵌入在數(shù)據(jù)本身中的時(shí)間。對(duì)于許多應(yīng)用程序,用戶可能希望在此事件時(shí)間操作。例如,如果要獲取IoT設(shè)備每分鐘生成的事件數(shù),則可能需要使用生成數(shù)據(jù)的時(shí)間(即數(shù)據(jù)中的事件時(shí)間),而不是Spark接收他們的時(shí)間。事件時(shí)間在此模型中非常自然地表示 - 來(lái)自設(shè)備的每個(gè)事件都是表中的一行,事件時(shí)間是該行中的一個(gè)列值。
  • 支持spark2的dataframe處理。
  • 解決了Spark Streaming存在的代碼升級(jí),DAG圖變化引起的任務(wù)失敗,無(wú)法斷點(diǎn)續(xù)傳的問(wèn)題。
  • 基于SparkSQL構(gòu)建的可擴(kuò)展和容錯(cuò)的流式數(shù)據(jù)處理引擎,使得實(shí)時(shí)流式數(shù)據(jù)計(jì)算可以和離線計(jì)算采用相同的處理方式(DataFrame&SQL)。
  • 可以使用與靜態(tài)數(shù)據(jù)批處理計(jì)算相同的方式來(lái)表達(dá)流計(jì)算。

底層原理完全不同

Spark Streaming采用微批的處理方法。每一個(gè)批處理間隔的為一個(gè)批,也就是一個(gè)RDD,我們對(duì)RDD進(jìn)行操作就可以源源不斷的接收、處理數(shù)據(jù)。

Structured Streaming將實(shí)時(shí)數(shù)據(jù)當(dāng)做被連續(xù)追加的表。流上的每一條數(shù)據(jù)都類似于將一行新數(shù)據(jù)添加到表中。

Spark 3.0.0發(fā)布以后 全新的Structured Streaming UI誕生,可見(jiàn)未來(lái)的Structured Streaming將不斷迎來(lái)進(jìn)步。

總結(jié)

到此這篇關(guān)于使用Spark進(jìn)行實(shí)時(shí)流計(jì)算的方法的文章就介紹到這了,更多相關(guān)Spark實(shí)時(shí)流計(jì)算內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • GBK字符編碼(字符集)缺陷導(dǎo)致web安全漏洞

    GBK字符編碼(字符集)缺陷導(dǎo)致web安全漏洞

    很多時(shí)候,一個(gè)web站點(diǎn),選擇什么樣的字符編碼,我們不會(huì)太過(guò)在意的。象中文網(wǎng)站,我們一般用gb2312,gbk,gb18030,也可以用utf-8。但是,可能我們不知道,選擇不同編碼,可能因此導(dǎo)致程序本身設(shè)計(jì)缺陷
    2016-06-06
  • 各種語(yǔ)言常用的一句話判斷代碼

    各種語(yǔ)言常用的一句話判斷代碼

    提供各種語(yǔ)言常用的一句話判斷代碼:一句話就能判斷是不是含有中文、一句話就能判斷是不是純數(shù)字、一句話就能判斷是不是閏年、一句話就能判斷記錄分多少頁(yè)
    2013-03-03
  • Markdown語(yǔ)法手冊(cè)—完整筆記整理

    Markdown語(yǔ)法手冊(cè)—完整筆記整理

    Markdown是一種輕量級(jí)標(biāo)記語(yǔ)言,創(chuàng)始人為約翰·格魯伯(John?Gruber),?它允許人們使用易讀易寫(xiě)的純文本格式編寫(xiě)文檔,然后轉(zhuǎn)換成有效的?XHTML(或者HTML)文檔,由于Markdown的輕量化、易讀易寫(xiě)特性,并且對(duì)于圖片,圖表、數(shù)學(xué)式都有支持,許多網(wǎng)站都廣泛使用Markdown
    2024-08-08
  • Hadoop 分布式存儲(chǔ)系統(tǒng) HDFS的實(shí)例詳解

    Hadoop 分布式存儲(chǔ)系統(tǒng) HDFS的實(shí)例詳解

    HDFS是Hadoop Distribute File System 的簡(jiǎn)稱,也就是Hadoop的一個(gè)分布式文件系統(tǒng)。這篇文章主要介紹了Hadoop 分布式存儲(chǔ)系統(tǒng) HDFS,需要的朋友可以參考下
    2019-06-06
  • ceph集群RadosGW對(duì)象存儲(chǔ)使用詳解

    ceph集群RadosGW對(duì)象存儲(chǔ)使用詳解

    這篇文章主要為大家介紹了ceph集群RadosGW對(duì)象存儲(chǔ)使用詳解,有需要的,朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • GitHub 熱門(mén):別再用 print 輸出來(lái)調(diào)試代碼了

    GitHub 熱門(mén):別再用 print 輸出來(lái)調(diào)試代碼了

    本文給大家分享GitHub 熱門(mén):別再用 print 輸出來(lái)調(diào)試代碼了的詳細(xì)解說(shuō),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • 微信公眾平臺(tái)開(kāi)發(fā)——群發(fā)信息

    微信公眾平臺(tái)開(kāi)發(fā)——群發(fā)信息

    本文主要介紹微信公眾平臺(tái)開(kāi)發(fā)群發(fā)信息,這里整理了詳細(xì)的資料來(lái)說(shuō)明微信公共平臺(tái)群發(fā)信息的流程,有需要的小伙伴可以參考下
    2016-09-09
  • 詳解Hadoop 運(yùn)行環(huán)境搭建過(guò)程

    詳解Hadoop 運(yùn)行環(huán)境搭建過(guò)程

    這篇文章主要介紹了Hadoop 運(yùn)行環(huán)境搭建過(guò)程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • Git基礎(chǔ)之git與SVN版本控制優(yōu)缺點(diǎn)區(qū)別分析

    Git基礎(chǔ)之git與SVN版本控制優(yōu)缺點(diǎn)區(qū)別分析

    這篇文章主要為大家介紹了Git基礎(chǔ)之git與SVN優(yōu)缺點(diǎn)及區(qū)別分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • 細(xì)說(shuō)ASCII、GB2312/GBK/GB18030、Unicode、UTF-8/UTF-16/UTF-32編碼

    細(xì)說(shuō)ASCII、GB2312/GBK/GB18030、Unicode、UTF-8/UTF-16/UTF-32編碼

    本文主要介紹了細(xì)說(shuō)ASCII、GB2312/GBK/GB18030、Unicode、UTF-8/UTF-16/UTF-32編碼,詳細(xì)的介紹了這些編碼的知識(shí),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09

最新評(píng)論

阳曲县| 太康县| 得荣县| 哈密市| 临漳县| 曲阳县| 桃园县| 石阡县| 兰考县| 安庆市| 汾西县| 平罗县| 兴宁市| 句容市| 阿勒泰市| 酒泉市| 卢氏县| 晋中市| 岳阳市| 徐汇区| 辽阳县| 盐边县| 阿鲁科尔沁旗| 天气| 梅州市| 正定县| 台州市| 洛南县| 鲜城| 德州市| 乐昌市| 隆化县| 林西县| 崇阳县| 澜沧| 呼伦贝尔市| 合肥市| 西平县| 石首市| 姚安县| 龙里县|