版本 spark2.0
1.在SparkSession类里存在变量SparkContext,而一个spark任务只能有一个SparkContext且只能存在driver里,更改参数可以设置允许存在多个SparkContext但只能有一个是激活状态。因此,不能在foreachPartition这种需要在Executor里运行的方法里使用SparkSession操作数据库,sparSession本身可以序列化传过去,但在executor里sparSession的SparkContext为null,会报空指针异常。
2.spark每次获取kafka的数量可以通过配置参数“spark.streaming.kafka.maxRatePerPartition”设置(kafka的每个分区每秒获取数据的最大数量),间隔时间可以通过JavaStreamingContext初始化的时候设置,spark每次获取kafka的数量最大数量是 spark获取kafka间隔时间 x 参数“spark.streaming.kafka.maxRatePerPartition” x kafka分区数量