SparkStreaming(一)基础知识

本文介绍了Spark Streaming的基本概念,包括DStream的原理、数据输入源和接收器,以及DStream的输出操作。DStream作为核心抽象,是连续数据流的表示,由一系列RDD组成。文章探讨了如何通过basic和advanced sources创建Input DStream,并讲解了不同类型的输出操作,如saveAsTextFiles、saveAsObjectFiles和foreachRDD。
摘要由CSDN通过智能技术生成

一、概述

Spark Streaming是Spark Core功能拓展,可以实现数据流的可扩展、高吞吐、容错处理。SparkStreaming处理的数据可以来源于多种数据源(如:Kafka、Flume、TCP套接字),这些数据流经过流式计算的复杂处理和加工,最终会将计算的结果存储到文件系统、数据库或者在仪表盘进行数据的实时展示。
在这里插入图片描述
在内部,SparkStreaming会将接受的流数据拆分为一个个批次数据(micro batch),通过Spark引擎处理微批RDD,产生最终的结果流。
在这里插入图片描述
在Spark Streaming中有一个高等级的抽象称为离散流或者DStream。DStream可以通过外部的数据源构建或者转换获得新的DStream(类似于Spark RDD的使用);

结论DStream底层是由Seq[RDD]序列构成

二、DStream离散流原理

DStream是Spark Streaming中最为核心的抽象,表现为一段连续的数据流(本质上是一组连续的RDD的序列集合),一个DStream中的一个RDD含有一个固定间隔的数据集。
在这里插入图片描述
应用在DStream上的任何操作底层都会转换为RDD的操作。
在这里插入图片描述
核心思想:微批 思想,底层使用spark rdd处理离散数据流

三、Input Source和Receivers

Input DStream表示从数据源接受的数据构建的DStream对象
构建Input DStream两种方式:

  • basic source: 通常不依赖第三方的依赖可以通过ssc直接创建,如:filesystem和socket
  • advanced source: 通常需要集成第三方依赖,如:kafka、flume其它流数据存储系统

basic source(基本数据源):

  • 文件系统创建(使用HDFS API从任意的文件系统读取文件目录数据,作为DStream数据源)
// 通过文件系统构建DStream 注意:路径指向一个目录而不是一个具体的文件
val lines = ssc.textFileStream("hdfs://xxx:9000/data")

注意:

  • 路径是一个目录,不是具体的文件
  • 数据目录支持通配符,如:hdfs://xxx:9000/data*;
  • 数据文件格式必须保证统一,建议文本类型
  • TCP Socket套接字
val lines = ssc.socketTextStream("localhost",8888)
  • RDD Queue(RDD队列,可以将多个RDD存放到一个Queue队列中构建DStream)
// 注意:ssc中封装了sparkContext可以直接获取 无需手动创建
val rdd1 = ssc.sparkContext.makeRDD(List("Hello Spark","Hello Kafka"))
val rdd2 = ssc.sparkContext.makeRDD(List("Hello Scala","Hello Hadoop"))

// 通过Queue封装RDD,创建一个DStream
val queue = scala.collection.mutable.Queue(rdd1,rdd2)
val lines = ssc.queueStream(queue)

advanced source(高级数据源):

  • 基于kafka
    (1).导入依赖
<dependency>
   <groupId>org.apache.spark</groupId>
   <artifactId>spark-streaming-kafka-0-10_2.11</artifactId>
   <version>2.4.4</version>
</dependency>

(2).开发应用

package source

import org.apache.kafka.clients.consumer.{
   ConsumerConfig}
import org.apache.kafka.common.serialization.StringDeserializer
import org.apac
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值