微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

spark学习三

今天完成了实验二的最后两个实验,由于对Scala语言并不了解,不知道如何进行文件读取,后来通过上网查询,找到了相关代码

spark中partition的概念
partition是RDD的最小单元,是盛放文件的盒子,一个文件可能需要多个partition,但是一个partition只能
存放一个文件中的内容,partition是spark计算中,生成的数据在计算空间内最小单元。

用于根据文件类型的输入源常见RDD的方法叫textFile()方法
 
textFile().cache()中cache()是用于将一个RDD进行缓存,在之后的使用过程中就不需要重新计算,可以大大节省程序运行时间。
persist()也是用于将RDD进行缓存,它还可以根据情况设置缓存级别。

2.模拟图形绘制

 

 

 

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)extends Shape(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.draw

         line1.moveto(Point(5,5))

         line1.draw

         line1.zoom(2)

         line1.draw

        

         val cir=new Circle(Point(10,10),5)

         cir.draw

         cir.moveto(Point(30,20))

         cir.draw

         cir.zoom(0.5)

         cir.draw   

    }

    

 }

3. 统计生成

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