Sto facendo funzionare questo codice su una macchina locale:Passare argomenti a Apache Spark
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
object SimpleApp {
def main(args: Array[String]) {
val logFile = "/Users/username/Spark/README.md"
val conf = new SparkConf().setAppName("Simple Application")
val sc = new SparkContext(conf)
val logData = sc.textFile(logFile, 2).cache()
val numAs = logData.filter(line => line.contains("a")).count()
val numBs = logData.filter(line => line.contains("b")).count()
println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))
}
}
mi piacerebbe eseguire il programma, ma eseguirlo su file diversi - funziona attualmente solo su README.md. Come faccio a passare il percorso del file di un altro file quando è in esecuzione Spark (o qualsiasi altro argomento per questo?). Ad esempio, mi piacerebbe cambiare contains("a")
in un'altra lettera.
Faccio il programma gestito da:
$ YOUR_SPARK_HOME/bin/spark-submit \
--class "SimpleApp" \
--master local[4] \
target/scala-2.10/simple-project_2.10-1.0.jar
Grazie!
Perfetto! Grazie. – monster
suiterdev volevi dire args (0)? – user1050325
No, intendevo le parentesi quadre. Questo è un indice di array in Scala. Qualcosa può essere cambiato in Scala da quando ho scritto questo, ma dal momento in cui scrivo questo modulo significa "il val nome 'logfile' dovrebbe assumere come contenuto il contenuto del primo elemento dell'array chiamato 'args', che è al numero di posizione dell'indice zero. " – suiterdev