首页 > 其他分享 >sparkstreaming的创建方式及运行流程及注意事项

sparkstreaming的创建方式及运行流程及注意事项

时间:2022-08-31 16:57:14浏览次数:60  
标签:SparkContext 创建 流程 stop sparkstreaming 数据源 线程 注意事项 StreamingContext

  • sparkstreaming创建有两种方式
1. 借助SparkConf对象创建

val conf = new SparkConf().setAppName("streamingContext").setMaster("local[4]")
/**
 * streamingcontext第一种创建方式  需要传递两个值
 * 1、sparkConf
 * 2、是一个Durations时间  代表的是每隔多长时间形成一个批次的数据
 *      Seconds(Long)
 *      Milliseconds(Long)
 *      Minutes(Long)
 * 第一种创建方式底层也会给我们创建一个SparkContext对象
 */
val ssc: StreamingContext = new StreamingContext(conf, Seconds(2))

2. 借助已有的SparkContext对象来创建
/*
streamingcontext创建方法二:
*/
val sc = new SparkContext(conf)
val ssc1: StreamingContext = new StreamingContext(sc, Seconds(2))

/*
具体使用
*/
val ds: DStream[String] = ssc.socketTextStream("node1", 44444, StorageLevel.MEMORY_ONLY)
ds.print()

ssc.start()
ssc.awaitTermination()
  • 作用
1. Spark Streaming严格意义来说不算纯实时计算框架,因为Spark Streaming处理数据的时候每隔一段时间将一段数据封装为一个批次进行计算的
2. Spark Streaming读取不断数据源的数据都需要使用到StreamingContext
  • sparkstreaming的运行流程
  1. 创建输入DStream来创建输入不同的数据源。
  2. 对DStream定义transformation和output等各种算子操作,来定义我们需要的各种实时计算逻辑。
  3. 调用StreamingContext的start()方法,进行启动我们的实时处理数据。
  4. 调用StreamingContext的awaitTermination()方法,来等待应用程序的终止。可以使用CTRL+C手动停止,或者就是让它持续不断的运行进行计算。
  5. 也可以通过调用StreamingContext的stop()方法,来停止应用程序。
  • 注意
【注意】:
(1)基础数据源:HDFS、TCP网络端口
高级数据源:Kafka、Flume。。。。
(2)local 本地使用一个CPU内核运行的(一个CPU内核运行一个线程)---本地启动一个线程运行
创建StreamingContext时候必须指定运行模式的CPU核数(启动的线程数)大于等于2,Spark Streaming在做实时计算的时候,最小需要两个线程,一次线程用来接受数据源的数据,另外一个线程处理封装好的一个批次数据
(3)只要我们一个StreamingContext启动之后,我们就不能再往这个Application其中添加任何计算逻辑了。比如执行start()方法之后,还给某个DStream执行一个算子。
(4)一个StreamingContext停止之后,是肯定不能够重启的。调用stop()之后,不能再调用start()
(5)必须保证一个JVM同时只能有一个StreamingContext启动。在你的应用程序中,不能创建两个StreamingContext。
(6)调用stop()方法时,会同时停止内部的SparkContext,如果不希望如此,还希望后面继续使用SparkContext创建其他类型的Context,比如SQLContext,那么就用stop(false)。
(7)一个SparkContext可以创建多个StreamingContext,只要上一个先用stop(false)停止,再创建下一个即可。

标签:SparkContext,创建,流程,stop,sparkstreaming,数据源,线程,注意事项,StreamingContext
From: https://www.cnblogs.com/jsqup/p/16643474.html

相关文章

  • JAVA运算符与流程控制
    JAVA运算符1.算术运算符+-+-*/%(前)++(后)++(前)--(后)--+典型代码:除号///除号/ intnum1=12; intnum2=5; intresult1=num1/num2; System.out.println......
  • C语言进阶语法及部分注意事项
    目录0x00计算机原理01缓冲区(buffer)与缓存(cache)02一个程序运行时的内存空间0x01输入专题01scanf02sscanf0x02文件专题01fopen02文本方式打开与二进制方式打开i......
  • SpringMvc请求流程源码解析
    目录SpringMvc请求流程图请求流程粗讲解方法细讲doDispatcher-->核心找到Handler#getHandlergetHandler(request)mapping.getHandler(request)getHandlerInternal()looku......
  • 养猫注意事项
    养猫注意事项https://www.zhihu.com/question/318498786/answer/21187608951,猫是独居,一只猫在家里就行,不用牵出去溜达2,大小便猫自己解决。准备猫厕所(装猫砂供猫使用的......
  • yolo训练注意事项
    1、先尝试默认的参数进行训练2、图片数据要足够,官方建议的是超过1500张3、图像要变化(时间、角度、光线、大小、不同相机等)4、物体要标注精确,尽量做到boundingbox和物体之间......
  • 事务流程与介质恢复
    事务生命周期-->获取排他锁-->重做数据存入PGA(进程程序的全局区)-->获取复制锁和重做分配锁-->获取重做日志分配空间-->释放重做分配锁-->重做日志缓冲区同步重做日......
  • .NET 开源工作流: Slickflow流程引擎高级开发(十) -- BpmnJS流程设计器集成
    前言:在Slickflow产品开发过程中,前端流程设计器经历了几个不同的版本(jsPlumb,mxGraph等),目的是为了在设计流程时的用户体验更加良好,得到客户的好评和认可。BpmnJS流程设......
  • shell-流程控制
    流程控制执行脚本case语法case实例......
  • ARMv8 reboot 流程
    LinuxrebootprocessforARM-v8is: RebootcommandfinallygoestotheATF.(Armtrustedfirmware).Sequence:machine_restart("arch/arm64/kernel/process.c")......
  • Django使用Redis进行缓存详细流程
    1.背景和意义服务器数据非经常更新。若每次都从硬盘读取一次,浪费服务器资源、拖慢响应速度。而且数据更新频率较高,服务器负担比较大。若保存到数据库,还需要额外建立一张对......