1. 程式人生 > >Structured-Streaming+kafka流式處理

Structured-Streaming+kafka流式處理

Maven專案配置spark Structured Streaming+kafka 

結構化資料流中的關鍵思想是將實時資料流視為一個不斷附加的表。這導致新的流處理模型與批處理模型非常相似。您將把流式計算表示為標準批量查詢,就像在靜態表上一樣,Spark將它作為無界輸入表上的增量查詢來執行。讓我們更詳細地瞭解這個模型。

基本概念

將輸入資料流視為“輸入表”。每個到達流中的資料項就像一個新的行被新增到輸入表中。 

對輸入的查詢將生成“結果表”。每一個觸發間隔(比如說,每隔1秒),新的行會被新增到輸入表中,最終更新結果表。每當結果表得到更新時,我們都希望將已更改的結果行寫入外部接收器。

“輸出”被定義為寫出到外部儲存器的內容。輸出可以用不同的模式定義:

  完整模式 - 整個更新後的結果表將被寫入外部儲存器。由儲存聯結器決定如何處理整個表格的寫入。

  追加模式 - 自上次觸發後,只有在結果表中追加的新行才會寫入外部儲存器。這僅適用於預期不會更改結果表中現有行的查詢。

   更新模式 - 只有自上次觸發以來在結果表中更新的行才會寫入外部儲存器(自Spark 2.1.1起可用)。請注意,這與完整模式不同之處在於,此模式僅輸出自上次觸發後更改的行。如果查詢不包含聚合,則它將等同於“追加”模式。   

建立kafka整合連結  

事件時間視窗操作

滑動事件時間視窗上的聚合對結構化流式處理來說很簡單,並且與分組聚合很相似。在分組聚合中,為使用者指定的分組列中的每個唯一值維護聚合值(例如計數)。在基於視窗的聚合中,對於行所在的事件時間所在的每個視窗,都會保留聚合值。讓我們用插圖來理解這一點。

想象一下,我們的快速示例已被修改,現在流包含行和生成行的時間。我們希望在10分鐘的時間內對單詞進行計數,而不是每5分鐘更新一次。也就是說,在10分鐘的時間12:00 - 12:10,12:05 - 12:15,12:10 - 12:20等之間收到的文字的字數統計。請注意,12:00 - 12:10表示資料在12:00之後但在12:10之前抵達。現在,考慮在12:07收到的一個詞。這個詞應該遞增對應於兩個視窗12:00 - 12:10和12:05 - 12:15的計數。因此計數將由兩個分組鍵(即單詞)和視窗(可以從事件時間計算)索引。

http://spark.apache.org/docs/latest/structured-streaming-kafka-integration.html

 由於這個視窗類似於分組,在程式碼中,你可以使用groupBy()和window()操作來表達視窗聚集。

Spark和kafka的maven配置

<groupId>structed-Streaming04</groupId>

<artifactId>spark_01</artifactId>

<version>1.0-SNAPSHOT</version>

<dependencies>

    <dependency>

        <groupId>org.apache.spark</groupId>

        <artifactId>spark-sql-kafka-0-10_2.11</artifactId>

        <version>2.3.0</version>

    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql -->

    <dependency>

        <groupId>org.apache.spark</groupId>

        <artifactId>spark-sql_2.11</artifactId>

        <version>2.3.0</version>

    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core -->

    <dependency>

        <groupId>org.apache.spark</groupId>

        <artifactId>spark-core_2.11</artifactId>

        <version>2.3.0</version>

    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients -->

    <dependency>

        <groupId>org.apache.kafka</groupId>

        <artifactId>kafka-clients</artifactId>

        <version>0.10.0.1</version>

    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-tags -->

    <dependency>

        <groupId>org.apache.spark</groupId>

        <artifactId>spark-tags_2.11</artifactId>

        <version>2.3.0</version>

    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka -->

    <dependency>

        <groupId>org.apache.kafka</groupId>

        <artifactId>kafka_2.11</artifactId>

        <version>0.10.0.1</version>

    </dependency>

</dependencies>

版本號必須嚴格按照官方文件的配置

Spark-sql-kafka版本為 2.3.0

Kafka版本為0.10.0.1

Scala版本為2.11.8

Maven官網配置

http://mvnrepository.com/artifact/org.apache.spark/spark-sql-kafka-0-10_2.11/2.3.0


相關推薦

Structured-Streaming+kafka處理

Maven專案配置spark Structured Streaming+kafka 結構化資料流中的關鍵思想是將實時資料流視為一個不斷附加的表。這導致新的流處理模型與批處理模型非常相似。您將把流式計算表示為標準批量查詢,就像在靜態表上一樣,Spark將它作為無界輸入表上的增量

Structured Streaming + Kafka Integration Guide 結構化+Kafka集成指南 (Kafka broker version 0.10.0 or higher)

bsp 次數 集成 重復項 park artifact sse 語義 timestamp 用於Kafka 0.10的結構化流集成從Kafka讀取數據並將數據寫入到Kafka。 1. Linking 對於使用SBT/Maven項目定義的Scala/Java應用程序,用以下工

kafka stream處理

本文轉發自技術世界,原文連結 http://www.jasongj.com/kafka/kafka_stream/ Kafka Stream背景 1 Kafka Stream是什麼 2 什麼是流式計算

支援處理ACID事務!Flink團隊開源新作Streaming Ledger

開發十年,就只剩下這套架構體系了! >>>   

處理框架對比

