導航:首頁 > 數據分析 > 非流式數據有哪些

非流式數據有哪些

發布時間:2024-06-03 01:03:12

① 流式計算與批量計算有什麼區別

大數據的計算模式主要分為批量計算(batch computing)、流式計算(stream computing)、交互計算(interactive computing)、圖計算(graph computing)等。其中,流式計算和批量計算是兩種主要的大數據計算模式,分別適用於不同的大數據應用場景。

流數據(或數據流)是指在時間分布和數量上無限的一系列動態數據集合體,數據的價值隨著時間的流逝而降低,因此必須實時計算給出秒級響應。流式計算,顧名思義,就是對數據流進行處理,是實時計算。

批量計算則統一收集數據,存儲到資料庫中,然後對數據進行批量處理的數據計算方式。主要體現在以下幾個方面:

1、數據時效性不同:流式計算實時、低延遲, 批量計算非實時、高延遲。

2、數據特徵不同:流式計算的數據一般是動態的、沒有邊界的,而批處理的數據一般則是靜態數據。

3、應用場景不同:流式計算應用在實時場景,時效性要求比較高的場景,如實時推薦、業務監控...批量計算一般說批處理,應用在實時性要求不高、離線計算的場景下,數據分析、離線報表等。

4、運行方式不同,流式計算的任務持續進行的,批量計算的任務則一次性完成。

② PHP流(Stream)的概述與使用詳解

在現代 PHP 特性中,流或許是最出色但使用率最低的。雖然 PHP 4.3 就引入了流,但是很多開發者並不知道流的存在,因為人們很少提及流,而且流的文檔也很匱乏。PHP 官方文檔對流的解釋如下:

可能看完這段解釋後還是雲里霧里,我們簡化一下,流的作用是在出發地和目的地之間傳輸數據。出發地和目的地可以是文件、命令行進程、網路連接、ZIP 或 TAR 壓縮文件、臨時內存、標准輸入或輸出,或者是通過 PHP 流封裝協議實現的任何其他資源。

如果你讀寫過文件,就用過流;如果你從 php://stdin 讀取過數據,或者把輸入寫入 php://stdout ,也用過流。流為 PHP 的很多 IO 函數提供了底層實現,如 file_get_contents、fopn、fread 和 fwrite 等。PHP 的流函數提供了不同資源的統一介面。

我們可以把流比作管道,把水(資源數據)從一個地方引到另一個地方。在水從出發地到目的地的過程中,我們可以過濾水,可以改變水質,可以添加水,也可以排出水。

流式數據的種類各異,每種類型需要獨特的協議,以便讀寫數據,我們稱這些協議為 流封裝協議 。例如,我們可以讀寫文件系統,可以通過 HTTP、HTTPS 或 SSH 與遠程 Web 伺服器通信,還可以打開並讀寫 ZIP、RAR 或 PHAR 壓縮文件。這些通信方式都包含下述相同的過程:

1.開始通信
2.讀取數據
3.寫入數據
4.結束通信

雖然過程是一樣的,但是讀寫文件系統中文件的方式與收發 HTTP 消息的方式有所不同,流封裝協議的作用是使用通用的介面封裝這種差異。

每個流都有一個協議和一個目標。指定協議和目標的方法是使用流標識符:<scheme>://<target>,其中 <scheme> 是流的封裝協議,<target> 是流的數據源。

http://流封裝協議

下面使用 HTTP 流封裝協議創建了一個與 Flicker API 通信的 PHP 流:

不要以為這是普通的網頁 URL,file_get_contents() 函數的字元串參數其實是一個流標識符。http 協議會讓 PHP 使用 HTTP 流封裝協議,在這個參數中,http 之後是流的目標。

我們通常使用 file_get_contents()、fopen()、fwrite() 和 fclose() 等函數讀寫文件系統,因為 PHP 默認使用的流封裝協議是 file://,所以我們很少認為這些函數使用的是 PHP 流。下面的示例演示了使用 file:// 流封裝協議創建一個讀寫 /etc/hosts 文件的流:

我們通常會省略掉 file:// 協議,因為這是 PHP 使用的默認值。

php://流封裝協議

編寫命令行腳本的 PHP 開發者會感激 php:// 流封裝協議,這個流封裝協議的作用是與 PHP 腳本的標准輸入、標准輸出和標准錯誤文件描述符通信。我們可以使用 PHP 提供的文件系統函數打開、讀取或寫入下面四個流:

