我正在使用spark streaming并将处理后的输出保存在data.csv文件中
val conf = new SparkConf().setMaster("local[2]").setAppName("NetworkWordCount")
JavaStreamingContext jssc = new JavaStreamingContext(conf, new Duration(1000))
JavaReceiverInputDStream<String> lines = jssc.socketTextStream("localhost", 9999);
同时我想读取NetworkWordCount data.csv的输出以及另一个新文件并同时处理它
我的问题是
是否可以同时运行两个火花应用程序? 是否可以通过代码本身提交spark应用程序
我正在使用mac,现在我使用以下命令从spark文件夹提交spark应用程序
bin/spark-submit --class "com.abc.test.SparkStreamingTest" --master spark://xyz:7077 --executor-memory 20G --total-executor-cores 100 ../workspace/Test/target/Test-0.0.1-SNAPSHOT-jar-with-dependencies.jar 1000
或者只是没有spark:ip:port和executor memory,total executor core
bin/spark-submit --class "com.abc.test.SparkStreamingTest" --master local[4] ../workspace/Test/target/Test-0.0.1-SNAPSHOT-jar-with-dependencies.jar
和另一个读取文本文件以进行批处理的应用程序如下
bin/spark-submit --class "com.abc.test.BatchTest" --master local[4] ../workspace/Batch/target/BatchTesting-0.0.1-SNAPSHOT-jar-with-dependencies.jar
当我同时运行两个应用程序SparkStreamingTest和BatchTest都工作正常,但当我试图同时运行时,我得到以下错误
目前我正在使用独立火花模式
WARN AbstractLifeCycle: FAILED SelectChannelConnector@0.0.0.0:4040: java.net.BindException: Address already in use
java.net.BindException: Address already in use
任何帮助都很受欢迎..我完全不在乎我的想法
答案 0 :(得分:3)
来自http://spark.apache.org/docs/1.1.0/monitoring.html
如果多个SparkContexts在同一主机上运行,它们将绑定到以4040(4041,4042等)开头的连续端口。
您的应用应该能够运行。这只是一个告诉你端口冲突的警告。这是因为你在同一时间运行两个Spark应用程序。但不要担心。 Spark会尝试4041,4042,直到找到可用的端口。因此,在您的情况下,您将找到两个Web UI:ip:4040,ip:4041用于这两个应用程序。