spark记录

版本 spark2.0

疑问:

1.按照理解,sparksession.sql()是不会立即执行的,只有后面的collect等方法执行的时候才会触发,那为什么执行insert...select的时候不需要再执行acrion方法就可以生效 

2.如何在遍历spark Streaming的过程中使用sparkSession

 

结论:

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分区数量

posted @ 2018-03-06 15:35  渚之汐酱  阅读(168)  评论(0编辑  收藏  举报