成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

spark Dstreams-數(shù)據(jù)源

IT那活兒 / 1515人閱讀
spark Dstreams-數(shù)據(jù)源

點(diǎn)擊上方“IT那活兒”,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了?。?!


01


基本數(shù)據(jù)源


1.1 文件數(shù)據(jù)源
Spark Streaming會(huì)監(jiān)控你指定的目錄下的任何文件。
  • 一個(gè)目錄會(huì)被監(jiān)控,像hdfs://namenode:8040/logs,目錄中的所有文件會(huì)被發(fā)現(xiàn)并處理。
  • 全局模式應(yīng)用,像hdfs://namenode:8040/logs/2017/*,這樣spark streaming會(huì)監(jiān)控所有匹配的目錄下的文件。
  • 所有文件必須是相同格式文件。
  • 文件會(huì)被當(dāng)作時(shí)間段的一部分根據(jù)修改時(shí)間而不是創(chuàng)建時(shí)間。
  • 文件被讀取處理后,如果對(duì)文件又進(jìn)行了修改,不會(huì)導(dǎo)致spark streaming重新讀取文件,即忽略更新。
  • 就算沒有修改任何文件,目錄下文件數(shù)量越多,掃描的時(shí)間就越長。
  • 如果使用通配符標(biāo)識(shí)監(jiān)控目錄,重命名目錄名稱以匹配通配符,只有目錄中修改時(shí)間當(dāng)前窗口內(nèi)的文件才會(huì)包含在流中。
  • 調(diào)用FileSystem.setTimes()來修復(fù)時(shí)間戳是在以后的窗口中攝取文件的一種方法,盡管其內(nèi)容未修改。
1.2 對(duì)象存儲(chǔ)數(shù)據(jù)源
文件系統(tǒng)(像HDFS)傾向于在創(chuàng)建輸出流后立即對(duì)其文件設(shè)置修改時(shí)間,當(dāng)文件打開時(shí),數(shù)據(jù)被完全寫入之前,他可能會(huì)被包括在數(shù)據(jù)流中,之后再對(duì)文件的更新將被忽略,也就是說更新可能會(huì)丟失數(shù)據(jù)。
要保證在窗口中獲取更新,請(qǐng)將文件寫入未被監(jiān)控的目錄,然后再輸出流關(guān)閉后立即將其重名為目標(biāo)目錄, 則將攝取新數(shù)據(jù)。
對(duì)比之下,對(duì)象存儲(chǔ)(例如S3,Azure)通常具有緩慢的重命名操作,因?yàn)閿?shù)據(jù)實(shí)際上是復(fù)制的,此外,重命名的對(duì)象可能將rename()操作的時(shí)間作為其修改時(shí)間,因此可能不會(huì)被視為原始創(chuàng)建時(shí)間所暗示的窗口的一部分。
需要對(duì)目標(biāo)對(duì)象存儲(chǔ)進(jìn)行仔細(xì)測試,以驗(yàn)證存儲(chǔ)的時(shí)間戳行為是否與saprk streaming所預(yù)期的一致,直接寫入目標(biāo)目錄可能是通過所選對(duì)象存儲(chǔ)進(jìn)行數(shù)據(jù)流傳輸?shù)暮线m策略。
1.3 通過RDD創(chuàng)建DStream
為了用于測試,用戶可以通過一系列RDD創(chuàng)建DStream,每一個(gè)加入到隊(duì)列中的RDD將會(huì)被看成是DStream的a batch。


02


高級(jí)數(shù)據(jù)源


類源需要與外部非Spark庫接口,其中一些庫具有復(fù)雜的依賴關(guān)系(例如Kafka)。
因此,為了盡量減少與依賴項(xiàng)的版本沖突相關(guān)的問題,從這些源創(chuàng)建數(shù)據(jù)流的功能已轉(zhuǎn)移到多帶帶的庫中,必要時(shí)可以顯式鏈接到這些庫。
請(qǐng)注意,Spark shell中沒有這些高級(jí)源,因此無法在shell中測試基于這些高級(jí)源的應(yīng)用程序。如果您真的想在Spark shell中使用它們,那么您必須下載相應(yīng)的Maven工件的JAR及其依賴項(xiàng),并將其添加到類路徑中。


03


自定義數(shù)據(jù)源


可以從自定義數(shù)據(jù)源中創(chuàng)建輸入數(shù)據(jù)流。您所要做的就是實(shí)現(xiàn)一個(gè)用戶定義的接收器(receiver ),它可以從自定義源接收數(shù)據(jù)并將其推入Spark。
3.1 實(shí)現(xiàn)自定義接收器
自定義接收器必須實(shí)現(xiàn)Receiver類并實(shí)現(xiàn)其兩個(gè)方法:
  • onStart():開始接收數(shù)據(jù)需要做的事情;

  • onStop():停止接收數(shù)據(jù)需要做的事情。

