Appuim环境搭建 WebService android教程 微信直播 wpf swing graphics interface get coldfusion upload vue过滤器 后台管理界面模板 jquery选择器找子元素 node卸载命令 matlab停止运行命令 ipex接口 python与机器学习 edate函数的使用方法 monkey安装 java解析pdf idea开发python python编程教程 python创建数据库 windows搭建python开发环境 python函数大全 java编程学习入门 java操作mysql java开发者 java抽象方法 java的泛型 java查看数据类型 java字符串格式化 java八大基本数据类型 java接口开发 java读取文件 java程序设计教程 linux安装系统 sql实例 **
当前位置: 首页 > 学习教程  > 编程语言

SparkRDD算子(1)parallelize,makeRDD,textFile,filter,map,flatMap,distinct,union,intersection,subtract...

2020/11/4 15:23:20 文章标签:

Spark常用RDD算子(1)(scala版本) parallelize 调用SparkContext的parallelize(),将一个集合变成一个RDD def parallelize[T](seq: Seq[T],numSlices: Int)(implicit evidence$1: scala.reflect.ClassTag[T]): org.apache.spark.rdd.RDD[T] 第…

Spark常用RDD算子(1)(scala版本)

parallelize
调用SparkContext的parallelize(),将一个集合变成一个RDD
def parallelize[T](seq: Seq[T],numSlices: Int)(implicit evidence$1: scala.reflect.ClassTag[T]): org.apache.spark.rdd.RDD[T]
第一个参数是集合,第二参数是分区数,返回的是RDD[T]

scala> sc.parallelize(List("nanjing","is a beautiful city"))
res0: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[0] at parallelize at <console>:25

makeRDD
def makeRDD[T](seq: Seq[T],numSlices: Int)(implicit evidence$2: scala.reflect.ClassTag[T]): org.apache.spark.rdd.RDD[T]
参数和parallelize类似

scala> sc.makeRDD(List("nanjing","is a beautiful city"))
res1: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[1] at makeRDD at <console>:25

textFile
def textFile(path: String,minPartitions: Int): org.apache.spark.rdd.RDD[String]
把本地的某个文件读取出来创建RDD

scala> sc.textFile("E:/sparkdemo/in/sample.txt")
res2: org.apache.spark.rdd.RDD[String] = E:/sparkdemo/in/sample.txt MapPartitionsRDD[3] at textFile at <console>:25

filter
举例,在 E:/sparkdemo/in/sample.txt的内容如下

aa bb cc aa aa aa dd dd ee ee ee ee 
ff aa bb zks
ee kks
ee  zz zks

需求:将包含zks行的内容给找出来

    val lines=sc.textFile("E:/sparkdemo/in/sample.txt").filter(line=>line.contains("zks"))
    lines.collect.foreach(println)
    //输出
    ff aa bb zks
    ee  zz zks

map
接受一个函数,把这个函数用于RDD中的每个元素,将函数的返回结果作为结果RDD的编程
RDD中对应元素的值map是一对一的关系

举例,在 E:/sparkdemo/in/sample.txt的内容如下**

aa bb cc aa aa aa dd dd ee ee ee ee 
ff aa bb zks
ee kks
ee  zz zks

需求:把每一行变成一个数组

scala> val lines=sc.textFile("E:/sparkdemo/in/sample.txt")
scala> var mapRDD=lines.map(line=>line.split("\\s+"))
//   \\s表示换行,空格,回车等空白符;+表示一个或多个的意思
//输出
Array[Array[String]] = Array(Array(aa, bb, cc, aa, aa, aa, dd, dd, ee, ee, ee, ee), Array(ff, aa, bb, zks), Array(ee, kks), Array(ee, zz, zks))

distinct
去重,去掉重复的元素

scala> val rdd=sc.parallelize(List(1,1,2,3,3,4))
scala> rdd.distinct
//输出 Array(1,2,3,4)

union
合并两个RDD

scala> val rdd1=sc.parallelize(List(1,2,3,4))
scala> val rdd2=sc.parallelize(List(3,4,5,6))
scala> rdd1.union(rdd2).collect
//输出  Array[String]=Array(1,2,3,4,3,4,5,6)

intersction
取两个RDD的交集

scala> val rdd1=sc.parallelize(List(1,2,3,4))
scala> val rdd2=sc.parallelize(List(3,4,5,6))
scala> rdd1.intersction(rdd2).collect
//输出  Array[String]=Array(3,4)

subtract
返回在rdd1中出现,但是不在rdd2中出现的元素,不去重

scala> val rdd1=sc.parallelize(List(1,2,3,4))
scala> val rdd2=sc.parallelize(List(3,4,5,6))
scala> rdd1.subtract(rdd2).collect
//输出  Array[String]=Array(1,2)

cartesian
返回rdd1和rdd2的笛卡尔积

scala> val rdd1=sc.parallelize(List(1,2,3,4))
scala> val rdd2=sc.parallelize(List(3,4,5,6))
scala> rdd1.cartesian(rdd2).collect
//输出  Array[(Int,Int)]=Array((1,3),(1,4),(2,3),(2,4),(1,5),(1,6),(2,5),(2,6),(3,3),(3,4),(4,3),(4,4),(3,5),(3,6),(4,5),(4,6))

mapToPair
举例,在 E:/sparkdemo/in/sample.txt的内容如下

aa bb cc aa aa aa dd dd ee ee ee ee 
ff aa bb zks
ee kks
ee  zz zks

需求:将每一行的第一个单词作为K,1作为V创建pairRDD
scala版本没有mapToPair,只需要用map就可以

scala> val lines=sc.textFile("E:/sparkdemo/in/sample.txt")
scala> lines.map(x=>(x.split("\\s+")(0),1))
//输出  Array[(String,Int)]=Array((aa,1),(ff,1),(ee,1),(ee,1))

flatMapToPair
类似于xxx连接mapToPair是一对一,一个元素返回一个元素,而flatMapToPair可以一个元素返回多个,
相当于先flatMap再map
举例:把每一个单词作为K,1作为V

scala> val lines=sc.textFile("E:/sparkdemo/in/sample.txt")
scala> val faltMap=lines.flatMap(_.split("\\s="))
scala> val flatMapToPair=flatMap.map((_,1))
//输出 Array[(String,Int)]=Array((aa,1),(bb,1),(cc,1),(aa,1),(aa,1),(aa,1),(dd,1),(dd,1),(ee,1),(ee,1),(ee,1),(ee,1),(ff,1),(aa,1),(bb,1),(zks,1),(ee,1),(kks,1),(ee,1),(zz,1),(zks,1))

本文链接: http://www.dtmao.cc/news_show_350370.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?