1. php://stdin :這是個只讀 PHP 流,其中的數據來自標准輸入。PHP 腳本可以使用這個流接收命令行傳入腳本的信息;
2. php://stdout :把數據寫入當前的輸出緩沖區,這個流只能寫,無法讀或定址;
3. php://memory :從系統內存中讀取數據,或者把數據寫入系統內存。缺點是系統內存有限,所有使用 php://temp 更安全;
4. php://temp :和 php://memory 類似,不過,沒有可用內存時,PHP 會把數據寫入這個臨時文件。

其他流封裝協議

PHP 和 PHP 擴展還提供了很多其他流封裝協議,例如,與 ZIP 和 TAR 壓縮文件、FTP 伺服器、數據壓縮庫、Amazon API、Dropbox API 等通信的流封裝協議。需要注意的是,PHP 中的 fopen()、fgets()、fputs()、feof() 以及 fclose() 等函數不僅可以用來處理文件系統中的文件,還可以在所有支持這些函數的流封裝協議中使用。

自定義流封裝協議

我們還可以自己編寫 PHP 流封裝協議。PHP 提供了一個示例 StreamWrapper 類,演示如何編寫自定義的流封裝協議,支持部分或全部 PHP 文件系統函數。關於如何編寫,具體請參考以下文檔:

http://php.net/manual/zh/class.streamwrapper.php
http://php.net/manual/zh/stream.streamwrapper.example-1.php

有些 PHP 流能夠接受一系列可選的參數,這些參數叫流上下文,用於定製流的行為。不同的流封裝協議使用的流上下文有所不同,流上下文使用 stream_context_create() 函數創建,這個函數返回的上下文對象可以傳入大多數文件系統函數。

例如,你知道可以使用 file_get_contents() 發送 HTTP POST 請求嗎?使用一個流上下文對象即可實現:

流過濾器
目前為止我們討論了如何打開流,讀取流中的數據,以及把數據寫入流。不過,PHP 流真正強大的地方在於過濾、轉換、添加或刪除流中傳輸的數據,例如,我們可以打開一個流處理 Markdown 文件,在把文件內容讀入內存的過程中自動將其轉化為 HTML。

運行該腳本,輸出的都是大寫字母:

我們還可以使用 php://filter 流封裝協議把過濾器附加到流上,不過,使用這種方式之前必須先打開 PHP 流:

這個方式實現效果和 stream_filter_append() 函數一樣,但是相比之下更為繁瑣。不過,PHP 的某些文件系統函數在調用後無法附加過濾器,例如 file() 和 fpassthru(),使用這些函數時只能使用 php://filter 流封裝協議附加流過濾器。