onStart()、onStop()都不能無限期阻塞,通常的,onStart()將啟動(dòng)負(fù)責(zé)接收數(shù)據(jù)的線程,onStop()將確保停止接收數(shù)據(jù)的線程,接收數(shù)據(jù)線程還可以使用isStopped()來檢查他們是否應(yīng)該停止接收數(shù)據(jù)。
一旦接收到數(shù)據(jù)就可以調(diào)用store()方法將數(shù)據(jù)存儲(chǔ)在spark中,store(data)是Receiver提供的一種方法,store()有多種風(fēng)格,允許一次存儲(chǔ)一條接收到的數(shù)據(jù)記錄,或作為對(duì)象/序列化字節(jié)的整個(gè)集合。
請(qǐng)注意,用于實(shí)現(xiàn)接收器的store()的風(fēng)格會(huì)影響其可靠性和容錯(cuò)語義。應(yīng)捕獲并正確處理接收線程中的任何異常,以避免接收器的無聲故障。restart()將通過異步調(diào)用onStop()然后在延遲后調(diào)用onStart()來重新啟動(dòng)接收器。stop()將調(diào)用onStop()并終止接收器。
此外,reportError()會(huì)向驅(qū)動(dòng)程序報(bào)告錯(cuò)誤消息(在日志和UI中可見),而無需停止/重新啟動(dòng)接收器。
以下是通過套接字接收文本流的自定義接收器。它將文本流中的“ ”分隔行視為記錄,并使用Spark存儲(chǔ)它們。如果接收線程在連接或接收時(shí)出錯(cuò),則重新啟動(dòng)接收器以再次嘗試連接。
在spark streaming中使用自定義Receiver:
3.2 接收器可靠性
正如Spark Streaming編程指南中簡要討論的,基于可靠性和容錯(cuò)語義,有兩種接收器:
  • 可靠接收器-對(duì)于允許確認(rèn)發(fā)送數(shù)據(jù)的可靠源,可靠接收器正確地向源確認(rèn)數(shù)據(jù)已可靠地接收并存儲(chǔ)在Spark中(即成功復(fù)制)。通常,實(shí)現(xiàn)此接收器需要仔細(xì)考慮源確認(rèn)的語義。
  • 不可靠接收器-不可靠接收器不向源發(fā)送確認(rèn)。
要實(shí)現(xiàn)可靠的接收器,必須使用存儲(chǔ)(多條記錄)來存儲(chǔ)數(shù)據(jù)。這種風(fēng)格的存儲(chǔ)是一個(gè)阻塞調(diào)用,只有在所有給定的記錄都存儲(chǔ)在Spark中之后才會(huì)返回。如果接收器配置的存儲(chǔ)級(jí)別使用復(fù)制(默認(rèn)情況下已啟用),則此調(diào)用將在復(fù)制完成后返回。因此,它確保數(shù)據(jù)被可靠地存儲(chǔ),并且接收器現(xiàn)在可以適當(dāng)?shù)卮_認(rèn)源。這確保當(dāng)接收器在復(fù)制數(shù)據(jù)中間失敗時(shí),沒有數(shù)據(jù)丟失——緩沖的數(shù)據(jù)將不被確認(rèn)。
不可靠的接收器不必實(shí)現(xiàn)任何這種邏輯。它可以簡單地從源接收記錄,并使用store(single record)一次插入一條記錄。雖然它沒有得到存儲(chǔ)(多個(gè)記錄)的可靠性保證,但是更容易實(shí)現(xiàn)。
下表總結(jié)了這兩種接收機(jī)的特性:




本文作者:潘宗昊

本文來源:IT那活兒(上海新炬王翦團(tuán)隊(duì))

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/129612.html

相關(guān)文章

  • SparkStreaming概述

    摘要:但在企業(yè)中存在很多實(shí)時(shí)性處理的需求,例如雙十一的京東阿里,通常會(huì)做一個(gè)實(shí)時(shí)的數(shù)據(jù)大屏,顯示實(shí)時(shí)訂單。這種情況下,對(duì)數(shù)據(jù)實(shí)時(shí)性要求較高,僅僅能夠容忍到延遲分鐘或幾秒鐘。1 Spark Streaming是什么它是一個(gè)可擴(kuò)展,高吞吐具有容錯(cuò)性的流式計(jì)算框架吞吐量:單位時(shí)間內(nèi)成功傳輸數(shù)據(jù)的數(shù)量之前我們接觸的spark-core和spark-sql都是處理屬于離線批處理任務(wù),數(shù)據(jù)一般都是在固定位置上...

    Tecode 評(píng)論0 收藏0
  • Spark Streaming學(xué)習(xí)筆記

    摘要:輸入和接收器輸入代表從某種流式數(shù)據(jù)源流入的數(shù)據(jù)流。文件數(shù)據(jù)流可以從任何兼容包括等的文件系統(tǒng),創(chuàng)建方式如下將監(jiān)視該目錄,并處理該目錄下任何新建的文件目前還不支持嵌套目錄。會(huì)被一個(gè)個(gè)依次推入隊(duì)列,而則會(huì)依次以數(shù)據(jù)流形式處理這些的數(shù)據(jù)。 特點(diǎn): Spark Streaming能夠?qū)崿F(xiàn)對(duì)實(shí)時(shí)數(shù)據(jù)流的流式處理,并具有很好的可擴(kuò)展性、高吞吐量和容錯(cuò)性。 Spark Streaming支持從多種數(shù)...

    陸斌 評(píng)論0 收藏0
  • Spark 快速入門

    摘要:數(shù)據(jù)科學(xué)任務(wù)主要是數(shù)據(jù)分析領(lǐng)域,數(shù)據(jù)科學(xué)家要負(fù)責(zé)分析數(shù)據(jù)并建模,具備統(tǒng)計(jì)預(yù)測建模機(jī)器學(xué)習(xí)等方面的經(jīng)驗(yàn),以及一定的使用或語言進(jìn)行編程的能力。監(jiān)控運(yùn)行時(shí)性能指標(biāo)信息。 Spark Spark 背景 什么是 Spark 官網(wǎng):http://spark.apache.org Spark是一種快速、通用、可擴(kuò)展的大數(shù)據(jù)分析引擎,2009年誕生于加州大學(xué)伯克利分校AMPLab,2010年開源,20...

    wangshijun 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<