SparkStreaming一个批次有多久?一个批次有多少条数据?
关于批次间隔需要结合业务来确定的,如果实时性要求高,批次间隔需要调小。 每个批次的数据量是和每天产生的数据量有直接关系,在计算的时候需要考虑峰值的情况。
批次累加
UpdataStateBykey updataStateBykey是特殊的reduceByKey, 相当于oldValue+reduceByKey(newValue1,newValue2),通过传入一个updateFunc来实现批次间数据累加的操作。
解决数据积压(重点)
批处理时间<<批间隔时间:流量太小,集群闲置,浪费资源,批处理时间>>批间隔时间:流量太大,集群繁忙,数据积压导致系统崩溃#####通过设置spark.streaming.kafka.maxRatePerPartition可以静态调整每次拉取的最大流量,但是需要重启集群。
SparkStreaming整合Kafka(重点)
receiver方式 sparkStream启动一个单独的线程receiver定时使用kafka高阶API向kafka拉取数据,并自动地更新zk的offsets。优点:用户专注于业务,不需要关心偏移量的维护,代码简洁。
DStream
DStream是Spark Streaming的基础抽象,代表持续的数据流,它由一系列连续的RDD组成,一个批次间隔接收的数据只会存放在一个block中,因此每个批次间隔都只会产生一个RDD。