import org.apache.spark.storage.StorageLevel
import org.apache.spark.streaming.{Seconds, StreamingContext}
import org.apache.spark.{SparkConf, SparkContext} /**
* WordCount程序,Spark Streaming消费TCP Server发过来的实时数据的例子:
*
* 1、在master服务器上启动一个Netcat server
* `$ nc -lk 9998` (如果nc命令无效的话,我们可以用yum install -y nc来安装nc)
*
*
*/
object LocalNetworkWordCount {
def main(args: Array[String]) { // StreamingContext 编程入口
//local[2] 启用两个core, 一个线程用于接收数据,一个线程用于处理数据
//Seconds(1) 每隔一秒钟处理一次
val ssc = new StreamingContext("local[2]", "LocalNetworkWordCount", Seconds(1),
System.getenv("SPARK_HOME"), StreamingContext.jarOfClass(this.getClass).toSeq) //数据接收器(Receiver)
//创建一个接收器(ReceiverInputDStream),这个接收器接收一台机器上的某个端口通过socket发送过来的数据并处理
val lines = ssc.socketTextStream("localhost", 9998, StorageLevel.MEMORY_AND_DISK_SER) //数据处理(Process)
//处理的逻辑,就是简单的进行word count
val words = lines.flatMap(_.split(" "))
val wordPairs = words.map(x => (x, 1))
val wordCounts = wordPairs.reduceByKey(_ + _) //结果输出(Output)
//将结果输出到控制台
wordCounts.print() //启动Streaming处理流
ssc.start() //等待Streaming程序终止
// 7 X 24 小时运行,一直等待不会停止
//注释该行代码后,运行一次便终止(必须打开)
ssc.awaitTermination()
}
}

  NetworkWordCount

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.storage.StorageLevel
import org.apache.spark.streaming.{Seconds, StreamingContext} /**
* WordCount程序,Spark Streaming消费TCP Server发过来的实时数据的例子:
*
* 1、在master服务器上启动一个Netcat server
* `$ nc -lk 9998` (如果nc命令无效的话,我们可以用yum install -y nc来安装nc)
*
* 2、用下面的命令在在集群中将Spark Streaming应用跑起来
spark-submit --class com.twq.streaming.NetworkWordCount \
--master spark://master:7077 \
--deploy-mode client \
--driver-memory 512m \
--executor-memory 512m \
--total-executor-cores 4 \
--executor-cores 2 \
/home/hadoop-twq/spark-course/streaming/spark-streaming-basic-1.0-SNAPSHOT.jar
*/
object NetworkWordCount {
def main(args: Array[String]) {
val sparkConf = new SparkConf().setAppName("NetworkWordCount")
val sc = new SparkContext(sparkConf) // StreamingContext 编程入口
val ssc = new StreamingContext(sc, Seconds(1)) //数据接收器(Receiver)
//创建一个接收器(ReceiverInputDStream),这个接收器接收一台机器上的某个端口通过socket发送过来的数据并处理
// StorageLevel.MEMORY_AND_DISK_SER_2 通过该方式存储在内存中 先放入内存中,内存不够放在磁盘中,以字节的方式储存,储存两份
val lines = ssc.socketTextStream("master", 9998, StorageLevel.MEMORY_AND_DISK_SER_2) //数据处理(Process)
//处理的逻辑,就是简单的进行word count
val words = lines.flatMap(_.split(" "))
val wordPairs = words.map(x => (x, 1))
val wordCounts = wordPairs.reduceByKey(_ + _) //结果输出(Output)
//将结果输出到控制台
wordCounts.print() //启动Streaming处理流
ssc.start() //等待Streaming程序终止
ssc.awaitTermination()
}
}

  

import org.apache.spark.storage.StorageLevel
import org.apache.spark.streaming.{Seconds, StreamingContext}
import org.apache.spark.{SparkConf, SparkContext} /**
* WordCount程序,Spark Streaming消费TCP Server发过来的实时数据的例子:
*
* 1、在master服务器上启动一个Netcat server
* `$ nc -lk 9998` (如果nc命令无效的话,我们可以用yum install -y nc来安装nc)
*
* 2、用下面的命令在在集群中将Spark Streaming应用跑起来
spark-submit --class com.twq.streaming.NetworkWordCountDetail \
--master spark://master:7077 \
--deploy-mode client \
--driver-memory 512m \
--executor-memory 512m \
--total-executor-cores 4 \
--executor-cores 2 \
/home/hadoop-twq/spark-course/streaming/spark-streaming-basic-1.0-SNAPSHOT.jar
*/
object NetworkWordCountDetail {
def main(args: Array[String]) {
val sparkConf = new SparkConf().setAppName("NetworkWordCount")
val sc = new SparkContext(sparkConf) // Create the context with a 1 second batch size //1、StreamingContext 是 Spark Streaming程序的入口,那么StreamingContext和SparkContext的关系是什么呢?
//1.1、StreamingContext需要持有一个SparkContext的引用
val ssc = new StreamingContext(sc, Seconds(1)) //1.2、如果SparkContext没有启动的话,我们可以用下面的代码启动一个StreamingContext
val ssc2 = new StreamingContext(sparkConf, Seconds(1)) //这行代码会在内部启动一个SparkContext
ssc.sparkContext //可以从StreamingContext中获取到SparkContext
//1.3、对StreamingContext调用stop的话,可能会将SparkContext stop掉,
// 如果不想stop掉SparkContext,我们可以调用
ssc.stop(false) sc.stop() //2:StreamingContext的注意事项:
// 2.1、在同一个时间内,同一个JVM中StreamingContext只能有一个
// 2.2、如果一个StreamingContext启动起来了,
// 那么我们就不能为这个StreamingContext添加任何的新的Streaming计算
// 2.3、如果一个StreamingContext被stop了,那么它不能再次被start
// 2.4、一个SparkContext可以启动多个StreamingContext,
// 前提是前面的StreamingContext被stop掉了,而SparkContext没有被stop掉 //创建一个接收器(ReceiverInputDStream),这个接收器接收一台机器上的某个端口通过socket发送过来的数据并处理
val lines = ssc.socketTextStream("master", 9998, StorageLevel.MEMORY_AND_DISK_SER) //处理的逻辑,就是简单的进行word count
val words = lines.flatMap(_.split(" "))
val wordCounts = words.map(x => (x, 1)).reduceByKey(_ + _) //将结果输出到控制台
wordCounts.print() //启动Streaming处理流
ssc.start() //等待Streaming程序终止
ssc.awaitTermination()
}
}

  

