Tôi biết có nhiều chủ đề đã có trên các vấn đề 'phát trực tuyến tia lửa từ chối'. Nhưng hầu hết trong số này là trong Linux hoặc ít nhất là chỉ đến HDFS. Tôi đang chạy trên máy tính xách tay địa phương của tôi với Windows.Lỗi 'Bị từ chối kết nối' khi chạy Spark Streaming trên máy cục bộ
Tôi đang chạy một ứng dụng độc lập Spark streaming cơ bản rất đơn giản, chỉ để xem cách phát trực tuyến hoạt động. Không làm bất cứ điều gì phức tạp ở đây: -
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()
}
}
Tôi nhận được lỗi sau: -
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
Tôi đã cố gắng sử dụng số cổng khác nhau, nhưng nó không giúp đỡ. Vì vậy, nó tiếp tục thử lại trong vòng lặp và tiếp tục nhận được lỗi tương tự. Có ai có ý tưởng gì không?
Vì vậy, luồng phát trực tiếp nằm ở phía máy khách chứ không phải trên máy chủ Web? Tôi nghĩ rằng Spark Streaming thực thi trên máy chủ web và bất cứ yêu cầu nào mà máy chủ web nhận được từ các máy khách của nó, nó sẽ trả về dưới dạng 'luồng'. Nhưng sau đó nếu nó thực thi trên nút máy khách web, chính xác dữ liệu nào sẽ trả về Spark là 'luồng'? Máy chủ web là một tác nhân thụ động (vì nó chỉ chờ các yêu cầu của máy khách và trả về phản hồi), vậy có nghĩa là 'luồng' là 'phản hồi' mà máy chủ web trả về không? Nhưng trừ khi mô-đun phát trực tuyến phát ra một số yêu cầu hoạt động, nó sẽ trả về bất kỳ phản hồi nào? – Dhiraj
Spark Streaming không thực sự là trường hợp khách hàng hoặc máy chủ, nó có thể xử lý luồng. Nó thường đòi hỏi một người nhận để bắt đầu với việc đưa dữ liệu vào tính toán của bạn. Có nhiều loại máy thu khác nhau. Trong mã của bạn ở trên, 'socketTextStream' thiết lập một Máy thu hoạt động như một máy khách đang mong đợi một Máy chủ ở đầu bên kia. Hãy xem https://spark.apache.org/docs/1.2.0/api/scala/index.html#org.apache.spark.streaming.StreamingContext bạn có thể sử dụng 'textFileStream' tốt hơn nếu bạn chỉ thử nghiệm, sẽ bắt đầu một luồng bằng cách đọc các tệp trong một thư mục. – mattinbits