spark:学习杂记+如何求丢失的数据例子--25
来源:互联网 发布:淘宝店没流量 编辑:程序博客网 时间:2024/05/22 00:57
列表的使用:
1.计算长度.length scala> list(1, 2, 3).length res: Int = 3
2.init方法:返回除了最后一个元素之外余下的列表
3.last方法:返回列表的最后一个元素
4.reverse方法:反转列表
5.前缀与后缀:
take方法:返回列表前2个元素
drop方法:返回列表从第X元素的列表
6.apply方法:实现了随机元素的选择
7.indices方法:返回指定列表的所有有效索引值组成的列表
scala> abcde.indices
res: List[Int] = List(0, 1, 2, 3, 4)
8.啮合列表:zip,操作可以把两个列表组成一个对偶列表
scala> abcde.indices zip abcderes: List[(Int, char)] = List((0, a),(1, b),(2, c),(3, d),(4, e))若长度不匹配的元素将被丢掉
9.toString返回列表的标准字符串表达形式
10.xs mkString (pre, sep, post)
待显示的列表XS,需要显示在所有元素之前的前缀字符串pre,需要显示在每两个元素之间的分隔字符字符串sep,显示在最后面的字符串post
11.
scala> val buf = new StringBuilderbuf: StringBuilder = scala> abcde add String(buf, "(", ";", ")")res: StringBuilder = (a;b;c;d;e)12.转换列表:toArray,toString,toList
13.elements方法:用枚举器访问列表元素
scala> val it = abcde.elementsit: Interator[char] = non-empty iteratorscala> it.nextres: char = ascala> it nextres: char = b14.列表间映射:map,flatMmp,foreach
flatMap操作符与Map类似,不过它的右操作元能够返回元素列表的函数
Map返回的是包含列表的列表。而flatMap返回是把所有元素列表链接以后的单个列表
15.列表过滤:filter,partition,find,takewhile,dropwhile,span
filter:产生结果为true的结果
partition与filter功能相似但返回列表对
find:返回第一个满足限制的元素,而非全部
takewhile:返回符合条件的前缀集合
dropwhile:返回不满足条件的前缀集合
16.列表的论断:forall和exists
forall:如果列表所有元素满足约束条件P,返回true
exists:如果列表只要有一个元素满足约束条件P,返回true
17.折叠列表: /:和:\
op
/ \
op c
/ \
op b
/ \
z a
op(op(op(z, a),b),c)
scala> def sum(xs: List[Int]): Int = (z /: xs)(_ + _)sum: (List[Int])Intres: z + a + b + c18.列表排序:sort
scala> List(1, -3, 4, 2, 6) sort (_ < _)res: List[Int] = List(-3, 1, 2, 4, 6)//scala> words sort (_.length > _.length)res: List[java.lang.String] = List(quick, brown, fox, the)19.通过元素创建列表:List.apply
scala> List.apply(1, 2, 3)res: List[Int] = List(1, 2, 3)20.创建数值范围:List.range
scala> List.range(1, 5)res: List[Int] = List(1, 2, 3, 4)scala> List.range(1, 9, 2)res: List[Int] = List(1, 3, 5, 7)21.创建统一列表:List.make
scala> List.make(5, 'a')res: List[char] = List (a, a, a, a, a)22.解除啮合列表:List.unzip
scala> val zipped = "abcde".toList zip List(1, 2, 3)zipped: list[(Char, Int)] = List((a, 1),(b, 2),(c, 3))scala> List.unzip(zipped)res: (List[Char], List[Int]) = (List(a, b, c),List(1, 2, 3))23.链接列表:flatten方法
scala> val xss = List(List('a','b'),List('c'),List('d','e'))xss: List[List[Char]] = List(List(a, b),List(c),List(d, e))scala> List.flatten(xss)res: List[Char] = List(a, b, c, d, e)24.concat方法与flatten类似,能够连接多个元素列表,将多个列表以重复参数的形式直接传递给方法
25.映射及测试配对列表:List.map2,List.forall2,list.exists2
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
假设每份数据保存2个备份,这样就有2个机器存储了相同的数据,若一个数据丢失则需要找到哪个是丢失的数据
例如:输入ID: 1,1,3,4,6,7,4,3,7······
输出:6
用异或运算将列表中所有ID异或,得到的值即为所求ID,先将每个分区的数据异或再将结果进行异或
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package kjgimport org.apache.log4j.{Level, Logger}import org.apache.spark.{SparkContext, SparkConf}import org.apache.spark.SparkContext._import scala.collection.mutable.ListBuffer/** * Created by sendoh on 2015/4/14. */object NumOnce { def main(args: Array[String]): Unit ={ Logger.getLogger("org.apache.spark").setLevel(Level.WARN) Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF) if(args.length != 3){ println("Usage: java -jar code.jar dependency_jars file_locaion save_location") System.exit(0) } val jars = ListBuffer[String]() args(0).split(',').map(jars += _) // val conf = new SparkConf().setAppName("NumOnce").setMaster("local[2]").setSparkHome("/usr/local/spark-1.2.0-bin-hadoop2.4").setJars(jars) val sc = new SparkContext(conf) //每个分区分别对数据进行异或运算,最后在reduceByKey阶段,将各分区异或运算的结果再做异或运算合并,偶数次出现的数字异或运算之后为0,奇数次出现的数字异或后为数字本身 val data = sc.textFile("hdfs://localhost:9000/datatnt/textworde.txt") val result = data.mapPartitions(iter => { var temp = iter.next() while(iter.hasNext){ temp = temp ^ iter.next() } Seq((1, temp)).iterator }).reduceByKey(_ ^ _).collect() println("num appear once is :" + result(0)) }}
- spark:学习杂记+如何求丢失的数据例子--25
- spark:学习杂记--23
- spark:学习杂记--24
- spark:学习杂记--29
- spark:学习杂记--36
- spark:学习杂记--37
- spark:学习杂记--38
- spark:学习杂记--39
- spark:学习杂记--42
- spark:随机学习杂记--21
- spark:学习杂记Hbase--33
- spark:学习杂记+案例--40
- spark:学习杂记+案例--41
- spark:学习杂记+调用自行编译的函数--27
- Spark Streaming容错的改进和零数据丢失
- Spark Streaming容错的改进和零数据丢失
- Spark Streaming容错的改进和零数据丢失
- Spark Streaming容错的改进和零数据丢失
- 矩阵快速幂求斐波拉契数列的第n项
- Nginx 作为web server 的优化要点
- 关于生产者模式和消费者模式
- 数据库事务隔离级别
- 24.从公众号筹集10万股份学到的商业化思维
- spark:学习杂记+如何求丢失的数据例子--25
- 李白喝酒问题
- Android开发——Intent(2)
- 黑马程序员——C语言基础篇---指针
- 自定义封装简单的基于FMDB以及数据model的数据库操作
- mongoDB笔记2-shell Database对象
- poj2549
- Linux集群Hadoop2.5.1完全分布式安装
- 趣味CRACKME破解分析(发散思维)