码迷,mamicode.com
首页 > 其他好文 > 详细

SparkStreaming

时间:2018-12-11 11:13:43      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:tin   对象   channel   用户自定义函数   bsp   dir   自定义   contex   fun   

一、flume整合 sparkStreaming 问题

  1、如何实现 sparkStreaming 读取 flume 中的数据

    sparkStreaming 整合 flume 有 2 中模式, 一种是拉模式, 一种是推模式。比较两种模式的特点, 如何部署。

   推模式:Flume将数据 Push 推给 Spark Streaming

   拉模式:Spark Streaming 从 flume 中 Poll 拉取数据

  2、在实际开发的时候是如何保证数据不丢失的。

    1. flume 采用 channel 是将数据落地到磁盘中,保证数据源端的安全性

      flume 这里的 channel 可以设置为 memory 内存中,提高数据接收处理的效率,但是由于数据在内存中,安全机制保证不了,故选择的 channel 为磁盘储存。整个流程运行会有一点延迟性。

    2. sparkStreaming 通过拉模式整合的时候,使用了 FlumeUtils 这样一个类,该类需要依赖一个额外的 jar 包(spark-streaming-flume_2.10)   

    3. 想要保证数据不丢失,数据的准确性,可以在构建 StreamingContext 的时候,利用StreamingContext.getOrCreate(checkpoint,creatingFunc:() => StreamingContext )来创建一个 StreamingContext,使用 StreamingContext 来创建 StreamingContext 对象,传入的第一个参数是 checkpoint 的存放目录,第二个参数是生成 StreamingContext对象的用户自定义函数。 如果 checkpoint 的存放目录存在, 则从这个目录中生成 StreamingContext 对象;如果不存在,才会调用第二个函数来生成新的 StreamingContext 对象。 在 creatingFunc函数中,除了生成一个新的 StreamingContext 操作,还需要完成各种操作, 然后调用 ssc.checkpoint(checkpointDirectory) 来初始化 checkpoint 功能,最后再返回 StreamingContext 对象。这样,在 StreamingContext.getOrCreate 之后, 就可以直接调用 start() 函数来启动(或者是从中断点继续运行)流式应用了。如果有其他在启动或继续运行都要做的工作,可以在start() 调用前执行。

    

 

SparkStreaming

标签:tin   对象   channel   用户自定义函数   bsp   dir   自定义   contex   fun   

原文地址:https://www.cnblogs.com/fjdsj/p/10100191.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!