我们正处于转变大型企业当前数据架构的开始阶段,我目前正在构建一个Spark Streaming ETL框架,我们将所有源连接到目的地(源/目的地可能是Kafka主题,Flume,HDFS,等)通过转换.这看起来像是这样的:
SparkStreamingEtlManager.addEtl(Source, Transformation*, Destination)
SparkStreamingEtlManager.streamEtl()
streamingContext.start()
假设是,因为我们应该只有一个SparkContext,所以我们将在一个应用程序/ jar中部署所有ETL管道.
这个问题是batchDuration是上下文本身的属性而不是ReceiverInputDStream的属性(这是为什么?).我们是否需要拥有多个Spark群集,或者允许多个SparkContexts并部署多个应用程序?有没有其他方法可以控制每个接收器的批处理持续时间?
如果我的任何假设是天真的或需要改写,请告诉我.谢谢!