Spark Streaming实时数据分析





[kfk@bigdata-pro01 softwares]$ sudo rpm -ivh nc-1.84-.el6.x86_64.rpm
Preparing... ########################################### [%]
:nc ########################################### [%]
[kfk@bigdata-pro01 softwares]$

重新启用一个远程连接窗口
bin/run-example streaming.NetworkWordCount localhost

回到这边输入一些信息

看到这边就有数据接收到了
我们退出,换个方式启动

我们在这边再输入一些数据

这边处理得非常快

因为打印的日志信息太多了,我修改一下配置文件(3个节点都修改吧,保守一点了)

我们在来跑一下

再回到这边我们敲几个字母进去


把同样的单词多次输入我们看看是什么结果

可以看到他会统计











我们启动一下spark-shell,发现报错了


是因为我们前面配置了hive到spark sql 里面,我们先配回来(3个节点都修改)


再启动一下

我们输入代码

scala> import org.apache.spark.streaming._
import org.apache.spark.streaming._ scala> import org.apache.spark.streaming.StreamingContext._
import org.apache.spark.streaming.StreamingContext._ scala> val ssc = new StreamingContext(sc, Seconds())
ssc: org.apache.spark.streaming.StreamingContext = org.apache.spark.streaming.StreamingContext@431f8830 scala> val lines = ssc.socketTextStream("localhost", )
lines: org.apache.spark.streaming.dstream.ReceiverInputDStream[String] = org.apache.spark.streaming.dstream.SocketInputDStream@23f27434 scala> val words = lines.flatMap(_.split(" "))
words: org.apache.spark.streaming.dstream.DStream[String] = org.apache.spark.streaming.dstream.FlatMappedDStream@2c3df478 scala> val pairs = words.map(word => (word, ))
pairs: org.apache.spark.streaming.dstream.DStream[(String, Int)] = org.apache.spark.streaming.dstream.MappedDStream@6d3dc0c5 scala> val wordCounts = pairs.reduceByKey(_ + _)
wordCounts: org.apache.spark.streaming.dstream.DStream[(String, Int)] = org.apache.spark.streaming.dstream.ShuffledDStream@8fa4647 scala> wordCounts.print() scala>
最后启动一下服务发现报错了


是因为没有启动nc
现在把他启动

我们敲进去一些数据


退出再启动一次

再次把代码放进来


我们在nc那边输入数据

回到这边看看结果

打开我们的idea




package com.spark.test import org.apache.spark.sql.SparkSession
import org.apache.spark.streaming._
import org.apache.spark.streaming.StreamingContext._
import org.apache.spark.{SparkConf, SparkContext}
object Test { def main(args: Array[String]): Unit = {
val spark= SparkSession
.builder
.master("local[2]")
.appName("HdfsTest")
.getOrCreate() val ssc = new StreamingContext(spark.sparkContext, Seconds());
val lines = ssc.socketTextStream("localhost", )
val words = lines.flatMap(_.split(" "))
}
}







package com.spark.test import org.apache.spark.sql.SparkSession
import org.apache.spark.storage.StorageLevel
import org.apache.spark.streaming.{Seconds, StreamingContext} object TestStreaming {
def main(args: Array[String]): Unit = {
val spark= SparkSession.builder.master("local[2]")
.appName("streaming").getOrCreate() val sc=spark.sparkContext;
val ssc = new StreamingContext(sc, Seconds())
val lines = ssc.socketTextStream("bigdata-pro01.kfk.com", )
//flatMap运算
val words = lines.flatMap(_.split(" ")).map(words=>(words,)).reduceByKey(_+_)
words.print()
//map reduce 计算
// val wordCounts = words.map(x =>(x, 1)).reduceByKey(_ + _)
// wordCounts.print()
ssc.start()
ssc.awaitTermination() }
}



这个过程呢要这样操作,先把程序运行,再启动nc,再到nc界面输入单词


package com.spark.test import java.sql.DriverManager import org.apache.spark.sql.SparkSession
import org.apache.spark.storage.StorageLevel
import org.apache.spark.streaming.{Seconds, StreamingContext} object TestStreaming {
def main(args: Array[String]): Unit = {
val spark= SparkSession.builder.master("local[2]")
.appName("streaming").getOrCreate() val sc=spark.sparkContext;
val ssc = new StreamingContext(sc, Seconds())
val lines = ssc.socketTextStream("bigdata-pro01.kfk.com", )
//flatMap运算
val words = lines.flatMap(_.split(" ")).map(words=>(words,)).reduceByKey(_+_) words.foreachRDD(rdd=>rdd.foreachPartition(line=>{
Class.forName("com.mysql.jdbc.Driver")
val conn= DriverManager.
getConnection("jdbc:mysql://bigdata-pro01.kfk.com:3306/test","root","root")
try {
for(row <-line ) {
val sql = "insert into webCount(titleName,count)values('" +row._1+ "',"+row._2+")"
conn.prepareStatement(sql).executeUpdate()
}
}finally {
conn.close()
} })) words.print()
//map reduce 计算
// val wordCounts = words.map(x =>(x, 1)).reduceByKey(_ + _)
// wordCounts.print()
ssc.start()
ssc.awaitTermination() }
}


我们把代码拷进来