☛ DStream(Discretized Stream 离散化流)特点
一个依赖父DStream的列表(依赖利于容错)
一个生成RDD的时间间隔(Batch Interavl)
一个生成RDD的函数(DStream 到 RDD 的转换)
 

1、Spark Streaming将输入数据流切分成Batches,然后存储在Spark的内存中
2、生成Spark jobs(RDD的转换和Actions操作)来处理每一个batch

示例 NetworkWordCount的更多相关文章

  1. Apache Spark 2.2.0 中文文档 - Spark Streaming 编程指南 | ApacheCN

    Spark Streaming 编程指南 概述 一个入门示例 基础概念 依赖 初始化 StreamingContext Discretized Streams (DStreams)(离散化流) Inp ...

  2. Spark Streaming编程指南

    Overview A Quick Example Basic Concepts Linking Initializing StreamingContext Discretized Streams (D ...

  3. Apache Spark 2.2.0 中文文档

    Apache Spark 2.2.0 中文文档 - 快速入门 | ApacheCN Geekhoo 关注 2017.09.20 13:55* 字数 2062 阅读 13评论 0喜欢 1 快速入门 使用 ...

  4. SparkStreaming 编程指南

    摘要:学习SparkStreaming从官网的编程指南开始,由于Python编码修改方便不用打包,这里只整理python代码! 一.概述 Spark Streaming 是 Spark Core AP ...

  5. Apache Spark 2.2.0 中文文档 - Spark Streaming 编程指南

    Spark Streaming 编程指南 概述 一个入门示例 基础概念 依赖 初始化 StreamingContext Discretized Streams (DStreams)(离散化流) Inp ...

  6. Spark Streaming编程示例

    近期也有开始研究使用spark streaming来实现流式处理.本文以流式计算word count为例,简单描述如何进行spark streaming编程. 1. 依赖的jar包 参考<分别用 ...

  7. Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

    本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...

  8. .NET跨平台之旅:将示例站点升级至 ASP.NET Core 1.1

    微软今天在 Connect(); // 2016 上发布了 .NET Core 1.1 ,ASP.NET Core 1.1 以及 Entity Framework Core 1.1.紧跟这次发布,我们 ...

  9. 通过Jexus 部署 dotnetcore版本MusicStore 示例程序

    ASPNET Music Store application 是一个展示最新的.NET 平台(包括.NET Core/Mono等)上使用MVC 和Entity Framework的示例程序,本文将展示 ...

随机推荐

  1. TCP/IP学习笔记17--TCP-- 窗口控制 重发控制 流控制

    事业无穷年 -- 韩愈 利用窗口控制提高速度: TCP传输数据是,以一个段为单位(每次发送一个数据包),每发一个段需要一次确认应答,这样就难免存在这样的缺点:包的往返时间越长,通信性能就越低. 为解决 ...

  2. Prometheus入门到放弃(5)之AlertManager部署

    alertmanager与exporters.cadvisor一样,都是独立于prometheus项目,这里我们也使用docker方式部署alertmanager. 1.下载镜像 镜像地址:https ...

  3. CI 框架 伪静态设置 去掉index.php

    .htaccess文件修改 DirectoryIndex index.php RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME ...

  4. leetcode最长回文

    给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注意: &qu ...

  5. 小程序的组件插槽使用slot===以及小程序多个插槽使用方法 三步骤

    ===================== 小程序多个插槽使用方法 三步骤 小程序多个插槽第一步 小程序组件内使用多个插槽第二部 小程序使用多个插槽第三部

  6. Matlab M文件变量检测与传递

    M文件中变量的检测与传递 可变数量的输入输出变量(varargin,vararout): Matlab的输入输出变量数量可变,并具有以下特点: 可变输入输出变量必须在正常变量之后 varargin和v ...

  7. Unity UnityWebRequest实现与后端的交互

    一般我们与后端对接的时候会用到UnityWebRequest这里简单使用这个与后端进行交互这个是总类 using UnityEngine;using System.Collections;using ...

  8. Mybatis基于xml的动态sql实现

    动态sql可以很方便的拼接sql语句,主要用于复合条件查询: 主要通过这几个标签实现: if 标签: where 标签 choose标签: foreach标签: if 标签: <select i ...

  9. Widget Size and Position !!!!!!!!!!!!!!!!!!

    https://medium.com/@diegoveloper/flutter-widget-size-and-position-b0a9ffed9407 I have read many ques ...

  10. vue基础:组件的创建方式和组件的data值

    vue组件是什么: 组件是可复用的 Vue 实例,组件可以进行任意次数的复用 vue组件创建方式有3种: //第一种创建组件的方式// Vue.extend创建全局组件var com1 = Vue.e ...