2016-04-05 2 views
0

У меня есть Apache Spark master узел. Когда я пытаюсь перебрать все RDD, Spark зависает.Spark висит во время чтения RDD

Вот пример моего кода:

val conf = new SparkConf() 
     .setAppName("Demo") 
     .setMaster("spark://localhost:7077") 
     .set("spark.executor.memory", "1g") 

val sc = new SparkContext(conf) 

val records = sc.textFile("file:///Users/barbara/projects/spark/src/main/resources/videos.csv")  
println("Start") 

records.collect().foreach(println)  

println("Finish") 

журнал Искра говорит:

Start 
16/04/05 17:32:23 INFO FileInputFormat: Total input paths to process : 1 
16/04/05 17:32:23 INFO SparkContext: Starting job: collect at Application.scala:23 
16/04/05 17:32:23 INFO DAGScheduler: Got job 0 (collect at Application.scala:23) with 2 output partitions 
16/04/05 17:32:23 INFO DAGScheduler: Final stage: ResultStage 0 (collect at Application.scala:23) 
16/04/05 17:32:23 INFO DAGScheduler: Parents of final stage: List() 
16/04/05 17:32:23 INFO DAGScheduler: Missing parents: List() 
16/04/05 17:32:23 INFO DAGScheduler: Submitting ResultStage 0 (file:///Users/barbara/projects/spark/src/main/resources/videos.csv MapPartitionsRDD[1] at textFile at Application.scala:19), which has no missing parents 
16/04/05 17:32:23 INFO MemoryStore: Block broadcast_1 stored as values in memory (estimated size 3.0 KB, free 120.5 KB) 
16/04/05 17:32:23 INFO MemoryStore: Block broadcast_1_piece0 stored as bytes in memory (estimated size 1811.0 B, free 122.3 KB) 
16/04/05 17:32:23 INFO BlockManagerInfo: Added broadcast_1_piece0 in memory on 172.18.199.187:55983 (size: 1811.0 B, free: 2.4 GB) 
16/04/05 17:32:23 INFO SparkContext: Created broadcast 1 from broadcast at DAGScheduler.scala:1006 
16/04/05 17:32:23 INFO DAGScheduler: Submitting 2 missing tasks from ResultStage 0 (file:///Users/barbara/projects/spark/src/main/resources/videos.csv MapPartitionsRDD[1] at textFile at Application.scala:19) 
16/04/05 17:32:23 INFO TaskSchedulerImpl: Adding task set 0.0 with 2 tasks 

Я вижу только сообщение "Start". Кажется, Spark ничего не делает для чтения RDD. Есть идеи, как это исправить?

UPD

Данные, которые я хочу прочитать:

123v4n312bv4nb12,Action,Comedy 
2n4vhj2gvrh24gvr,Action,Drama 
sjfu326gjrw6g374,Drama,Horror 
+0

Если я использую 'records.foreach (println)' Spark висит в любом случае. Я не думаю, что данные огромны (см. Мое обновление). – barbara

+0

Он маленький, всего несколько строк. – barbara

+0

@AlbertoBonsanto, для 3-строчного файла? Он уже установлен в 1Gb –

ответ

0

Если искровые руки на таком маленьком наборе данных я бы сначала искать:

  • я пытаюсь подключиться к кластеру, который не отвечает/не существует? Если я пытаюсь подключиться к работающему кластеру, я бы сначала попытался запустить тот же код локально setMaster("local[*]"). Если это сработает, я бы знал, что что-то происходит с «мастером», с которым я пытаюсь подключиться.

  • Я прошу предоставить больше ресурсов, которые кластер может предложить? Например, если кластер управляет 2G, и я прошу администратора 3GB, мое приложение никогда не получит расписание, и оно будет в очереди заданий навсегда.


Специфическая для вышеуказанных замечаний. Если вы запустили свой кластер на sbin/start-master.sh, вы не получите бегущий кластер. По крайней мере вам нужен мастер и рабочий (для автономной работы). Вы должны использовать скрипт start-all.sh. Я рекомендую немного больше домашней работы и следую инструкциям.

+0

С 'setMaster (" local [*] ")' отлично работает. – barbara

+0

Это говорит мне, что он подключается к «удаленному» кластеру. Обратите внимание, что «local» запускает все на одном JVM, поэтому не происходит «соединение». Если вы укажете другого мастера, вам необходимо убедиться, что сервер полностью работоспособен. Можете ли вы приложить скриншот вашего пользовательского интерфейса Spark? – marios

+0

Хм ... теперь все хорошо. Я добавил в 'SparkConf' путь к моей толстой банке:' setJars (Seq («Пользователи/barbara/projects/spark/target/scala-2.10/learning-spark-assembly-0.0.1.jar»)) ' – barbara

Смежные вопросы