StreamingContext.getOrCreate
/** */
object AppRealTime { def main(args: Array[String]): Unit = {
if (args.length < ) {
println("please input args like: seconds checkpointdir kafkaBrokerList groupId topic")
System.exit()
}
val logger = LoggerFactory.getLogger(AppRealTime.getClass) /**
* 创建StreamContext
*
* @return
*/
def createStreamingContext: StreamingContext = {
val conf = new SparkConf
//StreamingContext,里面包含SparkContext
val ssc = new StreamingContext(conf, Seconds(args().trim.toInt))
//设置checkpoint,保存运行数据
ssc.checkpoint(args().trim) //kafka连接参数
val kafkaParams = Map("metadata.broker.list" -> args().trim, "group.id" -> args().trim)
//指定要读取的topics
val topics = Set(args().trim) //创建directStream从kafka读取数据
val data = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](ssc, kafkaParams, topics) //迭代处理数据
data.foreachRDD(rdd => {
rdd.foreachPartition(p => {
val conf = HBaseConfiguration.create()
//连接Connection
val hConnection = ConnectionFactory.createConnection(conf)
//获取table
val click = hConnection.getTable(TableName.valueOf(Constants.HISTORY_CLICK))
val statistic = hConnection.getTable(TableName.valueOf(Constants.RESULT_STATISTIC)) try {
while (p.hasNext) {
val tuple = p.next()
val logType = tuple._1
val logVal = tuple._2
println(logType+"\t"+logVal)
logType match {
case "click" => {
val clickObj = new Click(logVal)
if (HBaseUtil.isExists(click, clickObj.getRowKey)) {
clickObj.doRepeat(statistic)
} else {
clickObj.doNoRepeat(click, statistic)
}
}
case _ => {
logger.info("msg:" + logVal)
} } }
} catch {
case ex: Exception => {
logger.error("error :", ex)
}
} finally {
click.close()
statistic.close()
hConnection.close()
}
})
})
ssc
} val ssc = StreamingContext.getOrCreate(args().trim, createStreamingContext _) ssc.start()
ssc.awaitTermination() } }
经过粗略的实验(一个分区)发现,使用了这个方法之后可以实现不丢失数据
StreamingContext.getOrCreate的更多相关文章
- spark streaming中使用checkpoint
从官方的Programming Guides中看到的 我理解streaming中的checkpoint有两种,一种指的是metadata的checkpoint,用于恢复你的streaming:一种是r ...
- Apache Spark源码走读之5 -- DStream处理的容错性分析
欢迎转载,转载请注明出处,徽沪一郎,谢谢. 在流数据的处理过程中,为了保证处理结果的可信度(不能多算,也不能漏算),需要做到对所有的输入数据有且仅有一次处理.在Spark Streaming的处理机制 ...
- 使用streaming window函数统计用户不同时间段平均消费金额等指标
场景 现在餐厅老板已经不满足仅仅统计历史用户消费金额总数了,他想知道每个用户半年,每个月,每天,或者一小时消费的总额,来店消费的次数以及平均金额. 给出的例子计算的是每5秒,每30秒,每1分钟的用户消 ...
- spark streaming - kafka updateStateByKey 统计用户消费金额
场景 餐厅老板想要统计每个用户来他的店里总共消费了多少金额,我们可以使用updateStateByKey来实现 从kafka接收用户消费json数据,统计每分钟用户的消费情况,并且统计所有时间所有用户 ...
- Spark Streaming官方文档学习--下
Accumulators and Broadcast Variables 这些不能从checkpoint重新恢复 如果想启动检查点的时候使用这两个变量,就需要创建这写变量的懒惰的singleton实例 ...
- spark streaming 实时计算
spark streaming 开发实例 本文将分以下几部分 spark 开发环境配置 如何创建spark项目 编写streaming代码示例 如何调试 环境配置: spark 原生语言是scala, ...
- Spark Streaming metadata checkpoint
Checkpointing 一个流应用程序必须全天候运行,所有必须能够解决应用程序逻辑无关的故障(如系统错误,JVM崩溃等).为了使这成为可能,Spark Streaming需要checkpoint足 ...
- Spark Streaming笔记——技术点汇总
目录 目录 概况 原理 API DStream WordCount示例 Input DStream Transformation Operation Output Operation 缓存与持久化 C ...
- Apache Spark 2.2.0 中文文档 - Spark Streaming 编程指南 | ApacheCN
Spark Streaming 编程指南 概述 一个入门示例 基础概念 依赖 初始化 StreamingContext Discretized Streams (DStreams)(离散化流) Inp ...
随机推荐
- @property与@synthesize的差别
上一篇文章我有讲到self.与_的差别,往往和这个问题相伴随的是我困惑的问题是"@property与@synthesize的差别" @property的使用方法 @interfac ...
- java与C++之间进行SOCKET通讯要点简要解析
原文链接: http://blog.csdn.net/hslinux/article/details/6214594 java与C++之间进行SOCKET通讯要点简要解析 hslinux 0.篇外语 ...
- Fix SCRIPT5009: “RegisterSod” undefined error
When I set up development environment for apps for SharePoint 2013 and quickly get apps from SharePo ...
- [Perforce]password (P4PASSWD) invalid or unset. 的错误解决
前言 使用 Perforce , 能够使用Perforce 的Client 端. 有时候在编写一些脚本或代码的时候, 可能或使用到 Perforce的命令的方式. 正常状况下. 使用例如以下命令: p ...
- xml中的<![CDATA[]]> 简介
被<![CDATA[]]>这个标记所包含的内容将表示为纯文本,比如<![CDATA[<]]>表示文本内容“<”. 此标记用于xml文档中,我们先来看看使用转义符的 ...
- [转]在windows上实现多个java jdk的共存解决办法
问题背景 公司项目中应用到的jdk环境为1.6,最近在家学习IntelliJ IDEA中sdk多环境配置时,想安装Jdk1.8,作为学习基础.那么问题来了,公司项目扩展不支持jdk1.8,为了既能满足 ...
- 大家来找茬:富连网今天中午抢购二手iPhone时网站无法访问的问题
前几天在新闻区看到富士康卖二手iPhone的新闻,今天又看到说今天中午12点开抢.一大早就发现富连网无法访问了.前几天刚看到新闻的时候注册了个账号进去看了看,发现页面加载速度非常慢,今天中午基本无法打 ...
- 网页端,JSON导成CSV文件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Android adb 命令速查表
常用命令 devices # 查看已连接的设备 start-server # 启动 adb server kill-server # 停止 adb server logcat # 查看日志 insta ...
- ubuntu for win10 里运行net core
花了点时间在ubuntu for win10里运行net core 按官网上ubuntun10.14装的net core指令 ...... ...... sudo apt-get install do ...