MapPartitionsOperator

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语句
    })
    
  }
}

  

posted @ 2018-06-18 14:42  uuhh  阅读(81)  评论(0)    收藏  举报