2016-01-25 15 views
12

Esecuzione di lavori spark utilizzando scala, come previsto, tutti i lavori stanno finendo in tempo, ma in qualche modo alcuni registri INFO vengono stampati per 20-25 minuti prima che il lavoro si fermi.I lavori di Spark terminano ma l'applicazione richiede tempo per chiudere

Pubblicazione di alcuni screenshot dell'interfaccia utente che può aiutare a capire il problema.

  1. segue è volta scattata dal 4 fasi:

Time taken by 4 stages

  1. seguito è tempo tra ids lavoro consecutivi time between consecutive job ids

I non capisco perché ci sia così tanto tempo passato tra entrambi gli ID di lavoro.

seguito è il mio frammento di codice:

val sc = new SparkContext(conf) 
for (x <- 0 to 10) { 
    val zz = getFilesList(lin); 
    val links = zz._1 
    val path = zz._2 
    lin = zz._3 
    val z = sc.textFile(links.mkString(",")).map(t => t.split('\t')).filter(t => t(4) == "xx" && t(6) == "x").map(t => titan2(t)).filter(t => t.length > 35).map(t => ((t(34)), (t(35), t(5), t(32), t(33)))) 
    val way_nodes = sc.textFile(way_source).map(t => t.split(";")).map(t => (t(0), t(1))); 
    val t = z.join(way_nodes).map(t => (t._2._1._2, Array(Array(t._2._1._2, t._2._1._3, t._2._1._4, t._2._1._1, t._2._2)))).reduceByKey((t, y) => t ++ y).map(t => process(t)).flatMap(t => t).combineByKey(createTimeCombiner, timeCombiner, timeMerger).map(averagingFunction).map(t => t._1 + "," + t._2) 
    t.saveAsTextFile(path) 
} 
sc.stop() 

Alcuni più followup: spark-1.4.1 saveAsTextFile to S3 is very slow on emr-4.0.0

+0

Io in genere consiglio di usare il pacchetto spark-csv da Databricks piuttosto che saveAsTextFile, ma a parte questo, quale versione di Spark stai usando? –

+0

Vantaggio di saveAsTextFile è che posso salvare direttamente tutto su s3, non sono sicuro del funzionamento dei databricks del pacchetto spark-csv. Grazie per una certa direzione, la esamineremo comunque. scintilla - 1.4.1 scala - 2.10.6 – Harshit

risposta

2

Ho finito per aggiornare la mia versione di scintilla e il problema è stato risolto.

17

Come ho messo in un commento, Mi consiglia di utilizzare il pacchetto scintilla csv invece di sc.saveAsTextFile e non ci sono problemi con scrivendo direttamente a s3 usando quel pacchetto :)

Non so se usi s3 o s3n, ma forse provi a cambiare. Ho avuto problemi con l'uso di s3a su Spark 1.5.2 (EMR-4.2) dove le scritture sono scadute e il passaggio a s3 ha risolto il problema, quindi vale la pena provarlo.

Un paio di altre cose che dovrebbero accelerare scrive a s3 è quello di utilizzare il DirectOutputCommiter

conf.set("spark.hadoop.mapred.output.committer.class","com.appsflyer.spark.DirectOutputCommitter") 

e disabilitando la generazione di file _SUCCESS:

sc.hadoopConfiguration.set("mapreduce.fileoutputcommitter.marksuccessfuljobs", "false") 

Nota che disabilitando i file _SUCCESS deve essere impostato sulla configurazione hadoop di SparkContext e non su SparkConf.

Spero che questo aiuti.

1

Ho avuto lo stesso tipo di problema durante la scrittura di file su S3. Io uso la versione scintilla 2.0, solo per darvi un codice aggiornate per la risposta verificato

In Spark 2.0 è possibile utilizzare,

val spark = SparkSession.builder().master("local[*]").appName("App_name").getOrCreate() 

spark.conf.set("spark.hadoop.mapred.output.committer.class","com.appsflyer.spark.DirectOutputCommitter") 
spark.conf.set("mapreduce.fileoutputcommitter.marksuccessfuljobs", "false") 

Questo risolto il mio problema del lavoro sempre colpito

Problemi correlati