org.apache.spark.Accumulable
一种可以累加的数据类型---累加器
典型成员方法:
add(term:T):Unit
向累加器里面添加数据
merge(ter,:T):Unit
将两个累加器聚合
org.apache.spark.Accumulator
累加器,初始化由SparkContext#accumulator创建
scala> val accum = sc.accumulator(0)
accum: spark.Accumulator[Int] = 0
scala> sc.parallelize(Array(1, 2, 3, 4)).foreach(x => accum += x)
...
10/09/29 18:41:08 INFO SparkContext: Tasks finished in 0.317106 s
scala> accum.value
res2: Int = 10
org.apache.spark.Aggregator
case class Aggregator[K,V,C](createCombiner:(V)=>C,mergeValue:(C,V)=>C,mergeCombiners:(C,C)=>C)
用于聚合数据的一组函数
val createCombiner:(V)=>C创建聚合的初始值
val mergeValue:(C,V)=>C将新值添加到聚合结果中
val mergeCombiners:(C,C)=>合并来自多个mergeValue函数的输出
org.apache.spark.Partition
trait Partition extends Serializable
RDD的分区
org.apache.spark.HashPartition
class HashPartition extends Partition 借助java中的hashCode对象实现分区
java数组的hashCode是基于数组下标而非数组内容。
三个成员方法
def equals(other:Any):Boolean
def getPartition(key:Any):Int
def numPartition:Int
org.apache.spark. Logging
trait Logging extends AnyRef
日子特性类
org.apache.spark.SparkConf
class SparkConf extends Cloneable with Logging
spark应用的配置,通过键值对设置
注意一点:当SparkConf对象传递给Saprk后,就不能在修改了。Spark不支持运行时修改配置
创建:
new SparkConf().setMaster("local").setAppName("My app")
org.apache.spark.SparkContext
spark功能的主要入口点,SparkContext表示到Spark集群的连接,可以用于在该集群上创建rdd、累加器(Accumulators)和广播变量(Broadcast)。
每个JVM可能只有一个SparkContext是活动的。如果要创建新的SparkContex,需要先用stop()方法结束当前SparkContext
构造函数方法:
- 允许直接设置公共Spark属性的构造函数
new SparkContext(master:String,appName:String,sparkHome:String=null,jars:Seq[String]=Nil,enviroment:Map[String,String]=Map(),preferredNodeLocationData:Map[String,Set[SplitInfo]]=Map())
2.设置spark的公共属性
new SparkContext(master:String,appName:String,conf:SparkConf)
/**
* Alternative constructor that allows setting common Spark properties directly
*
* @param master Cluster URL to connect to (e.g. mesos://host:port, spark://host:port, local[4]).
* @param appName A name for your application, to display on the cluster web UI
* @param conf a [[org.apache.spark.SparkConf]] object specifying other Spark parameters
*/
def this(master: String, appName: String, conf: SparkConf) =
this(SparkContext.updatedConf(conf, master, appName))