2017-12-16 1 views
0

Ich möchte die Zeit für beide parallele und sequentielle Aufgabe zu überprüfen.Wie messe ich parallele und sequentielle Ausführungszeit in Apache Spark und Scala

Sie finden meinen Code unten, aber für parallele Aufgabe dauert mehr Zeit als sequenziell. Wie kann ich das beheben? Mein primäres Ziel ist es, eine parallele Ausführung unter Verwendung des Spark-Kontextes zu erreichen:

object PrlAndSeqCheck { 
    def main(args: Array[String]): Unit = { 
     prlFunction() 
     seqFunction() 
    } 

    def prlFunction(): Unit ={ 
    var list=List(2,6,8,9,6,8,9,8,100,1001,12,49,484,48,29,39,49); 
    val conf=new SparkConf().setMaster("local[2]").setAppName("word count") 
    val sc=new SparkContext(conf) 
    val t1=System.nanoTime() 
    val rdd= sc.parallelize(list) 
    val rdd2=rdd.map(r=>r*1000) 

    var n=rdd2.reduce((a,b)=>if(a>b) a else b) 
    println(" parrallel result "+n) 

    val t2=System.nanoTime() 
    println("Parralle Time "+(t2-t1)) 
    } 

    def seqFunction(): Unit ={ 
    val t1=System.nanoTime() 
    var list=List(2,6,8,9,6,8,9,8,100,1001,12,49,484,48,29,39,49); 
    //var list2=List(); 
    var list2= list.map(a=>a*1000) 
    val n=list2.reduce((a,b)=>if(a>b) a else b) 
    println("Sequence result "+n) 
    val t2=System.nanoTime() 
    println("Sequence Time "+(t2-t1)) 
} 

Antwort

2

Dies ist zu erwarten. Für solch eine kleine Aufgabe ist Spark ein Overkill und hat einen großen Overhead. Wenn die Daten in den Speicher passen, sind Standard-Scala-Sammlungen die erste Wahl, und ich würde Spark nur für wirklich große Daten verwenden.

Wenn die Berechnungen sehr CPU-intensiv sind, können Sie darüber nachdenken, Multithreading innerhalb von Scala zu verwenden, z. durch parallele Sammlungen.

+0

Hallo Raphael, danke für deine Antwort.Ich habe verstanden, was du meinst.Und ich wollte wissen, dass mein oben geschriebener Code korrekt ist für parallele und Sequenz-Programmierung in Apache Spark? und funktioniert es für große Daten mit anderen Datenressource (Daten von HDFS oder lokale Textdatei von großen Daten)? –

+0

Ich bin neu bei Spark und Scala, bitte helfen –

Verwandte Themen