2014-10-17 3 views
1

Я использую искровые потоковый и сохранение обработанного вывода в data.csv файлСпарка 2 приложения на то же время

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 вместе с другой NewFile и процесс снова одновременно

Мой вопрос здесь

можно ли запустить две свечи приложений одновременно? Можно ли подать искру заявку через самого код

Я использую макинтош, сейчас я подаю искровое приложение из папки искровой с помощью следующей команды

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 

или просто без искры: IP: порт и исполнитель память, общий сердечник

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 

, когда я запустить оба услугу Applications SparkStreamingTest и BatchTest отдельно и работает нормально, но когда я пытался работать как одновременно, я получаю следующую ошибку

В настоящее время я использую искру автономным режима

WARN AbstractLifeCycle: FAILED [email protected]:4040: java.net.BindException: Address already in use 
java.net.BindException: Address already in use 

Любая помощь очень appriciated .. я полностью из моего ума

+0

Есть ли причина, по которой сначала написать вывод сетевого захвата и прочитать его снова, чтобы обработать его? (т. е. вам нужны данные с сырым захватом?) Существует несколько вариантов, но сначала дайте мне знать об этом требовании. – maasg

+0

какая искра версия вы используете? – maasg

+0

Spark Version 1.0.2, я пытаюсь кэшировать данные во время потоковой передачи потоковая длительность - это 1 с, я обрабатываю данные, полученные за одну секунду, и сохраняю результат в кеше и для следующего сеанса потоковой передачи. Я попытался извлечь кешированный результат, но его пустым, поэтому я пытаюсь сохранить вывод – mithra

ответ

2

от http://spark.apache.org/docs/1.1.0/monitoring.html

Если на одном и том же хосте работает несколько SparkContext, они будут привязываться к последовательным портам, начиная с 4040 (4041, 4042 и т. Д.).

Ваши приложения должны иметь возможность запускать. Это просто предупреждение, чтобы рассказать вам о конфликтах портов. Это связано с тем, что вы запускаете два приложения Spark одновременно. Но не беспокойтесь об этом. Spark попробует 4041, 4042, пока не найдет доступный порт. Итак, в вашем случае вы найдете два веб-интерфейса: ip: 4040, ip: 4041 для этих двух приложений.

+0

, что вы подразумеваете под несколькими SparkContext? Как я могу достичь этого на одном хосте? заявление внутри документа также открыто. – chaosguru

+0

Точнее, я имею в виду запуск нескольких приложений Spark. – zsxwing

+0

ах. теперь ясно. Также я выполнил один и тот же подход для тестирования и получил контекст :). Thnx – chaosguru