1. package dayo1
  2.  
  3. import org.apache.spark.{SparkConf, SparkContext}
  4.  
  5. import scala.collection.mutable.ArrayBuffer
  6.  
  7. object MapAndPartitions {
  8. def main(args: Array[String]): Unit = {
  9. val cof = new SparkConf ().setAppName ( this.getClass.getSimpleName ).setMaster ( "local[*]" )
  10. val sc = new SparkContext ( cof )
  11.  
  12. //创建RDD(并列化方法)
  13. val arrayRDD = sc.parallelize ( Array ( , , , , , , , , ) )
  14.  
  15. //map数据每次处理一行数据
  16. arrayRDD.map ( elements => elements ).foreach ( println )
  17.  
  18. arrayRDD.mapPartitions(tp=>{
  19. val result=new ArrayBuffer[Int]()
  20. tp.foreach(tp=>{
  21. result+=tp
  22. })
  23. result.iterator
  24. }
  25. ).foreach(println)
  26.  
  27. sc.stop ()
  28. }
  29.  
  30. /**
  31. * 两个函数最终处理得到的结果是一样的
  32. *
  33. * mapPartitions比较适合需要分批处理数据的情况,比如将数据插入某个表,每批数据只需要开启一次数据库连接,大大减少了连接开支,伪代码如下:
  34. *
  35. * 复制代码
  36. * arrayRDD.mapPartitions(datas=>{
  37. * dbConnect = getDbConnect() //获取数据库连接
  38. * datas.foreach(data=>{
  39. * dbConnect.insert(data) //循环插入数据
  40. * })
  41. * dbConnect.commit() //提交数据库事务
  42. * dbConnect.close() //关闭数据库连接
  43. * })
  44. * 复制代码
  45. */
  46. }

spark map和mapPartitions的区别的更多相关文章

  1. spark中map与mapPartitions区别

    在spark中,map与mapPartitions两个函数都是比较常用,这里使用代码来解释一下两者区别 import org.apache.spark.{SparkConf, SparkContext ...

  2. Java中集合List,Map和Set的区别

    Java中集合List,Map和Set的区别 1.List和Set的父接口是Collection,而Map不是 2.List中的元素是有序的,可以重复的 3.Map是Key-Value映射关系,且Ke ...

  3. map和flatmap的区别+理解、学习与使用 Java 中的 Optional

    转自:map和flatmap的区别 对于stream,   两者的输入都是stream的每一个元素,map的输出对应一个元素,必然是一个元素(null也是要返回),flatmap是0或者多个元素(为n ...

  4. HashMap,Hashtable,ConcurrentHashMap 和 synchronized Map 的原理和区别

    HashMap 是否是线程安全的,如何在线程安全的前提下使用 HashMap,其实也就是HashMap,Hashtable,ConcurrentHashMap 和 synchronized Map 的 ...

  5. js es6 map 与 原生对象区别

    区别 object和Map存储的都是键值对组合.但是: object的键的类型是 字符串: map的键的类型是 可以是任意类型: 另外注意,object获取键值使用Object.keys(返回数组): ...

  6. map泛型 map不指定泛型 与 Map<Object,Object>的区别

    map泛型 map不指定泛型 与 Map<Object,Object>的区别 private void viewDetail(){ Map map1 = new HashMap(); Ma ...

  7. java8Stream map和flatmap的区别

    map和flatmap的区别 map只是一维 1对1 的映射 而flatmap可以将一个2维的集合映射成一个一维,相当于他映射的深度比map深了一层 , 所以名称上就把map加了个flat 叫flat ...

  8. 大文本 通过 hadoop spark map reduce 获取 特征列 的 属性值 计算速度

    大文本 通过 hadoop spark map reduce   获取 特征列  的 属性值  计算速度

  9. JS中map与forEach的区别

    很多同学可能对于map与forEach的区别不是太了解,今天我们介绍一下JS中的map与forEach方法, 我对map的理解是,这个方法对一个数组arr1中的每一个元素进行遍历(传递给一个数组,参数 ...

随机推荐

  1. 通过jenkins api远程调用job

    curl http://jenkins地址/job/job_name/config.xml --user username:token

  2. 查看hive的信息

    一.Hive下查看数据表信息的方法方法1:查看表的字段信息desc table_name; 方法2:查看表的字段信息及元数据存储路径desc extended table_name; 方法3:查看表的 ...

  3. php类知识---try catch

    <?php try { echo "比赛开始"."\n"; ); } catch (Exception $e ) { echo "获取错误信息: ...

  4. Linux-Shell编程之创建shell脚本并执行

    1.创建文件 touch myFirst.sh 2.编辑文件 vi myFirst.sh 点击键盘的字母 I 进行编辑,输入一下内容 #!/bin/bash # My First script ls ...

  5. mybatis使用@Insert @SelectKey 执行插入语句时获得主键自增长值(转)

    @Insert(" insert into table(c1,c2) " + " values (#{c1},#{c2}) ") @SelectKey(resu ...

  6. MySQL用户

    创建用户 在对 MySQL 的日常管理和实际操作中,为了避免用户恶意冒名使用 root 账号控制数据库,通常需要创建一系列具备适当权限的账号,应该尽可能地不用或少用 root 账号登录系统,以此来确保 ...

  7. ajax上传文件(javaweb)

    前台:FormData,     formData.append("fileName",$("#file")[0].files[0];); https://ww ...

  8. 【CSS】三栏/两栏宽高自适应布局大全

    页面布局 注意方案多样性.各自原理.各自优缺点.如果不定高呢.兼容性如何 三栏自适应布局,左右两侧300px,中间宽度自适应 (1) 给出5种方案 方案一: float (左右浮动,中间不用给宽,设置 ...

  9. PHP 分页 (分页类)

    分页类  以后可直接使用 /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 private ...

  10. 从浏览器地址栏输入url到显示页面的步骤

      在浏览器地址栏输入URL 浏览器查看缓存,如果请求资源在缓存中并且新鲜,跳转到转码步骤 HTTP1.0提供Expires,值为一个绝对时间表示缓存新鲜日期 HTTP1.1增加了Cache-Cont ...