10.1 一个简单的例子

我们会从一台服务器的 7777 端口上收到一个以换行符分隔的多行文本,要从中筛选出包含单词 error 的行,并打印出来。

  1. 从创建 StreamingContext 开始,它是流计算功能的主要入口。
    StreamingContext 会在底层创建出 SparkContext,用来处理数据。
    其构造函数还接收用来指定多长时间处理一次新数据的批次间隔(batch interval)作为输入.
  2. 调用 socketTextStream() 来创建出基于本地 7777 端口上收到的文本数据的 DStream。
  3. 把 DStream 通过 filter() 进行转化,只得到包含“error”的行。
  4. 使用输出操作 print() 把一些筛选出来的行打印出来。
  5. 要开始接收数据,必须显式调用 StreamingContext 的 start() 方法。
    这样,Spark Streaming 就会开始把 Spark 作业不断交给下面的 SparkContext 去调度执行。
  6. 执行会在另一个线程中进行,所以需要调用 awaitTermination 来等待流计算完成,来防止应用退出。

请注意,一个 Streaming context 只能启动一次,所以只有在配置好所有 DStream 以及所需要的输出操作之后才能启动。