通过SparkAPI方式读取Mysql数据库数据创建RDD,sql查询语句执行情况

一、创建的测试用表rdd.student(id int,name string)
通过SparkAPI方式读取Mysql数据库数据创建RDD,sql查询语句执行情况
二、在代码中创建JdbcRDD读取数据
通过SparkAPI方式读取Mysql数据库数据创建RDD,sql查询语句执行情况
三、我们可以看到sql="select * from student where id > ? and id < ? "
其中?是占位符,第一个?是lowerBound ,第二个?是UpperBound
由于我们这里numPartitions设置=2,所以最后查询的语句翻译成sql就是
“select * from student where id > 0 and id < 1” + “select * from student where id > 2 and id < 4”
所以最后查询的结果就是(3,wangwu)

四,关于参数对于查询的影响,我们在源码注释中可以看到
通过SparkAPI方式读取Mysql数据库数据创建RDD,sql查询语句执行情况
所以解释了为什么查询结果是只有一个元素,而不是想当然的应该是将 id > 0 and id < 4 的数据都查询出来
解决方式: 改成>=和<= 就可以解决边界问题了