Spark Streaming 是核心Spark API的扩展,可实现实时数据流的可伸缩,高吞吐量,容错流处理。可以从许多数据源(例如Kafka,Flume,Kinesis或TCP sockets)中提取数据,并且可以使用复杂的算法处理数据,这些算法用高级函数表示,如map、reduce、join和window。最后,可以将处理后的数据推送到文件系统,数据库和实时仪表板。实际上,可以在数据流上应用Spark的机器学习和图形处理算法。

在内部,它的工作方式如下。 Spark Streaming接收实时输入数据流,并将数据分成批次,然后由Spark引擎进行处理,以生成批次的最终结果流。

Spark Streaming提供了一种高级抽象,称为离散流或DStream,它表示连续的数据流。DStreams可以从Kafka、Flume和Kinesis等源的输入数据流创建,也可以通过在其他DStreams上应用高级操作创建。在内部,DStream表示为RDDs序列。

1. 了解Spark

Apache Spark 是一个用于大规模数据处理的统一分析引擎

    

特性:

将工作负载运行速度提高100倍

Apache Spark使用最新的DAG调度程序,查询优化器和物理执行引擎,为批处理数据和流数据提供了高性能。

易用

可以使用Java,Scala,Python,R和SQL快速编写应用程序。

通用

结合SQL、流和复杂的分析

Spark为包括SQL和DataFrames,用于机器学习的MLlib,GraphX和Spark Streaming在内的一堆库提供支持。您可以在同一应用程序中无缝组合这些库。

到处运行

Spark可在Hadoop,Apache Mesos,Kubernetes,独立或云中运行。它可以访问各种数据源。

可以在EC2,Hadoop YARN,Mesos或Kubernetes上使用其独立集群模式运行Spark。访问HDFS,Alluxio,Apache Cassandra,Apache HBase,Apache Hive和数百种其他数据源中的数据。

2. 入门案例

统计单词出现的次数,这个例子在Hadoop中用MapReduce也写过。

JavaStreamingContext是java版的StreamingContext。它是Spark Streaming功能的主要入口点。它提供了从输入源创建JavaDStream和JavaPairDStream的方法。可以使用context.sparkContext访问内部的org.apache.spark.api.java.JavaSparkContext。在创建和转换DStream之后,可以分别使用context.start()和context.stop()启动和停止流计算。

 1 public static void main(String[] args) throws InterruptedException {2     // Create a local StreamingContext with two working thread and batch interval of 1 second3     SparkConf conf = new SparkConf().setMaster("local[2]").setAppName("NetworkWordCount");4     JavaStreamingContext jssc = new JavaStreamingContext(conf, Durations.seconds(1));5 6     // Create a DStream that will connect to hostname:port, like localhost:99997     JavaReceiverInputDStream<String> lines = jssc.socketTextStream("localhost", 9999);8 9     // Split each line into words
10     JavaDStream<String> words = lines.flatMap(x -> Arrays.asList(x.split(" ")).iterator());
11
12     // Count each word in each batch
13     JavaPairDStream<String, Integer> pairs = words.mapToPair(s -> new Tuple2<>(s, 1));
14     JavaPairDStream<String, Integer> wordCounts = pairs.reduceByKey((i1, i2) -> i1 + i2);
15
16     // Print the first ten elements of each RDD generated in this DStream to the console
17     wordCounts.print();
18
19     // Start the computation
20     jssc.start();
21     // Wait for the computation to terminate
22     jssc.awaitTermination();
23 }

3. 基本概念

3.1. Maven依赖

1 <groupId>org.apache.spark</groupId>
2     <artifactId>spark-streaming_2.12</artifactId>
3     <version>2.4.5</version>
4     <scope>provided</scope>
5 </dependency>

为了从其它数据源获取数据,需要添加相应的依赖项spark-streaming-xyz_2.12。例如:

1 <dependency>
2     <groupId>org.apache.spark</groupId>
3     <artifactId>spark-streaming-kafka-0-10_2.12</artifactId>
4     <version>2.4.5</version>
5 </dependency>

3.2. 初始化StreamingContext

为了初始化一个Spark Streaming程序,必须创建一个StreamingContext对象,该对象是所有Spark Streaming功能的主要入口点。

我们可以从SparkConf对象中创建一个JavaStreamingContext对象

1 import org.apache.spark.SparkConf;
2 import org.apache.spark.streaming.Duration;
3 import org.apache.spark.streaming.api.java.JavaStreamingContext;
4
5 SparkConf conf = new SparkConf().setAppName(appName).setMaster(master);
6 JavaStreamingContext ssc = new JavaStreamingContext(conf, new Duration(1000)); 

appName 参数是显示在集群UI上的你的应用的名字

master 参数是一个Spark、 Mesos 或 YARN 集群URL,或者也可以是一个特定的字符串“local[*]”表示以本地模式运行。实际上,当在集群上运行时,肯定不希望对在程序中对master进行硬编码,而希望通过spark-submit启动应用程序并在其中接收它。然而,对于本地测试,你可以传“local[*]”来运行Spark Streaming。

