So che ci sono già molti thread su problemi di "spark streaming connection refused". Ma la maggior parte di questi sono in Linux o almeno puntano a HDFS. Sto facendo funzionare questo sul mio laptop locale con Windows.Errore "Connessione rifiutata" durante l'esecuzione di Spark Streaming sulla macchina locale
Sto eseguendo un'applicazione standalone di base Spark di base molto semplice, solo per vedere come funziona lo streaming. Non fare nulla complesso qui: -
import org.apache.spark.streaming.Seconds
import org.apache.spark.streaming.StreamingContext
import org.apache.spark.SparkConf
object MyStream
{
def main(args:Array[String])
{
val sc = new StreamingContext(new SparkConf(),Seconds(10))
val mystreamRDD = sc.socketTextStream("localhost",7777)
mystreamRDD.print()
sc.start()
sc.awaitTermination()
}
}
Sto ottenendo il seguente errore: -
2015-07-25 18:13:07 INFO ReceiverSupervisorImpl:59 - Starting receiver
2015-07-25 18:13:07 INFO ReceiverSupervisorImpl:59 - Called receiver onStart
2015-07-25 18:13:07 INFO SocketReceiver:59 - Connecting to localhost:7777
2015-07-25 18:13:07 INFO ReceiverTracker:59 - Registered receiver for stream 0 from 192.168.19.1:11300
2015-07-25 18:13:08 WARN ReceiverSupervisorImpl:92 - Restarting receiver with delay 2000 ms: Error connecting to localhost:7777
java.net.ConnectException: Connection refused
Ho provato con diversi numeri di porta, ma non aiuta. Quindi continua a riprovare in loop e continua a ottenere lo stesso errore. Qualcuno ha un'idea?
Quindi lo streaming di Spark si trova sul lato client e non sul server Web? Ho pensato che Spark Streaming fosse eseguito sul server web e qualunque richiesta il server Web riceva dai suoi client, ritorna come 'stream'. Ma poi se viene eseguito sul nodo client web, esattamente quali dati vengono restituiti a Spark come 'stream'? Il server web è un agente passivo (in quanto attende solo le richieste dei client e restituisce la risposta), quindi vuol dire che lo 'stream' è la 'risposta' restituita dal server web? Ma a meno che il modulo spark streaming non faccia qualche richiesta attiva, in che modo restituirà anche qualsiasi risposta? – Dhiraj
Spark Streaming non è proprio un client o un server, è lì per elaborare uno stream. In genere richiede un ricevitore per iniziare a inserire i dati nel calcolo. Esistono diversi tipi di ricevitore. Nel tuo codice qui sopra, 'socketTextStream' configura un Receiver che funge da client che si aspetta un Server dall'altra parte. Dai un'occhiata a https://spark.apache.org/docs/1.2.0/api/scala/index.html#org.apache.spark.streaming.StreamingContext potresti usare meglio 'textFileStream' se sei solo sperimentando, che avvierà un flusso leggendo i file in una directory. – mattinbits