剖析Spark数据分区之Spark streaming&TiSpark
本文是《剖析Spark数据分区》系列文章的第三篇,本篇我们将分析Spark streaming,TiSpark中的数据分区。 系列一: 剖析Spark数据分区之Hadoop分片 系列二: 剖析Spark数据分区之Spark RDD分区 1. Kafka +Spark Streaming 图 1 Spark Streaming从Kafka接收数据,转换为Spark Streaming中的数据结构DStream即离散数据流。 数据接收方式有两种: 1)使用Receiver接收的旧方法; 2)使用Direct拉取的新方法 (Spark 1.3引入) ; 1)Receiver方式 当前spark已经 不支持 该模式。 图 2 receiver模式的 并行度 由spark.streaming.blockInterval决定,默认是200ms。 receiver模式接收block.batch数据后会封装到RDD中,这里的block对应RDD中的partition。 batchInterval一定的情况 下: 减少 spark.streaming.Interval参数值,会 增大 DStream中的partition个数。 建议spark.streaming.Interval 最低不能低于50ms 。 2)Direct方式 图 3 Spark会创建跟Kafka partition一样多的RDD