2014-12-03 3 views
8

port 8080 üzerinde çalışan Apache Spark yazma karıştırmak nedir:shuffle okuma ve Kıvılcım yöneticinin aşağıdaki ekran görüntüsünde

enter image description here

"Shuffle Oku" & "karıştır Yaz" parametreler her zaman bu kodu boş :

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) 

} 

Neden & "karıştır Yaz" alanları boş "Shuffle Oku" dir? Ben herhangi Karışık okumak veya değerleri yazma görmek için küme/dağıtılmış modda uygulamayı çalıştırmak zorunda inanıyoruz nasıl

cevap

2

anlaşılması amacıyla kodunun üzerinde bu alanları doldurmak için tweaked olabilir. Tipik olarak, "rastgele" kıvılcım eylemlerin bir alt kümesi tarafından tetiklenen

17

Shuffling çoklu kıvılcım aşamaları arasında verilerin yeniden dağıtılmasını anlamına gelir (örneğin, GroupBy, vb birleştirme). "Shuffle Write", gönderilmeden önce (normalde bir sahnenin sonunda) ve "Shuffle Read" (Okumaya Devam Et), tüm yöneticilerin tüm yazılı serileştirilmiş verilerinin toplamının, bir sahnenin başlangıcında tüm yürütücüler tarafından okunan seri hale getirilmiş verilerin toplamı anlamına gelir.

Sizin programm "toplamak" operasyonu tetiklediği tek sahne vardır. Karıştırmaya gerek yoktur, çünkü bir Aşamada yalnızca bir kaç ardışık harita işlemi vardır.

deneyin bu slaytları bakmak için: http://de.slideshare.net/colorant/spark-shuffle-introduction

Ayrıca orijinal kağıttan chapture 5 okumak için yardımcı olabilir: http://people.csail.mit.edu/matei/papers/2012/nsdi_spark.pdf