原文网站:
http://spark.apache.org/docs/latest/streaming-programming-guide.html
本篇译文链接:
http://spark.apache.org/docs/latest/streaming-programming-guide.html#initializing-streamingcontext
为了初始化spark streaming项目,我们必须在项目开始之前定义StreamingContext 对象,以此作为我们的程序入口。
其中,变量appName即是你UI上面显示的应用名称,变量master(http://spark.apache.org/docs/latest/submitting-applications.html#master-urls)则指定了spark的运行方式,其中一种方式是通过“local[*]”的形式在本地运行。当以集群的方式运行的时候,我们很少在程序中将master写死,而是会通过传参的方式(http://spark.apache.org/docs/latest/submitting-applications.html)来设置。如果只是进行本地测试或者单元测试,则可以通过local[*]的方式进行本地运行。
而对于时间的间隔需要你对机器的资源和任务的需求进行衡量之后进行设置,链接http://spark.apache.org/docs/latest/streaming-programming-guide.html#setting-the-right-batch-interval中的方式可以参考。
在context定义之后,还需要以下的步骤:
1.对输入的数据进行定义,生成DStream;
2.定义对DStream的操作行为,包括转换,输出等;
3.使用方法 streamingContext.start()开始接收数据和执行;
4.使用方法streamingContext.awaitTermination()等待程序的结束,包括手动的和出现错误的原因;
5.我们可以通过streamingContext.stop()来手动结束程序。
需要记住下面一些关键点:
1.context一旦启动,就不能再添加新的执行操作;
2.context一旦结束,就不能再重新启动;
3.在同一时间,只能有一个context执行;
4.在StreamingContext执行stop()操作会同时终止SparkContext,如果只想终止StreamingContext,可以向stop()传递参数stopSparkContext=false的形式达到;
5.在一个SparkContext上面可以执行多个StreamingContext,但需要每次只有一个StreamingContext执行。