自定義流過濾器
我們還可以編寫自定義的流過濾器。其實,大多數情況下都要使用自定義的流過濾器,自定義的流過濾器是個 PHP 類,繼承內置的 php_user_filter 類( http://php.net/manual/zh/class.php-user-filter.php ),且必須實現 filter()、onCreate() 和 onClose() 方法,最後,必須使用 stream_filter_register() 函數注冊自定義的流過濾器。

然後,我們必須使用 stream_filter_register() 函數注冊這個自定義的 DirtyWordsFilter 流過濾器:

第一個參數用於標識這個自定義過濾器的過濾器名,第二個參數是這個自定義過濾器的類名。接下來就可以使用這個自定義的流過濾器了:

修改 test.txt 內容如下:

運行上面的自定義過濾器腳本,結果如下:

stream_bucket_append函數:為隊列添加數據
stream_bucket_make_writeable函數:從操作的隊列中返回一個數據對象
stream_bucket_new函數:為當前隊列創建一個新的數據
stream_bucket_prepend函數:預備數據到隊列
stream_context_create函數:創建數據流上下文
stream_context_get_default函數:獲取默認的數據流上下文
stream_context_get_options函數:獲取數據流的設置
stream_context_set_option函數:對數據流、數據包或者上下文進行設置
stream_context_set_params函數:為數據流、數據包或者上下文設置參數
stream__to_stream函數:在數據流之間進行復制操作
stream_filter_append函數:為數據流添加過濾器
stream_filter_prepend函數:為數據流預備添加過濾器
stream_filter_register函數:注冊一個數據流的過濾器並作為PHP類執行
stream_filter_remove函數:從一個數據流中移除過濾器
stream_get_contents函數:讀取數據流中的剩餘數據到字元串
stream_get_filters函數:返回已經注冊的數據流過濾器列表
stream_get_line函數:按照給定的定界符從數據流資源中獲取行
stream_get_meta_data函數:從封裝協議文件指針中獲取報頭/元數據
stream_get_transports函數:返回注冊的Socket傳輸列表
stream_get_wrappers函數:返回注冊的數據流列表
stream_register_wrapper函數:注冊一個用PHP類實現的URL封裝協議
stream_select函數:接收數據流數組並等待它們狀態的改變
stream_set_blocking函數:將一個數據流設置為堵塞或者非堵塞狀態
stream_set_timeout函數:對數據流進行超時設置
stream_set_write_buffer函數:為數據流設置緩沖區
stream_socket_accept函數:接受由函數stream_ socket_server()創建的Socket連接
stream_socket_client函數:打開網路或者UNIX主機的Socket連接
stream_socket_enable_crypto函數:為一個已經連接的Socket打開或者關閉數據加密
stream_socket_get_name函數:獲取本地或者網路Socket的名稱
stream_socket_pair函數:創建兩個無區別的Socket數據流連接
stream_socket_recvfrom函數:從Socket獲取數據,不管其連接與否
stream_socket_sendto函數:向Socket發送數據,不管其連接與否
stream_socket_server函數:創建一個網路或者UNIX Socket服務端
stream_wrapper_restore函數:恢復一個事先注銷的數據包
stream_wrapper_unregister函數:注銷一個URL地址包

整合資料
本文整合於以下兩篇文章

https://blog.csdn.net/qq756684177/article/details/81518647

https://xueyuanjun.com/post/7459.html

③ 大數據包括哪些

大數據技術龐大復雜,基礎的技術包含數據的採集、數據預處理、分布式存儲、NoSQL數據內庫、容數據倉庫、機器學習、並行計算、可視化等各種技術范疇和不同的技術層面。
大數據主要技術組件:Hadoop、HBase、kafka、Hive、MongoDB、Redis、Spark 、Storm、Flink等。
大數據技術包括數據採集,數據管理,數據分析,數據可視化,數據安全等內容。數據的採集包括感測器採集,系統日誌採集以及網路爬蟲等。數據管理包括傳統的資料庫技術,nosql技術,以及對於針對大規模數據的大數據平台,例如hadoop,spark,storm等。數據分析的核心是機器學習,當然也包括深度學習和強化學習,以及自然語言處理,圖與網路分析等。

④ Hadoop與分布式數據處理 Spark VS Hadoop有哪些異同點

1、 Spark VSHadoop有哪些異同點?

Hadoop:分布式批處理計算,強調批處理,常用於數據挖掘、分析

Spark:是一個基於內存計算的開源的集群計算系統,目的是讓數據分析更加快速, Spark 是一種與 Hadoop 相似的開源集群計算環境,但是兩者之間還存在一些不同之處,這些有用的不同之處使 Spark 在某些工作負載方面表現得更加優越,換句話說,Spark 啟用了內存分布數據集,除了能夠提供互動式查詢外,它還可以優化迭代工作負載。

Spark 是在 Scala 語言中實現的,它將 Scala 用作其應用程序框架。與 Hadoop 不同,Spark 和 Scala 能夠緊密集成,其中的 Scala 可以像操作本地集合對象一樣輕松地操作分布式數據集。

盡管創建 Spark 是為了支持分布式數據集上的迭代作業,但是實際上它是對 Hadoop 的補充,可以在 Hadoop 文件系統中並行運行。通過名為Mesos的第三方集群框架可以支持此行為。Spark 由加州大學伯克利分校 AMP 實驗室 (Algorithms,Machines,and People Lab) 開發,可用來構建大型的、低延遲的數據分析應用程序。

雖然 Spark 與 Hadoop 有相似之處,但它提供了具有有用差異的一個新的集群計算框架。首先,Spark 是為集群計算中的特定類型的工作負載而設計,即那些在並行操作之間重用工作數據集(比如機器學習演算法)的工作負載。為了優化這些類型的工作負載,Spark 引進了內存集群計算的概念,可在內存集群計算中將數據集緩存在內存中,以縮短訪問延遲.

在大數據處理方面相信大家對hadoop已經耳熟能詳,基於GoogleMap/Rece來實現的Hadoop為開發者提供了map、rece原語,使並行批處理程序變得非常地簡單和優美。Spark提供的數據集操作類型有很多種,不像Hadoop只提供了Map和Rece兩種操作。比如map,filter, flatMap,sample, groupByKey, receByKey, union,join, cogroup,mapValues, sort,partionBy等多種操作類型,他們把這些操作稱為Transformations。同時還提供Count,collect, rece, lookup, save等多種actions。這些多種多樣的數據集操作類型,給上層應用者提供了方便。各個處理節點之間的通信模型不再像Hadoop那樣就是唯一的Data Shuffle一種模式。用戶可以命名,物化,控制中間結果的分區等。可以說編程模型比Hadoop更靈活.

2、Spark在容錯性方面是否比其他工具更有優越性?

從Spark的論文《Resilient Distributed Datasets: AFault-TolerantAbstraction for In-Memory Cluster Computing》中沒看出容錯性做的有多好。倒是提到了分布式數據集計算,做checkpoint的兩種方式,一個是checkpoint data,一個是loggingthe updates。貌似Spark採用了後者。但是文中後來又提到,雖然後者看似節省存儲空間。但是由於數據處理模型是類似DAG的操作過程,由於圖中的某個節點出錯,由於lineage chains的依賴復雜性,可能會引起全部計算節點的重新計算,這樣成本也不低。他們後來說,是存數據,還是存更新日誌,做checkpoint還是由用戶說了算吧。相當於什麼都沒說,又把這個皮球踢給了用戶。所以我看就是由用戶根據業務類型,衡量是存儲數據IO和磁碟空間的代價和重新計算的代價,選擇代價較小的一種策略。取代給中間結果進行持久化或建立檢查點,Spark會記住產生某些數據集的操作序列。因此,當一個節點出現故障時,Spark會根據存儲信息重新構造數據集。他們認為這樣也不錯,因為其他節點將會幫助重建。

3、Spark對於數據處理能力和效率有哪些特色?

Spark提供了高的性能和大數據處理能力,使得用戶可以快速得到反饋體驗更好。另一類應用是做數據挖掘,因為Spark充分利用內存進行緩存,利用DAG消除不必要的步驟,所以比較合適做迭代式的運算。而有相當一部分機器學習演算法是通過多次迭代收斂的演算法,所以適合用Spark來實現。我們把一些常用的演算法並行化用Spark實現,可以從R語言中方便地調用,降低了用戶進行數據挖掘的學習成本。

Spark配有一個流數據處理模型,與Twitter的 Storm框架相比,Spark採用了一種有趣而且獨特的辦法。Storm基本上是像是放入獨立事務的管道,在其中事務會得到分布式的處理。相反,Spark採用一個模型收集事務,然後在短時間內(我們假設是5秒)以批處理的方式處理事件。所收集的數據成為他們自己的RDD,然後使用Spark應用程序中常用的一組進行處理。作者聲稱這種模式是在緩慢節點和故障情況下會更加穩健,而且5秒的時間間隔通常對於大多數應用已經足夠快了。這種方法也很好地統一了流式處理與非流式處理部分。

總結
這幾天在看Hadoop權威指南、hbase權威指南、hive權威指南、大規模分布式存儲系統、zoopkeeper、大數據互聯網大規模數據挖掘與分布式處理等書同時補充,能靜下心來好好的完整的看完一本書,是相當不錯的。

閱讀全文

與非流式數據有哪些相關的資料

熱點內容
linux修改swap 瀏覽:900
word文檔如何設置上下頁邊距 瀏覽:764
變聲專家安卓版 瀏覽:77
學什麼專業以後可以編程 瀏覽:965
雲盤下載文件怎麼移到U盤 瀏覽:434
為什麼數據打游戲經常460 瀏覽:374
有什麼陪玩app 瀏覽:928
如何編程人物移動 瀏覽:43
vector代碼實現 瀏覽:392
servu管理員密碼 瀏覽:9
js中修改class屬性的值 瀏覽:678
蘋果設備鎖怎麼解除 瀏覽:253
linux添加文件夾許可權 瀏覽:329
怎麼快速打開文件路徑 瀏覽:74
u盤文件夾為空win10 瀏覽:980
jsp網上購物系統源碼 瀏覽:135
微信色子表情啥意思 瀏覽:414
課件視頻聲音常用的文件格式 瀏覽:974
如何儲存圖片到文件 瀏覽:616
凌源做購物網站需要多少錢 瀏覽:350

友情鏈接