标签: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() 调用前执行。
标签:tin 对象 channel 用户自定义函数 bsp dir 自定义 contex fun
原文地址:https://www.cnblogs.com/fjdsj/p/10100191.html