还可以从一个已存在的JavaSparkContext中创建一个JavaStreamingContext对象

更多干货 请点击这里

Spark Streaming 编程新手入门指南相关推荐

  1. Spark Streaming 编程指南[中英对照]

    2019独角兽企业重金招聘Python工程师标准>>> 基于Spark 2.0 Preview的材料翻译,原[英]文地址: http://spark.apache.org/docs/ ...

  2. 编程实现将rdd转换为dataframe:源文件内容如下(_第四篇|Spark Streaming编程指南(1)

    Spark Streaming是构建在Spark Core基础之上的流处理框架,是Spark非常重要的组成部分.Spark Streaming于2013年2月在Spark0.7.0版本中引入,发展至今 ...

  3. 零基础怎样自学编程?新手如何学习编程?编程学习入门指南

    对于编程,很多新手的第一感觉可能就是: 高深,难学. 学好编程,有的时候,可以把一些需要我们重复劳动的工作,自动化批量处理,为我们节省很多时间和精力. 对于一些学得比较深入的朋友来说,更是可以通过它找 ...

  4. Apache Kylin新手入门指南

    Apache Kylin新手入门指南 文章目录 Apache Kylin新手入门指南 1 Apache Kylin是什么 2 为什么使用Apache Kylin 3 Apache Kylin的易用性如 ...

  5. php网站入门鹿泉银山,01PHP编程新手入门第一步

    01PHP编程新手入门第一步 很多时候刚入手不知道从哪里下手.这个时候选择一些课程是最好的方法,自己摸索半天可能比不过别人5分钟讲解.就编程而言: 1:有个地方存储程序和数据库 可以选择云服务器,也可 ...

  6. mac 删除分区 command r 选择网络_Mac使用必看基础篇,Mac快捷键大全,mac新手入门指南...

    你是Mac新手吗?你对使用Mac电脑有疑问吗?你还不知道mac有哪些快捷键吗?别着急,来看看小编给大家准备的Mac使用必看基础篇--Mac快捷键大全,对于新手用户很有帮助哦!! 一.开机相关命令快捷键 ...

  7. sparkstreaming监听hdfs目录如何终止_四十六、Spark Streaming简介及入门

    1.什么是Spark Streaming Spark Streaming是基于Spark Core之间的实时计算框架,可以从很多数据源消费数据并对数据进行处理.它是Spark核心API的一个扩展与封装 ...

  8. Neo4j 新手入门指南

    Neo4j 新手入门指南 前言: 前段时间在公司实习有用到图数据库做一个小项目,就想着记录一下当时找到的比较有用的资料. 纯属入门学习啦,新手当作一个大纲来学习也可以! 感谢关注! 所有链接均在文章结 ...

  9. python pip-什么是pip?Python新手入门指南

    什么是 pip ?pip 是 Python 中的标准库管理器.它允许你安装和管理不属于 Python标准库 的其它软件包.本教程就是为 Python 新手介绍 pip. 通过本教程,你将学到: 1. ...

最新文章

  1. NVIDIA GPU上的Tensor线性代数
  2. 有格调的读书人,朋友圈是什么样的?
  3. 勒索病毒一周记:它让我们得到了什么经验教训?
  4. Python核心数据类型之字典15
  5. Python小数据保存,有多少中分类?不妨看看他们的类比与推荐方案...
  6. windows版本变迁
  7. unity2D游戏案例-躲避怪云
  8. 简易地图(MKMapView,CLLocationManagerDelegate,CLGeocoder)
  9. 腾讯云服务器SSH密匙登录教程(创建密匙/关联/登录)
  10. iTOP-4418开发板Android7.1系统支持RFID、VGA、继电器、LOAR、CAN-RS485
  11. 基于matlab的车牌定位算法设计与实现,原创】基于matlab的汽车牌照识别系统设计与实现...
  12. 构建城市三维信息模型(CIM)与数字孪生城市可视化技术 优锘ThingJS
  13. 他是硅谷最好斗的华人 微软、谷歌、特斯拉都离不开他
  14. JavaScript入门 轮播/表单验证 Day17
  15. SQLserver总结03(DDL、DML、DCL、查询、top、distinct、order by、聚合函数)
  16. 数据挖掘mooc国防科技大学笔记(自留)
  17. 嵌入式QT--静态编译
  18. 三维交互可视化平台(智慧海上牧场平台)学习开发之Vue(一)
  19. Python中len()的用法
  20. 操作系统内存管理详细总结

热门文章

  1. 使用python套用excel模板_集成python的excel插件模板pyaddin——使用说明
  2. c语言程序代码_10道C语言笔试模拟题,来看看你掌握的怎么样?
  3. 纹理与表面细节添加方法---小结
  4. 【跃迁之路】【552天】程序员高效学习方法论探索系列(实验阶段309-2018.08.11)...
  5. Linux日常运维管理技巧
  6. Tokyo Tyrant基本规范(4)--协议
  7. JAVA学习--反射属性操作
  8. linux 根目录下的子目录的意义
  9. python学习手册笔记——22.模块代码编写基础
  10. ajax实现关联词提示