[Spark]Spark Streaming 指南二 初始化StreamingContext

简介: 为了初始化Spark Streaming程序,一个StreamingContext对象必需被创建,它是Spark Streaming所有流操作的主要入口。

为了初始化Spark Streaming程序,一个StreamingContext对象必需被创建,它是Spark Streaming所有流操作的主要入口。一个StreamingContext 对象可以用SparkConf对象创建。 可以使用SparkConf对象创建JavaStreamingContext对象:

SparkConf conf = new SparkConf().setAppName(appName).setMaster(master);
JavaStreamingContext jsc = new JavaStreamingContext(conf, Durations.seconds(seconds));

appName参数是应用程序在集群UI上显示的名称。 master是Spark,Mesos或YARN集群URL,或者是以本地模式运行的特殊字符串"local [*]"。

实际上,当在集群上运行时,您不想在程序中硬编码master(即在程序中写死),而是希望使用spark-submit启动应用程序时得到master的值。 但是,对于本地测试和单元测试,您可以传递"local [*]"来运行Spark Streaming进程。 注意,这里内部创建的JavaSparkContext(所有Spark功能的起始点),可以通过jsc.sparkContext访问。

JavaStreamingContext对象也可以从现有的JavaSparkContext创建:

SparkConf conf = new SparkConf().setAppName("socket-spark-stream").setMaster("local[2]");

JavaSparkContext sparkContext = new JavaSparkContext(conf);
JavaStreamingContext jsc = new JavaStreamingContext(sparkContext, Durations.seconds(seconds));

批处理间隔必须根据应用程序和可用群集资源的延迟要求进行设置。 有关更多详细信息,请参阅“性能调优”部分。

定义上下文后,您必须执行以下操作:

  • 通过创建输入DStreams定义输入源
  • 通过对DStreams应用转换操作(transformation)和输出操作(output)来定义流计算
  • 可以使用streamingContext.start()方法接收和处理数据
  • 可以使用streamingContext.awaitTermination()方法等待流计算完成(手动或由于任何错误),来防止应用退出
  • 可以使用streamingContext.stop()手动停止处理。

注意点:

  • 一旦上下文已经开始,则不能设置或添加新的流计算。
  • 上下文停止后,无法重新启动。
  • 在同一时间只有一个StreamingContext可以在JVM中处于活动状态。
  • 在StreamingContext上调用stop()方法,也会关闭SparkContext对象。如果只想关闭StreamingContext对象,设置stop()的可选参数为false。
  • 一个SparkContext可以重复利用创建多个StreamingContext,只要在创建下一个StreamingContext之前停止前一个StreamingContext(而不停止SparkContext)即可。
目录
相关文章
|
5月前
|
消息中间件 分布式计算 Kafka
195 Spark Streaming整合Kafka完成网站点击流实时统计
195 Spark Streaming整合Kafka完成网站点击流实时统计
39 0
|
7月前
|
canal 分布式计算 关系型数据库
大数据Spark Streaming实时处理Canal同步binlog数据
大数据Spark Streaming实时处理Canal同步binlog数据
114 0
|
7月前
|
消息中间件 分布式计算 Kafka
大数据Spark Streaming Queries 2
大数据Spark Streaming Queries
83 0
|
4月前
|
分布式计算 大数据 Apache
【大数据技术】流数据、流计算、Spark Streaming、DStream的讲解(图文解释 超详细)
【大数据技术】流数据、流计算、Spark Streaming、DStream的讲解(图文解释 超详细)
64 0
|
9天前
|
分布式计算 大数据 数据处理
【Flink】Flink跟Spark Streaming的区别?
【4月更文挑战第17天】【Flink】Flink跟Spark Streaming的区别?
|
1月前
|
存储 分布式计算 Spark
实战|使用Spark Streaming写入Hudi
实战|使用Spark Streaming写入Hudi
46 0
|
3月前
|
分布式计算 监控 数据处理
Spark Streaming的容错性与高可用性
Spark Streaming的容错性与高可用性
|
3月前
|
分布式计算 数据处理 Apache
Spark Streaming与数据源连接:Kinesis、Flume等
Spark Streaming与数据源连接:Kinesis、Flume等
|
3月前
|
消息中间件 分布式计算 Kafka
使用Kafka与Spark Streaming进行流数据集成
使用Kafka与Spark Streaming进行流数据集成
|
3月前
|
分布式计算 监控 数据处理
Spark Streaming的DStream与窗口操作
Spark Streaming的DStream与窗口操作