spark:学习杂记--24
2015-04-11 23:39
351 查看
1.在代码中定义SetMaster:
.setMaster(“spark://192.168.30.129:7077”)有可能出现内存不足
2.代替“/”运算符:
val x = new Rational(1,2)
X:Rational = 1/2
3.不建议在定义标识符结尾时使用下划线
4.Rational:
5.把左面的格式转换为右面···
(int: x) => x + 1 或 increase = (x: Int) => {println(```)
`````````````
x + 1 }
6.所有集合类都能用到foreach方法,它以函数作为入参,并对每个元素调用该函数打印集合类中所有元素。
*foreach方法被定义在特质Iterable中,它是List,Set,Array和Map的共有特质
7.“_”占位符。
8.求中位数:
.setMaster(“spark://192.168.30.129:7077”)有可能出现内存不足
2.代替“/”运算符:
val x = new Rational(1,2)
X:Rational = 1/2
3.不建议在定义标识符结尾时使用下划线
4.Rational:
implicit def intToRational(x: Int) = new Rational(x) val r = new Rational(2, 3) r: Rational = 2/3 2 * r rel: Rational = 4/3
5.把左面的格式转换为右面···
(int: x) => x + 1 或 increase = (x: Int) => {println(```)
`````````````
x + 1 }
6.所有集合类都能用到foreach方法,它以函数作为入参,并对每个元素调用该函数打印集合类中所有元素。
*foreach方法被定义在特质Iterable中,它是List,Set,Array和Map的共有特质
7.“_”占位符。
scala> val d = sum _ d: (Int, Int, Int) => Int = <function> scala> d(10, 20, 30) rel : Int = 60
8.求中位数:
package akria import org.apache.log4j.{Level, Logger} import org.apache.spark.{SparkContext, SparkConf} import org.apache.spark.SparkContext.rddToPairRDDFunctions import scala.collection.mutable.ListBuffer /** * Created by sendoh on 2015/4/11. */ object Median { 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_location save_location") System.exit(0) } val jars = ListBuffer[String]() args(0).split(',').map(jars += _) val conf = new SparkConf().setAppName("Median").setSparkHome("/usr/local/spark-1.2.0-bin-hadoop2.4").setJars(jars) val sc = new SparkContext(conf) // val data = sc.textFile("hdfs://localhost:9000/datatnt/textwordc.txt") //将数据逻辑划分为10个区域,统计每个区域的数据量 val mappeddata = data.map(num => {(num / 1000, num)}) val count = mappeddata.reduceByKey((a, b) => {a + b}).collect() //根据总的数据量,依次根据划分的区域序号由低到高依次累加,判断中位数落在哪个区域,并获取到中位数在区域中的偏移量 val sum_count = count.map(data => {data._2}).sum var temp = 0 var index = 0 var mid = sum_count / 2 for(i <- 0 to 10){ temp = temp + count(i) if(temp >= mid){ index = i break } } //中位数在区域中的偏移量 val offset = temp - mid //获取中位数所在区域的偏移量为offset的数,也就是中位数 val result = mappeddata.filter(num => num._1 == index).takeOrdered(offset) println("Median is " + result(offset)) sc.stop() } }
相关文章推荐
- spark:学习杂记--23
- spark:学习杂记+快速排序--26
- Spark学习笔记(24)StreamingContext及JobScheduler源码图解
- spark:随机学习杂记--21
- Spark生态之Alluxio学习24--分别读取HDFS和Alluxio的数据进行line count比较分析
- Spark中组件Mllib的学习24之线性回归1-小数据集
- spark:学习杂记+调用自行编译的函数--27
- spark:学习杂记--36
- spark:学习杂记+仿写案例--35
- spark学习-24-Spark算子Transformations和Action使用大全(Action章)
- spark:学习杂记+案例--40
- spark:学习杂记+如何求丢失的数据例子--25
- spark:学习杂记Hbase--33
- spark:学习杂记--38
- spark:学习杂记--42
- spark:学习杂记+案例--41
- spark:学习杂记--29
- spark:学习杂记--39
- spark:学习杂记+wordcount(单词统计)--22
- spark:学习杂记+仿写案例--28