1、foreachRDD设计模式
正确使用foreachRDD的方式,每一个分区创建一个单例connection对象。
dstream.foreachRDD { rdd =>
rdd.foreachPartition { partitionOfRecords =>
//创建单例对象 val connection = createNewConnection()
partitionOfRecords.foreach(record => connection.send(record))
connection.close()
}
}
2、并行机制
- 数据并行接收,以kafka为例,从多个topics接收数据。
val numStreams = 5
val kafkaStreams = (1 to numStreams).map { i => KafkaUtils.createStream(...) }
val unifiedStream = streamingContext.union(kafkaStreams)
unifiedStream.print()
- 数据并行处理
和spark.default.parallelism有关。
3、提交Jobs
Driver:运行main()创建SparkContext;监听Executor,提供Web UI。
在cluster模式,driver内部起一个AM,AM受yarn管理。在client模式,AM仅仅用来申请资源。
参考链接:https://spark.apache.org/docs/1.6.1/streaming-programming-guide.html
原文地址:https://www.cnblogs.com/VillageKnight-Ding/p/9084090.html
时间: 2024-10-12 13:15:50