您的位置 首页 > 德语词汇

sparking是什么意思?用法、例句,Spark Streaming基本原理、执行流程以及单词统计简单应用开发

这篇文章给大家聊聊关于sparking是什么意思?用法、例句,以及Spark Streaming基本原理、执行流程以及单词统计简单应用开发对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

SparkStreaming是构建在SparkCore基础之上的实时计算框架(或流计算框架),它扩展了Spark处理大规模流式数据的能力。

sparking是什么意思?用法、例句,Spark Streaming基本原理、执行流程以及单词统计简单应用开发

SparkingStreaming可以整合多种输入数据源,如Kafka、Flume、HDFS、TCPsocket等等,经过处理的数据可以存储到HDFS、数据库和Dashboard等等。

SparkStreaming的基本原理是将实时输入数据流以时间片(秒级)为单位进行拆分,然后经过SparkEngine以类似批处理的方式处理每个时间片数据,执行流程如下图示。

SparkStreaming最主要的抽象是DStream(DiscretizedStream,离散化数据流),表示连续不断的数据流。在内部实现上,SparkStreaming的输入数据按照时间片(如1s),每一段数据转换为Spark中的RDD,DStream表示为RDD序列(DStream由连续的序列化RDD来表示)。

在SparkStreaming中,处理数据的单位是一批而不是单条,而数据采集却是逐条进行的,因此SparkStreaming系统需要设置间隔使得数据汇总到一定的量后再一并操作,这个间隔就是批处理间隔。批处理间隔是SparkStreaming的核心概念和关键参数,它决定了SparkStreaming提交作业的频率和数据处理的延迟,同时也影响着数据处理的吞吐量和性能。

以单词统计为例,每个时间片的数据(行数据的RDD)经过flatMap操作,生成了存储单词的RDD。

首先需要引入SparkStreaming的依赖jar包。

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

<artifactId>spark-streaming_2.12</artifactId>

<version>2.4.3</version>

编写NetworkWordCount类,实现单词统计逻辑。

这个程序就是从tcpsockets中读取数据,并做单词统计(WordCount),时间间隔是1秒,结果输出在屏幕上。

packagecom.rickie.sparkstreaming;

importorg.apache.spark.SparkConf;

importorg.apache.spark.api.java.StorageLevels;

importorg.apache.spark.streaming.Durations;

importorg.apache.spark.streaming.api.java.JavaDStream;

importorg.apache.spark.streaming.api.java.JavaPairDStream;

importorg.apache.spark.streaming.api.java.JavaReceiverInputDStream;

importorg.apache.spark.streaming.api.java.JavaStreamingContext;

publicstaticvoidmain(String[]args)throwsInterruptedException{

System.out.println("HelloWorld.");

System.err.println("Usage:NetworkWordCount<hostname><port>");

//CreatealocalStreamingContextwithtwoworkingthreadandbatchintervalof1second

SparkConfconf=newSparkConf().setMaster("local[2]").setAppName("NetworkWordCount");

JavaStreamingContextjssc=newJavaStreamingContext(conf,Durations.seconds(1));

jssc.sparkContext().setLogLevel("WARN");

//创建了一个DStream,从Socket中接受数据hostname:port,likelocalhost:9999

JavaReceiverInputDStream<String>lines=jssc.socketTextStream(args[0],

Integer.parseInt(args[1]),StorageLevels.MEMORY_AND_DISK_SER);

//以空格把收到的每一行数据分割成单词

JavaDStream<String>words=lines.flatMap(x->Arrays.asList(x.split("")).iterator());

JavaPairDStream<String,Integer>pairs=words.mapToPair(s->newTuple2<>(s,1));

JavaPairDStream<String,Integer>wordCounts=pairs.reduceByKey((i1,i2)->i1+i2);

//PrintthefirsttenelementsofeachRDDgeneratedinthisDStreamtotheconsole

//打印每个RDD中的前10个元素到控制台

jssc.awaitTermination();//等待计算结果

System.out.println("Welldone!");

编译打包,生成tutorial-1.0.jar包,复制到Spark运行环境中。

(1)为了运行NetworkWordCount,首先我们需要运行一个netcatserver(LinuxCentOS7环境)。

(2)然后,另开一个shell窗口,提交NetworkWordCount任务。

/usr/local/spark/bin/spark-submit--class"com.rickie.sparkstreaming.NetworkWordCount"tutorial-1.0.jarlocalhost9999

(3)在nc上发送消息,消费端接收消息,然后并进行单词统计计算。

如下图所示,输入一些文字,并回车。

(4)我们就可以在Spark运行窗口观察到如下的信息。

为了避免Spark应用输出信息的干扰,可以添加2>&1|grep"rickie"命令行参数,方便捕捉输出的信息。

/usr/local/spark/bin/spark-submit--class"com.rickie.sparkstreaming.NetworkWordCount"tutorial-1.0.jarlocalhost99992>&1|grep"rickie"

SparkStreamingProgrammingGuide

http://spark.apache.org/docs/latest/streaming-programming-guide.html

https://www.ibm.com/developerworks/cn/opensource/os-cn-spark-streaming/index.html

好了,文章到这里就结束啦,如果本次分享的sparking是什么意思?用法、例句和Spark Streaming基本原理、执行流程以及单词统计简单应用开发问题对您有所帮助,还望关注下本站哦!

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023