@[TOC](spark Stream入门案例))
一、准备工作
centos7环境
spark环境搭建
nc安装(netcat):yum -y install nc
二、案例分析
将nc作为服务端,用户在场产生数据;启动sparkStreaming中案例中的客户端程序,
通过nc监听服务器发送的数据,对数据进行词频统计。实现sparkStreaming流式处
理的wordcount入门程序
三、官网案例
1、启动nc
nc -l -p 6666
2、启动sparkStreaminga案例程序
进入spark安装目录下,以下是本人自己的安装目录
cd /opt/module/spark-local
执行案例程序,端口号与启动nc时的端口号对应
bin/run-example streaming.NetworkWordCount localhost 6666
3、在nc服务端输入测试数据
4、测试结果,如下图所示
四、使用idea开发Wordcount程序
1、创建一个maven项目
2、在pom.xml文件中添加sparkstreaming项目依赖
<!--spark-Stream实时处理-->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming_2.11</artifactId>
<version>2.1.1</version>
</dependency>
3、在idea中编写Wordcount程序代码
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.catalyst.expressions.Second
import org.apache.spark.storage.StorageLevel
import org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream}
import org.apache.spark.streaming.{Seconds, StreamingContext}
object SparkStreamingTestOne {
def main(args: Array[String]): Unit = {
//创建SparkConf
val sparkconf = new SparkConf().setMaster("local[*]").setAppName("SparkStreamingTestOne")
//创建SparkContext
val sc = new SparkContext(sparkconf)
//利用SparkContext创建SparkStramingContext
val streamingContext = new StreamingContext(sc,Seconds(3))
//通过创建DStream输入对象,链接到nc服务器创建输入数据源
val rids:ReceiverInputDStream[String] = streamingContext.socketTextStream("ethan002",6666,StorageLevel.MEMORY_AND_DISK)
//采集数据,并做分词处理
val ds:DStream[String] = rids.flatMap(_.split(" "))
//做词频统计,,,resultDS的结果是一个由元组组成的数组
val resultDS: DStream[(String, Int)] = ds.map((_,1)).reduceByKey(_+_)
//将结果打印
resultDS.print()
//启动SparkStreaming实时计算
streamingContext.start()
//等待计算结束
streamingContext.awaitTermination()
}
}
4、在服务器上启动nc,并输入测试数据
5、在idea运行Wordcount程序
6、执行结果,如图所示:
处理结果显示在idea的控制台
注意:Wordcount程序会一直处于执行状态,若要停止,需要在IDEA手动中结束程序