Spark提供的数据集操作类型有很多种,大致分为:转换操作和行动操作两大类,即对RDD的操作,RDD相关操作较多,这里不做表述。此外各个处理节点之间的通信模型不再像Hadoop只有Shuffle一种模式,用户可以命名、物化,控制中间结果的存储、分区等。下载完Spark后,启动spark shell 然后建在了spark自带的本地测试文件,以及简单的RDD操作和退出spark shell。
case class Point(var x:Double,var y:Double) extends Drawable{
def shift(deltaX:Double,deltaY:Double){x+=deltaX;y+=deltaY}}trait Drawable{def draw(){println(this.toString)}}abstract class Shape(var location:Point){//location是Shape的一个可变字段def moveTo(newLocation:Point){ //默认实现,只是修改位置location = newLocation} def zoom(scale:Double)}class Line(beginPoint:Point,var endPoint:Point) extendsShape(beginPoint) with Drawable{override def draw(){println(s"Line:(${location.x},${location.y})--(${endPoint.x},${endPoint.y})")}override def moveTo(newLocation:Point){endPoint.shift(newLocation.x - location.x,newLocation.y -location.y) //直线移动时,先移动另外一个端点location = newLocation //移动位置}override def zoom(scale:Double){val midPoint = Point((endPoint.x + location.x)/2,(endPoint.y +location.y)/2) //求出中点,并按中点进行缩放location.x = midPoint.x + scale * (location.x - midPoint.x)location.y = midPoint.y + scale * (location.y -midPoint.y)endPoint.x = midPoint.x + scale * (endPoint.x - midPoint.x)endPoint.y = midPoint.y + scale * (endPoint.y -midPoint.y)}}class Circle(center:Point,var radius:Double) extends Shape(center)with Drawable{override def draw(){println(s"Circle center:(${location.x},${location.y}),R=$radius")}override def zoom(scale:Double){radius = radius*scale //对圆的缩放只用修改半径} }object MyDraw{ def main(args: Array[String]) { val p=new Point(10,30)p.draw;val line1 = new Line(Point(0,0),Point(20,20))line1.drawline1.moveTo(Point(5,5))line1.drawline1.zoom(2)line1.drawval cir= new Circle(Point(10,10),5)cir.drawcir.moveTo(Point(30,20))cir.drawcir.zoom(0.5)cir.draw } }
来源:https://www.cnblogs.com/jbwen/p/12254031.html