Spark 基础 —— RDD(一)
来源:互联网 发布:网络机顶盒怎么安装图 编辑:程序博客网 时间:2024/05/31 19:39
Spark 为 RDD 提供的成员函数
(1).stats()
序列的数字特征(stats:statistics),
包括(count:计数,mean:均值,stdev:标准差,max:最大,min:最小值)
基本操作
val rawblocks = sc.textFile("linkage")rawblocksval head = rawblocks.take(10)head.lengthhead.foreach(println) # 函数式编程 # 将函数 println 作为参数传递给另一个函数以执行某个动作
声明函数
def isHeader(line: String) = line.contains("id_1") # 和 Python 类似,Scala 声明函数使用关键字 def # 和 Python 不同的是,我们必须为参数指定参数类型 # 函数返回值无需指定类型,使用类型推断
有时候我们希望能显式地指明函数返回类型,特别是碰到函数体很长,代码复杂并且包含多个 return 语句的情况。这时,Scala 编译器不一定能推断出函数的返回类型,为了函数代码的可读性更好,也可以指明函数的返回类型。这样在阅读代码的时候,就不必重新把整个函数读一遍了。
def isHeader(line: String): Boolean = { line.contains("id_1");}
通过用 Scala 的 Array 类的 filter 方法打印输出结果,可以在 head 数组上测试新编写的 Scala 函数:
head.filter(isHeader).foreach(println)head.filterNot(isHeader).foreach(println)
还可以利用 Scala 对匿名函数的支持,在 filter 函数里面对 isHeader 函数取非:
head.filter(x => !isHeader(x)).foreach(println)
Scala 程序员最讨厌的就是键盘输入,因此 Scala 设计了许多小功能来减少输入,比如在匿名函数的定义中,为了定义匿名函数并给参数指定名称,只输入了字符 x => 。但像这么简单的匿名函数,甚至都没必要这么做:Scala 允许使用下划线_
(正如 Python 迭代时,for _ in range(n)
)表示匿名函数的参数,也即这样:
head.filter(!isHeader(_)).foreach(println)
用元组和 case class 对数据进行结构化
和 Python 一样,Scala 有内置 tuple 类型,可用于快速创建二元组,三元组和更多不同类型数值的集合,是一种表示记录的简单方法。
val line = head(5)val pieces = line.split(',')
注意访问数组元素时用圆括号而不是方括号,Scala 语言访问数组元素是函数调用,不是什么特殊操作符。Scala 允许在类里定义一个特殊函数 apply,当把对象当作函数处理的时候,这个 apply 函数就会被调用,所以 head(5) 其实等价与 head.apply(5).
def toDouble(s: String) = { if ("?".equals(s)) Double.NaN else s.toDouble}def parse(line: String) = { val pieces = line.split(',') val id1 = pieces(0).toInt val id2 = pieces(1).toInt val scores = pieces.slice(2, 11).map(toDouble) val matched = pieces(11).toBoolean (id1, id2, scores, matched)}
- Spark 基础 —— RDD(一)
- Spark RDD基础(一)
- Spark基础入门(一)--------RDD基础
- Spark 基础 —— RDD(二)
- Spark 基础——RDD 详解
- Spark 基础 —— RDD 常用成员函数
- Spark基础——RDD特性及操作
- spark源码阅读笔记RDD(一)RDD的基本概念
- Spark之RDD基础
- Spark-RDD编程基础
- Spark RDD基础
- Spark RDD基础操作
- Spark内核:RDD基础
- Spark学习——RDD
- 走进spark(一) rdd.checkpoint
- Spark学习笔记(一)--RDD编程
- Spark源码阅读(一)RDD
- Spark笔记:RDD基本操作(一)
- idea编译时报java.lang.OutOfMemoryError: Java heap space异常
- 平衡树之AVL树旋转
- S5PV210串行通信接口详解2
- mybatis报org.apache.ibatis.reflection.ReflectionException: Error instantiating null with invalid type
- 流水灯实验
- Spark 基础 —— RDD(一)
- 使用Asset Catalog 的Slicing的功能
- OC内存管理常见面试题整理
- 20160329 HDU2082 找单词(生成函数)
- 在一个字符串中求出 大写字母的个数,小写字母的个数,及非英文字母数
- http协议状态码和web错误解决总结
- bzoj 2157(link cut tree)
- 【C++】内存的那些事儿
- Java Socket的TCP编程的简单总结