流式處理 處理 ont 調優 cnblogs eve 上線 用戶 避免 分布式流處理是對無邊界數據集進行連續不斷的處理、聚合和分析的過程,與MapReduce一樣是一種通用計算框架,期望延遲在毫秒或者秒級別。這類系統一般采用有向無環圖(DAG)。DAG是任務鏈的圖形化表示

處理新秀Flink原理與實踐

大數據隨著大數據技術在各行各業的廣泛應用,要求能對海量數據進行實時處理的需求越來越多,同時數據處理的業務邏輯也越來越復雜,傳統的批處理方式和早期的流式處理框架也越來越難以在延遲性、吞吐量、容錯能力以及使用便捷性等方面滿足業務日益苛刻的要求。在這種形勢下,新型流式處理框架Flink通過創造性地把現代大規模並行處

處理框架storm淺析

min 完成 文檔 efault 生成 沒有 ado 編程 現在 前言前一段時間參與哨兵流式監控功能設計,調研了兩個可以做流式計算的框架:storm和spark streaming,我負責storm的調研工作。斷斷續續花了一周的時間看了官網上的doc和網絡上的一些資料。我把

python 使用yield進行數據的處理

進行 nbsp append out process search grep int pre demo:從文件中取包含字符“a”的5行數據做一次批處理!!! # coding: utf-8 import time def cat(f): for line in

【線上直播】處理新秀Flink原理與實踐

▼ FMI線上直播 分享主題:流式處理新秀Flink原理與實踐 內容大綱 隨著大資料技術的在各行各業的廣泛使用,要求能對海量資料進行實時處理的需求越來越多,同時資料處理的業務

大資料實時處理引擎比較

從流處理的核心概念,到功能的完備性,再到周邊的生態環境,全方位對比了目前比較熱門的流處理框架:Spark,Flink,Storm和 Gearpump。結合不同的框架的設計,為大家進行深入的剖析。與此同時,從吞吐量和延時兩個方面,對各個框架進行效能評估。 主要技術點:流失資料處理,Spark,

一個一站式處理雲平臺解決方案

隨著網際網路、IT、大資料等技術的爆發式發展,企業系統產生的大量爆發資料。對於儲存在資料庫中的業務資料,可以通過DBus資料匯流排+Wormhole流式處理平臺的日誌方式實時地無侵入同步和落地到任意sink端,提供下游系統分析使用;對於業務系統產生的日誌資料,這些包含了業務高低峰、使用者軌跡、系

#Wormhole# (開源)處理平臺設計思想

導讀:網際網路的迅猛發展使得資料不再昂貴,而如何從資料中更快速獲取價值變得日益重要,因此,資料實時化成為了一個大趨勢。越來越多的業務場景需要實時分析,以極低的延遲來分析實時資料並給出分析結果,從而提高業務效率,帶來更高價值。流式處理作為實時處理的一種重要手段,正在因資料實時化的發展而蓬勃發展。本文是

Spark Structured Streaming + Kafka使用筆記

這篇部落格將會記錄Structured Streaming + Kafka的一些基本使用(Java 版) spark 2.3.0 1. 概述 Structured Streaming (結構化流)是一種基於 Spark SQL 引擎構建的可擴充套件且容錯的 st

大資料Strom處理的ACK機制

package com.neusoft.storm.ack; import java.util.Map; import backtype.storm.task.OutputCollector; import backtype.storm.task.TopologyCont

Java 8 處理提高程式響應

Java8背景介紹: Java 8 在2014年3月釋出,現在公司內部Java相關的開發(包括伺服器端和安卓客戶端)所引用的JDK都是jdk1.8,但是幾乎專案中沒有使用Java 8的特性。 為什麼使用Java 8? 目前,不管是伺服器還是客戶端的CPU都是多核的,而在J

Java的Stream處理

在公司,看到大神寫的程式碼優美而高效,其中之一就是對集合等資料結構大量使用了Stream流式操作,極大的提高程式設計效率和程式可讀性。下面學習一下流式操作,在這裡用部落格記錄一下。 為什麼需要 Stream Stream作為 Java 8的一大亮點,它與

轉載:Java 8 處理

一. 流式處理簡介 在我接觸到java8流式處理的時候,我的第一感覺是流式處理讓集合操作變得簡潔了許多,通常我們需要多行程式碼才能完成的操作,藉助於流式處理可以在一行中實現。比如我們希望對一個包含整數的集合中篩選出所有的偶數,並將其封裝成為一個新的List返回,那麼在jav

新增 – GPU 支援的 Amazon AppStream 2.0 處理例項

我們在 re:Invent 2016 釋出了 Amazon AppStream 2.0。利用此應用程式流式處理服務可將 Windows 應用程式交付到桌面瀏覽器。 AppStream 2.0 是完全託管的,並通過執行一般用途的應用程式提供一致的可擴充套件效能,提供經過優化的計

Spark處理框架案例網站流量分析&大資料生態圈介紹

一, 大資料框架(處理海量/流式資料) 1. 以HADOOP 2.x為體系的大資料生態系統處理框架 MapReduce:中間結果儲存在磁碟。Shuffle過程:map將資料寫入到本地磁碟,reduce通過網路的方式到各個map task所執行的機器中拷貝自己要處理的資料。

Storm:處理框架之特性與應用場景

      資料時代的今夕,如秋風席捲落葉漫天紛飛,storm願做繫鈴人解之庖丁。       一、是什麼       Storm是一個分散式的資料流處理系統。它會把工作任務委託給不同型別的元件,每個