页面树结构

2017-07-25 Apache Spark 2.2.0 官方文档中文版发布 : http://spark.apachecn.org/docs/cn/2.2.0/


MachineLearning 优酷地址 : http://i.youku.com/apachecn

转至元数据结尾
转至元数据起始

Spark 0.9.1Spark 1.0 之间,它们有一些 API 的改变以确保未来 API 的稳定性。这一章阐述需要迁移您已经在的代码到 1.0 版本的步骤。

Input DSteams(输入流): 所有创建 Input Steam(输入流)的操作(例如,StreamingContext.socketStreamFlumeUtils.createStream,等等。)现在返回 InputDStream / ReceiverInputDStream (而不是 DStream) 的 Scala 版本,和 JavaInputDStream / JavaPairInputDStream /JavaReceiverInputDStream / JavaPairReceiverInputDStream(而不是 JavaDStream) 的 Java 版。这将确保特定输入流的功能可以添加到这些类中在未来不需要破坏二进制兼容性。注意您已经存在的 Spark Streaming 应用程序应该不需要任何改变(因为那些类是 DStream / JavaDStream 的子类),但可能需要使用 Spark 1.0 重新编译。

Custom Network Receivers(自定义网络接收器): 从发布 Spark Streaming 以来,自定义网络接收器能够在 Scala 使用 NetworkReceiver 类自定义,该 API 在错误处理和报告中被限制了,并且不能够被 Java 使用。从 Spark 1.0 开始,自个类被 Receiver 替换了并且带来了下面的好处。

  • stoprestart 这样的方法已经被添加以更好的控制 Receiver(接收器)的生命周期。更多详细信息请看 自定义 Receiver 指南
  • 自定义 Receiver 能够使用 ScalaJava 实现。

为了迁移你已存在的自定义 Receiver,从更早的 NetworkReceiver 到新的 Receiver。您需要去做如下事情。

  • 让您自定义的 Receiver 继承 org.apache.spark.streaming.receiver.Receiver 而不是 org.apache.spark.streaming.dstream.NetworkReceiver
  • 之前,一个 BlockGenerator 对象必须去通过自定义 Receiver 创建,它接收的数据被添加然后存在 Spark 中。它必须显示的从 onStart()stop() 方法来启动和停止。新的 Receiver 类让这个是不必要的因为它添加了一组名为 store(<data>)的方法,能够在 Spark 中被调用以存储数据。所以,为了迁移你自定义的网络接收器,删除任何的 BlockGenerator 对象(在 Spark 1.0 中再也不存在),并且在接收数据时使用 store(...)方法。

Actor-base Receivers(基于 Actor 的接收器): 这个基于 Actor 的接收器 API 已经被移到 DStream Akka 中去了。更多详细信息请参考该工程。