package com.bynear.spark_Streaming;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.function.FlatMapFunction;
import org.apache.spark.api.java.function.Function2;
import org.apache.spark.api.java.function.PairFunction;
import org.apache.spark.streaming.Durations;
import org.apache.spark.streaming.api.java.JavaDStream;
import org.apache.spark.streaming.api.java.JavaPairDStream;
import org.apache.spark.streaming.api.java.JavaReceiverInputDStream;
import org.apache.spark.streaming.api.java.JavaStreamingContext;
import scala.Tuple2;
import java.util.Arrays;
/**
* 2018/5/9
* 16:52
* 实时wordCount程序
*/
public class WordCount {
public static void main(String[] args) throws InterruptedException {
/**
*创建SparkConf对象,但是这里有一点不同,需要给他设置一个master属性,代表我们测试的时候使用local模式
* local后面必须加一个方括弧,里面填写一个数字,数字代表了我们用几个线程来执行我们的SparkStreaming程序
* 只是为2 ,一个用来接收数据,一个线程用来处理数据
*/
SparkConf conf = new SparkConf().setMaster("local[2]").setAppName("wordcount");
/**
*创建JavaStreamingContext对象,
* 该对象,就类似于Spark Core中的JavaSparkContext,类似于SparkSQL中的 SQLContext
* 该对象除了接收conf对象外,还必须接收一个batch interval参数,时间片 时间间隔 就是说,每收集多长时间的数据,划分为一个batch
* 进行处理,
* 这里设置1秒
*/
JavaStreamingContext jssc = new JavaStreamingContext(conf, Durations.seconds(1));
/** 首先创建输入DStream,代表一个从数据源(kafka)来的持续不断的实时数据流
* 调用JavaStreamingContext的socketTextStream方法,可以创建一个数据源为Socket网络端口的数据流
* JavaReceiverInputDStream,代表了一个输入的DStream
* socketTextStream方法接收两个参数,参数一是监听那个主机上的端口,参数2 为监听那个端口号
*/
JavaReceiverInputDStream<String> lines = jssc.socketTextStream("localhost", 9999);
/**到这里为止,可以理解为JavaReceiverInputDStream中的,每隔一秒,就会有一个RDD,其中封装了这一秒发送过来的数据
* RDD的元素类型为String,即一行一行的文本
* 所以,这里的JavaReceiverInputDStream的泛型类型为《String》,其实就代表了它底层的RDD的泛型类型
*
* 开始对接收到的数据,执行计算,使用Spark Core提供的算子,执行应用在DStream中即可
* 在底层 实际上是会对DStream中的一个一个的RDD,执行我们应用在DStream上的算子
*
*/
JavaDStream<String> words = lines.flatMap(new FlatMapFunction<String, String>() {
@Override
public Iterable<String> call(String line) throws Exception {
return Arrays.asList(line.split(","));
}
});
/**这个时候,每秒的数据,一行一行的文本,就会被拆分成多个单词,words DStream中的RDD的元素类型即为一个一个的单词
*
* 接着, 开始进行 flatMap,reduceByKey操作
*/
JavaPairDStream<String, Integer> pairs = words.mapToPair(new PairFunction<String, String, Integer>() {
@Override
public Tuple2<String, Integer> call(String word) throws Exception {
return new Tuple2<String, Integer>(word, 1);
}
});
/**这里说明一下,用SparkStreaming与SparkCore开发程序 很相似,
* 唯一不同的是SparkCore中的JavaRDD、JavaPairRDD,都变成了JavaDStream、JavaPairDStream
*/
JavaPairDStream<String, Integer> wordCounts = pairs.reduceByKey(new Function2<Integer, Integer, Integer>() {
@Override
public Integer call(Integer num1, Integer num2) throws Exception {
return num1 + num2;
}
});
/**
*到此为止,我们就实现了实时的wordCount程序了
* 总结:
* 每秒钟发送到指定socket端口上的数据,都会被lines DStream接收到
* 然后lines DStream会把每秒的数据,也就是一行一行的文本,诸如 hello Word ,封装为一个RDD
* 然后,就会对每秒钟对应的RDD,执行后续的一系列算子操作
* 比如对lines RDD 执行flatMap操作,得到一个 words RDD 作为words DStream中的一个RDD
* 以此类推,直到生成最后一个 wordCountRDD 作为WordCounts DStream中的一个RDD
* 此时就得到了 每秒钟发送过来的数据的单词统计
*
* 但是一定要注意,SparkStreaming的计算模型,就决定了,我们必须自己来进行中间缓存的控制
* 比如写入Redis等缓存
* 它的计算模型和storm是完全不同的,storm是自己编写的一个一个程序,运行在节点上,相当于一个一个的对象,
* 可以自己在对象中控制缓存,
* 但是spark本身是函数式编程的计算模型,所以,比如words或pairs DStream中,没法在实例变量中进行缓存。
* 此时就只能将最后计算的wordcounts中的一个一个RDD,写入外部的缓存,或者持久化的DB
* 最后计算完,都打印一下这一秒的单词计数情况
* 并休眠5s钟,以便于我们的测试和观察!
*/
Thread.sleep(5000);
System.out.println("已完成——————————完成——————————完成");
wordCounts.print();
/**
* 首先对JavaStreamingContext进行一下后续处理
* 必须调用JavaStreamingContext的start方法,整个SparkStreaming Application才会启动执行
* 否则不会执行
*/
jssc.start();
jssc.awaitTermination();
jssc.stop();
}
}
相关推荐
线性分类器(Linear Classifier)
线性分类器 如上图所示,这是二维空间中的一个数据集,如果他正好能够被一条直线分成两类,那么我们称它为线性可分数据集,这条直线就是一个线性分类器。 在三维空间中,如果数据集线性可分,是指能够被一个平面分为两类。 在一维空间中,所有的点都在一条直线上,如果线性可分。可以理解为它们能够被一个点分开。 这里的直线、平面、点被分为决策边界。 一个 m 维空间中的数据集,如果能够被一个超平面一分为二,那么这个数据集就是线性可分的,这个超平面就是决策边界。 例如,这是二维平面上的一条直线, 它可以把平面切分成两
SparkStreaming的应用场景
1.背景介绍 1.背景介绍 Apache Spark是一个开源的大规模数据处理框架,它可以处理批量数据和流式数据。Spark Streaming是Spark框架的一个组件,用于处理流式数据。流式数据是指实时数据,如社交媒体数据、sensor数据、日志数据等。Spark Streaming可以处理这些实时数据,并进行实时分析和处理。 Spark Streaming的应用场景非常广泛,包括实时数...
【Coze 扣子案例】第 23 期・商业篇:一键获取精准商机,自动化招标信息查询与分析
通过地区和项目类型等多维度组合查询全国招标信息网数据,实现招标公告的快速定位。自动解析招标公告内容,提取关键信息,并生成结构化摘要。帮助企业高效获取精准商机,提升市场竞争力,降低人工成本,解决 “信息过载” 与 “精准匹配难” 的双重问题。
Spark Streaming应用与实战全攻略
Spark Streaming应用与实战系列包括以下六部分内容: 背景与架构改造通过代码实现具体细节,并运行项目对Streaming监控的介绍以及解决实际问题对项目做压测与相关的优化Streaming持续优化之HBase管理Streaming任务 本篇为第一部分,包括背景与架构改造、通过代码实现具体细节并运行项目、对Streaming监控的介绍以及解决实际问题、对项目做压测与相关的优化
DDR内存条选购避坑指南:单Rank vs 双Rank性能实测对比(附2024年颗粒推荐)
本文深入解析了内存条中单Rank与双Rank设计的原理与性能差异。通过实战测试对比,揭示了双Rank内存在高负载场景(如3D渲染、视频剪辑)中凭借Rank Interleaving技术带来的显著性能优势,并提供了2024年针对不同用户需求的DDR4/DDR5内存选购策略与避坑指南。
华为HCIA-Datacom实战:200人企业园区网从规划到部署全流程解析
本文详细解析了华为HCIA-Datacom认证实战中200人企业园区网的规划与部署全流程。从需求分析、组网架构设计到设备选型、VLAN划分及安全策略实施,全面覆盖园区网建设的关键环节,特别针对部门隔离、无线覆盖和基础安全防护等典型场景提供可落地的解决方案。
Spark Streaming综合实战(一)(史上最详细)
很多企业为了支持决策分析而构建的数据仓库系统,其中存放的大量历史数据就是静态数据。技术人员可以利用数据挖掘和OLAP(On-Line Analytical Processing)分析工具从静态数据中找到对企业有价值的信息 对静态数据和流数据的处理,对应着两种截然...
AI算力网络与通信领域流量分析:优化策略探讨_副本
今天的AI就像一个"超级吃货",每天要"吃"掉海量数据、“消耗"巨量算力——训练一个千亿参数的大模型,可能需要上万块GPU同时工作数周,其间产生的数据传输量足以填满数百万个1TB硬盘。这些GPU和计算节点通过网络连接形成"AI算力网络”,而数据在节点间的流动就是"通信流量"。如果把算力比作AI的"肌肉",那流量就是"血液"——血液不通畅,肌肉再强也使不上劲。
Spark Streaming 实现 word count
Spark Streaming 实现 word count一、一个输入源端口对应一个receiver1.1 数据源端口1.2 spark streaming 接收处理数据二、两个输入源端口对应一个receiver2.1 测试源端口 一、一个输入源端口对应一个receiver 1.1 数据源端口 使用网络猫作为数据的输入源端口 下载网络猫: linux命令行执行: yum install -y nc 使用测试端口: 9999 nc -lk 9999 1.2 spark streaming 接收处理数据 这
ethernet eth0: Could not attach to PHY
整个流程看下来就是MAC connect PHY的过程失败了,失败的具体原因根据config_init,上图(bcm54xx_config_init) ,从此方向入手去定位原因;我这里的问题是has_gmac4没有置1,根据 has_gmac4: uses GMAC4 core.按照上面的调用逻辑,添加了部分打印,定位到__phy_read接口返回失败。stmmac_mdio_read 大部分都是linux的标准接口。最终取决于平台用的是哪家的phy,调用config_init。
博途PLC PID仿真LSim_PT1库算法(一阶系统差分方程推导全过程)
博途PLC的PID仿真可以参看下面这篇博客,这篇文章我们主要论坛仿真库LSim的算法由来。如何利用博途PLC PID_Compact 进行PID仿真(一阶系统)_RXXW_Dor的博客-优快云博客博途PLC PID控制器 PID_Compact FB如何使用可以参看下面这篇文章,这里不再赘述。
《Spark机器学习》笔记——Spark Streaming 在实时机器学习中的应用
此前我们一直讨论的是批量数据处理,也就是我们所有的分析、特征提取和模型训练都被应用于一组固定不变的数据。这很好地适用于Spark对RDD的核心抽象,即不可变的分布式数据集。尽管可以使用Spark的转换函数和行动算子从原始的RDD创建新RDD,但是RDD一旦创建,其中包含的数据就不会改变。 我们的注意力一直集中于批量机器学习模型,训练模型的固定训练集通常表示为一个特征向量(在监督学习模型的例子中是
基于XDMA 的PCIE读写DDR
基于XDMA 的PCIE读写DDR 概述: 想实现基于FPGA的PCIe通信,查阅互联网各种转载…基本都是对PCIe的描述,所以想写一下基于XDMA的PCIe通信的实现(PCIe结构仅做简单的描述(笔记),了解详细结构移至互联网)。 实现功能:PC通过PCIE读写DDR,同时用户通过逻辑代码可以读取被写入DDR内的数据(我是通过VIO实现DDR任意地址,任意数据大小的读取。)。 实践实践!!! 说明: 参考文档: PCI Express Base Specification Revision 3.0 P
SparkStreaming实现实时WordCount程序的两种方法并将数据写入Mysql中:使用工具netcat
首先需要了解的几个类 StreamingContext 如何读取数据 DStream 处理数据函数 DStream里面存储着很多RDD PairDStreamFunctions 当处理的数据类型是二元组的时候, DStream自动隐式转换为PairDStreamFunctions RDD 输出函数,将结果保存到外部系统 def foreachFunc: (RDD[T], Time) =>...
最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版
Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
SparkStreaming简介 - 与第一个Spark实时计算程序,使用netcat来写数据 - wordcount
官方文档 Spark Streaming 火花流是spark API的扩展,它支持可伸缩、高吞吐量、容错的实时数据流处理。 数据可以从多种来源(如Kafka、Flume、Kinesis或tcp套接字)中摄取,并且可以使用用高级函数表示的复杂算法进行处理,例如map, reduce, join和window…最后,可以将处理过的数据推送到文件系统、数据库和活动仪表板。事实上,你可以申请星火机器学习和...
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
sparkStreaming的实时处理,官方自带程序和idea代码完成,来解决WordCount案列,还有和kafka集群结合来使用最流行的实时数据处理框架
SparkStreaming和kafka的结合运用,来执行wordcount 程序 1.先让kafka和Streaming 整合 这里是官方的文档,可拷贝import包: http://spark.apache.org/docs/2.2.0/streaming-kafka-0-10-integration.html kafka集成了sparkStreamimg,有专用API 记住导入maven ...
Devexpress16.2.6破解工具
Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具
Spark Streaming之实时wordcount程序实战
目录 一:与核心Spark Core 编程的不同 二:Spark Streaming 与 Storm 模型的区别 三:编码实战 一:与核心Spark Core 编程的不同 //Master 中 新增的线程号 //Durations: 设置 Context 对象时新增 batch interval 参数 //基本RDD对象的封装 //正式的启动方法,并不是 action操作进行...
使用SparkStreaming+Kafka+Flume的实现wordcount一个简单的小项目
使用SparkStreaming+Kafka+Flume的一个简单的小项目 整体架构用Flume采集数据源下沉到Kafak中,再用SparkStreamming对数据做一个简单的WordCount; 下面是具体代码: 1.Flume的conf的配置 #为我们的source channel sink起名 a1.sources=r1 a1.channels=c1 a1.sinks=k1 #指定我们的s...
spark streaming初试之wordcount
本文来自于spark的官方文档,在运行这个例子的时候遇到了一些问题,解决之后记录下来这个spark streaming的wordcount例子的完整运行过程。算是spark streaming的一次初体验吧。
Flume+Kafka+SparkStreaming之wordcount示例
Flume+Kafka+SparkStreaming的结合使用之wordcount示例 1. 生成log的py脚本 脚本文件名称:produce_log3.py,内容如下: import time import sched import random def create_log(): file = open("/home/hadoop/log/access.log", ...
SparkStreaming
1、SparkStreaming概述 数据处理类型分类 静态数据 数据源是不变的、有限的、显式离散的 多适用于批量计算、离线计算 流数据 数据是变动的、无限的、连续的 多适用于实时计算,能在秒级、秒内处理完成 实时数据分类 小时级 分钟级 秒级 sparkstreaming是什么 一句话总结:微批处理的流式(数据)实时计算框架。 原理:是把输入数据以某一时间间隔批量的处理,当批处理间隔缩短到秒级时,即可
kafka+flume+sparkStreaming+HDFS实时日志分析系统
flumme + kafka + sparkStreaming 构建实时文件处理系统 搭建前提: Hadoop2.6、spark1.6-hadoop-2.6集群都是正确搭建并可运行 一 、需求描述 日志文件预处理:运营商数据 kafka做队列缓冲 flume分发 streaming计算 HDFS存储 二、 系统搭建 No.1 flume-ng 1.
SparkStreaming 操作
DStream没有排序的方法,需要调用tranform方法对底层的RDD进行操作,调用RDD的排序方法。使用该操作需要是指checkpoint目录,开启checkpoint,方便异常恢复数据。在每个批处理中,Spark 对所有的key进行更新,无论他是否有变化。该操作和updateStateByKey的区别是,只关心变化的key。对以上操作产生的数据输出到其他组件上,比如:mysql,HDFS。该操作可以保存历史状态,同时利用新操作来更新数据。针对每批RDD数据操作,无返回值。每隔5s计算近10s的数据。
spark 统计单词_Spark Streaming基本原理、执行流程以及单词统计简单应用开发
Spark Streaming 是构建在Spark Core基础之上的实时计算框架(或流计算框架),它扩展了Spark 处理大规模流式数据的能力。Sparking Streaming 可以整合多种输入数据源,如Kafka、Flume、HDFS、TCP socket等等,经过处理的数据可以存储到HDFS、数据库和Dashboard等等。一、Spark Streaming基本原理和执行流程Spark ...
Spark概述
Spark概述 1.1. 什么是Spark(官网:http://spark.apache.org) Spark是一种快速、通用、可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache顶级项目。目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL、Spark Streaming、GraphX、MLlib等子项目,Spark是基于内存计算的大数据并行计算框...
Spark简介及入门
Spark是一种快速而通用的大数据处理引擎,包含了多个组件。Spark Core:Spark核心组件,提供了基本的任务调度、内存管理和错误恢复等功能。支持Scala、Java和Python等多种编程语言。Spark SQL:提供了与传统SQL相似的查询API,并支持使用标准Sql查询结构化数据。同时还能够读取Hive表或JSON文件,并将它们映射为DataFrame(类似于关系数据库中一个表)进行处理。
1万+



被折叠的 条评论
为什么被折叠?



