2014-12-03 15 views
8

Trong ảnh chụp màn hình dưới đây của Spark quản trị chạy trên cổng 8080:gì là ngẫu nhiên đọc & xáo trộn ghi trong Apache Spark

enter image description here

Các "ngẫu nhiên đọc" & "shuffle Write" thông số luôn trống cho mã này :

import org.apache.spark.SparkContext; 

object first { 
    println("Welcome to the Scala worksheet") 

    val conf = new org.apache.spark.SparkConf() 
    .setMaster("local") 
    .setAppName("distances") 
    .setSparkHome("C:\\spark-1.1.0-bin-hadoop2.4\\spark-1.1.0-bin-hadoop2.4") 
    .set("spark.executor.memory", "2g") 
    val sc = new SparkContext(conf) 

    def euclDistance(userA: User, userB: User) = { 

    val subElements = (userA.features zip userB.features) map { 
     m => (m._1 - m._2) * (m._1 - m._2) 
    } 
    val summed = subElements.sum 
    val sqRoot = Math.sqrt(summed) 

    println("value is" + sqRoot) 
    ((userA.name, userB.name), sqRoot) 
    } 

    case class User(name: String, features: Vector[Double]) 

    def createUser(data: String) = { 

    val id = data.split(",")(0) 
    val splitLine = data.split(",") 

    val distanceVector = (splitLine.toList match { 
     case h :: t => t 
    }).map(m => m.toDouble).toVector 

    User(id, distanceVector) 

    } 

    val dataFile = sc.textFile("c:\\data\\example.txt") 
    val users = dataFile.map(m => createUser(m)) 
    val cart = users.cartesian(users) // 
    val distances = cart.map(m => euclDistance(m._1, m._2)) 
    //> distances : org.apache.spark.rdd.RDD[((String, String), Double)] = MappedR 
    //| DD[4] at map at first.scala:46 
    val d = distances.collect // 

    d.foreach(println) //> ((a,a),0.0) 
    //| ((a,b),0.0) 
    //| ((a,c),1.0) 
    //| ((a,),0.0) 
    //| ((b,a),0.0) 
    //| ((b,b),0.0) 
    //| ((b,c),1.0) 
    //| ((b,),0.0) 
    //| ((c,a),1.0) 
    //| ((c,b),1.0) 
    //| ((c,c),0.0) 
    //| ((c,),0.0) 
    //| ((,a),0.0) 
    //| ((,b),0.0) 
    //| ((,c),0.0) 
    //| ((,),0.0) 

} 

Tại sao các trường "Ngẫu nhiên đọc" & "Trộn bài viết" trống? Có thể mã trên được tinh chỉnh để điền vào các trường này để hiểu cách

Trả lời

2

Tôi tin rằng bạn phải chạy ứng dụng của mình ở chế độ cụm/phân phối để xem mọi giá trị đọc hoặc ghi ngẫu nhiên. Thông thường, "ngẫu nhiên" được kích hoạt bởi một tập hợp con các hành động Spark (ví dụ: nhómBy, tham gia, v.v.)

17

Xáo trộn có nghĩa là phân bổ lại dữ liệu giữa nhiều giai đoạn Spark. "Shuffle Write" là tổng của tất cả các dữ liệu được tuần tự viết trên tất cả các trình thực thi trước khi truyền (thông thường ở cuối giai đoạn) và "Shuffle Read" nghĩa là tổng dữ liệu được đọc tuần tự trên tất cả các phần tử thực thi ở đầu giai đoạn.

Chương trình của bạn chỉ có một giai đoạn, được kích hoạt bởi thao tác "thu thập". Không cần xáo trộn, bởi vì bạn chỉ có một loạt các hoạt động bản đồ liên tiếp được pipelined trong một Giai đoạn.

Cố gắng có một cái nhìn tại các slide: http://de.slideshare.net/colorant/spark-shuffle-introduction

Nó cũng có thể giúp đỡ để đọc chapture 5 từ giấy bản gốc: http://people.csail.mit.edu/matei/papers/2012/nsdi_spark.pdf

Các vấn đề liên quan