2017-10-26 8 views
0

スパークストリーミングをテストしようとしています。私はスタンドアローンでクイックスタートのVMを持っています。次のコマンドを使用して、スパーク・シェルを開始しました:私は、次のステートメントを実行している火花シェルでスパークストリーミング - スパークストリーミングでNetcatメッセージが受信されない

spark-shell --master yarn-client --conf spark.ui.port=23123 

:別の端末では

sc.stop() 
import org.apache.spark.SparkConf 
import org.apache.spark.streaming.StreamingContext 
val conf = new SparkConf().setAppName("Spark Streaming") 
val ssc = new StreamingContext(conf,org.apache.spark.streaming.Seconds(10)) 
val lines = ssc.socketTextStream("localhost",44444) 
lines.print 

は、次のコマンドでのnetcatサービスを開始しました:

スパーク・シェルで
nc -lk 44444 

は、ストリーミングコンテキストを開始し

ssc.start() 

これまですべてが問題ありません。しかし、Netcatサービスで入力されたメッセージは、Sparkストリーミングでは受信されません。どこが間違っているのか分かりません。

答えて

1

try spark-shell --master local[2] --conf spark.ui.port=23123動作するかどうかを確認してください。

スクリプトでは、メッセージを受信して​​いるエグゼキュータは1人しか動作しませんが、エグゼキュータはメッセージを処理していません。

+0

それは働いた。ありがとうございました。理由は何ですか。あなたの説明は私の友人と長い道のりを行くでしょう。 – Ravi

+0

あなたのスクリプト 'spark-shell - master yarn-client --conf spark.ui.port = 23123'では、--num-executors Nを指定します。ここで、Nは> = 2でなければなりません。あなたのコードが動作するためには、メッセージを受け取るために少なくとも2人のエグゼキュータが必要です。もう1つはメッセージを処理するために使用されます(あなたの場合はlines.print) – Tom

+0

ありがとうございます。良い一日を。 – Ravi

関連する問題