package com.bjsxt.scala.spark.operator
import org.apache.spark.{SparkContext, SparkConf}
import scala.collection.mutable.ListBuffer
/**
* Created by root on 2016/6/13.
*/
object MapPartitionsOperator {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("MapPartitionsOperator").setMaster("local")
val sc = new SparkContext(conf)
val arr = Array("xurunyun","liangyongqi","wangfei")
val rdd = sc.parallelize(arr)
/**
* mapPartitions的适应场景:将RDD的数据写入到数据库oracle redis mysql
* 为啥得用mapPartitions?
* 减少创建数据库的连接次数
*/
rdd.mapPartitions(x => {
println("map")
val list = new ListBuffer[String]()
/**
* 将RDD中的数据写入到数据库中,绝大部分使用mapPartition算子来实现
*/
//创建一个数据库连接
while(x.hasNext){
//拼接SQL语句
list += x.next()+"==="
}
//执行SQL语句 批量插入
list.iterator
}).count()
rdd.map(x=>{
//创建一个数据库连接
//pinjieSQL语句
//执行sql语句
})
}
}