import java.sql.DriverManager
import org.apache.spark.sql.SparkSession
import org.apache.spark.streaming.{Seconds, StreamingContext} val sc=spark.sparkContext;
val ssc = new StreamingContext(sc, Seconds())
val lines = ssc.socketTextStream("bigdata-pro01.kfk.com", )
val words = lines.flatMap(_.split(" ")).map(words=>(words,)).reduceByKey(_+_)
words.foreachRDD(rdd=>rdd.foreachPartition(line=>{
Class.forName("com.mysql.jdbc.Driver")
val conn= DriverManager.
getConnection("jdbc:mysql://bigdata-pro01.kfk.com:3306/test","root","root")
try {
for(row <-line ) {
val sql = "insert into webCount(titleName,count)values('" +row._1+ "',"+row._2+")"
conn.prepareStatement(sql).executeUpdate()
}
}finally {
conn.close()
}
}))
ssc.start()
ssc.awaitTermination()
我们输入数据


我们通过mysql查看一下表里面的数据

Spark Streaming实时数据分析的更多相关文章
- 新闻实时分析系统 Spark Streaming实时数据分析
1.Spark Streaming功能介绍1)定义Spark Streaming is an extension of the core Spark API that enables scalable ...
- 新闻网大数据实时分析可视化系统项目——19、Spark Streaming实时数据分析
1.Spark Streaming功能介绍 1)定义 Spark Streaming is an extension of the core Spark API that enables scalab ...
- Spark Streaming实时计算框架介绍
随着大数据的发展,人们对大数据的处理要求也越来越高,原有的批处理框架MapReduce适合离线计算,却无法满足实时性要求较高的业务,如实时推荐.用户行为分析等. Spark Streaming是建立在 ...
- 【Streaming】30分钟概览Spark Streaming 实时计算
本文主要介绍四个问题: 什么是Spark Streaming实时计算? Spark实时计算原理流程是什么? Spark 2.X下一代实时计算框架Structured Streaming Spark S ...
- 【转】Spark Streaming 实时计算在甜橙金融监控系统中的应用及优化
系统架构介绍 整个实时监控系统的架构是先由 Flume 收集服务器产生的日志 Log 和前端埋点数据, 然后实时把这些信息发送到 Kafka 分布式发布订阅消息系统,接着由 Spark Streami ...
- Spark练习之通过Spark Streaming实时计算wordcount程序
Spark练习之通过Spark Streaming实时计算wordcount程序 Java版本 Scala版本 pom.xml Java版本 import org.apache.spark.Spark ...
- 大数据Spark+Kafka实时数据分析案例
本案例利用Spark+Kafka实时分析男女生每秒购物人数,利用Spark Streaming实时处理用户购物日志,然后利用websocket将数据实时推送给浏览器,最后浏览器将接收到的数据实时展现, ...
- 【慕课网实战】Spark Streaming实时流处理项目实战笔记十六之铭文升级版
铭文一级: linux crontab 网站:http://tool.lu/crontab 每一分钟执行一次的crontab表达式: */1 * * * * crontab -e */1 * * * ...
- 【慕课网实战】Spark Streaming实时流处理项目实战笔记十五之铭文升级版
铭文一级:[木有笔记] 铭文二级: 第12章 Spark Streaming项目实战 行为日志分析: 1.访问量的统计 2.网站黏性 3.推荐 Python实时产生数据 访问URL->IP信息- ...
随机推荐
- cos migration工具webhook推送
上一篇讲了腾讯云同步工具的使用,这篇主要是补充如何将同步结果主动消息通知. 因为cos migration 工具是java语言,并在github开源的,所以可以直接修改源码,添加webhook推送代码 ...
- zookeeper 图形化的客户端工具:ZooInspector
查看Zookeeper中的数据,我们可以通过ZkCli.sh命令客户端查看,但是不太直观,因为Zookeeper本身数据是以树型结构存储组织的, 今天推荐一个实用的界面操作工具ZooInspector ...
- Laravel $request添加数据或数据修改
laravel开发项目的时候,很多时候我们从$request里获取请求参数,今天在做项目的时候,遇到这样一个需求,就是请求参数到后台,后台需要根据判断重新给$request赋值,那如何去处理的 使用 ...
- jmeter-场景-上传文件-send-a-file
jmeter --上传文件 jmeter-场景-上传文件-send-a-file 简要说就3点: POST请求 Request的参数都写在路径内,不写在表单里 上传的文件写在表单里 只要记住以上3点, ...
- Go sql语句引号问题
使用Go进行Mysql开发时,会遇到引号问题(实际上,与语言无关,只要使用sql就会遇到这些类似问题). 本文举例说明如何解决这些问题. Example1 第一例子演示格式字符是否要加引号. 代码如下 ...
- SPI 核的寄存器空间
SPI 核的寄存器空间 寄存器的地址与定义: 寄存器描述与配置: 复位寄存器: 控制寄存器: 状态寄存器: 数据发送寄存器: 在使用DTR之前,一定要经过复位处理. 对于DTR的操作中,首先写入com ...
- excel技巧--文本拆分合并
如果像上图那样将一单元格内拆分成同等大小的字词,可用如下步骤: 1.将该单元格的宽度缩至拆分词的大小: 2.选择同列的适当的单元格,用于填充拆分的字符: 3.点击“开始”-->填充-->两 ...
- 让Delphi XE5跟其他版本的Delphi共存 [转]
找到Delphi XE5的安装根目录 .... \Program Files (x86)\Embarcadero\RAD Studio\12.0\bin下的cglm.ini文件, 打开cglm.i ...
- Azure Storage (26) HTML5播放Azure Storage MP4问题
<Windows Azure Platform 系列文章目录> 问题:客户描述说在Azure Storage上的MP4视频无法在线播放,只能看到黑屏的视频,有声音但是没有图像 问题排查:H ...
- VirtualBox 虚拟机复制
本文简单讲两种情况下的复制方式 1 跨电脑复制 2 同一virtrul box下 虚拟机复制 ---------------------------------------------- 1 跨电脑复 ...