博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【原】Spark 编程指南
阅读量:4551 次
发布时间:2019-06-08

本文共 2176 字,大约阅读时间需要 7 分钟。

尊重原创,注重版权,转贴请注明原文地址: 

 
1、配置程序使用资源:
System.setProperty("spark.executor.memary", "512m") 
 
2、创建自己的SparkContext对象:
val sc = new  SparkContext("master", "Job name", "$SPARK_HOME", "Job JARs")

 

3、创建RDDs
sc.parallelize(List(1, 2, 3))    // 将scala原生的集合转换成RDDsc.textFile("directory/*.txt")    // 将本地磁盘上的文本转换成RDDsc.testFile("hdfs://namenode:port/path/file")    // 将分布式文件系统上的文件转换成RDD

 

4、基本的RDD Transformations操作:
val nums = sc.parallelize(List(1, 2, 3))val squares = nums.map(x => x * x)    // {1, 4, 9}val even = squares.filter(_ % 2 == 0)    // {4}nums.flatMap(x => 1 to x)    // {1, 1, 2, 1, 2, 3}

 

5、基本的Actions操作:
val nums = sc.parallelize(List(1, 2, 3))nums.collect()    // Array(1, 2, 3)nums.take(2)    // Array(1, 2)nums.count()    // 3nums.reduce(_ + _)    // 6nums.saveAsTextFile("hdfs://file.txt")

 

6、针对Key-Value对的作业:
val pair = (a, b)pair._1    // apair._2    // b
 
7、一些Key-Value对的操作:
val pets = sc.parallelize(List(("cat", 1), ("dog", 1), ("cat", 2)))pets.reduceByKey(_ + _)    // {(cat, 3), (dog, 1)}pets.groupByKey()    // {(cat, Seq(1, 2)), (dog, 1)}pets.sortByKey()    // {(cat, 1), (cat, 2), (dog, 1)}
 
8、其他Key-Value的操作:
val visits = sc.parallelize(List(("index.html", "1.2.3.4"), ("about.html", "3.4.5.6"), ("index.html", 1.3.3.1)))val pageNames = sc.parallelize(List(("index.html", "Home"), ("about.html", "About")))visits.join(pageNames)    // ("index.html", ("1.2.3.4", "Hmoe"))                          // ("index.html", ("1.3.3.1", "Home"))                          // ("about.html", ("3.4.5.6", "About"))vlisits.cogroup(pageNames)    // ("index.html", (Seq("1.2.3.4", 1.3.3.1), Seq("Home")))                              // ("about.html", (Seq("3.4.5.6"), Seq("About")))

 

9、控制Reduce Tasks的数量:
所有的RDD组操作都可以选择设置第二个参数来控制tasks的数量
words.reduceByKey(_ + _, 5)words.groupByKey(5)visits.join(pageViews, 5)
当然,也可以通过设置spark.default.parallelism属性值来控制
 
10、使用本地变量:
在闭包中你使用任何外部变量都将自动的传递到集群:
val query = Console.readLine()
pages.filter(_.contains(query)).count()
一些注意事项:
  • Each task gets a new copy(updates aren`t sent bask)
  • 变量必须序列化
  • 不要使用一个对象的外部域
 
11、集群中有较大危害的示例:
12、其他RDD操作:
  • sample():确定样本子集
  • union():合并两个RDD
  • cartesian():交叉乘积
  • pipe():通过外部程序

转载于:https://www.cnblogs.com/vincent-hv/p/3322966.html

你可能感兴趣的文章
微信小程序wepy开发,$apply()不能更新页面数据的情况
查看>>
移动web端在线观看ppt
查看>>
02-vue学习篇-以正确的姿势使用vue
查看>>
第一个Azure应用
查看>>
分享、收藏、打印页面操作
查看>>
别名节点aliases
查看>>
BZOJ-10-1176: [Balkan2007]Mokia-CDQ第二类应用
查看>>
题目2
查看>>
js创建对象的方式 三种
查看>>
elementUI vue v-model的修饰符
查看>>
数组复制:关于java中引用传递的一个例子
查看>>
第九周PSP
查看>>
JS十进制转二进制(控制位数)
查看>>
机器学习算法一览图
查看>>
luogu1972:HH的项链
查看>>
C++语言 文件对话框的调用
查看>>
运算符
查看>>
4553: [Tjoi2016&Heoi2016]序列
查看>>
CF 959 E. Mahmoud and Ehab and the xor-MST
查看>>
java读取文件夹下所有文件并替换文件每一行中指定的字符串
查看>>