Spark:当从文本文件中读取多行时,程序卡住了吗?

时间:2017-11-07 19:12:13

标签: java apache-spark

我有一个简单的代码Java代码,使用在Mac上运行的Spark 2.1.2,master设置为local [2]:

JavaRDD<String> demands = javaSparkContext.textFile(DEMANDS, 10);
demands.map(this::extractDemand)
       .map(this::updateStatistics)
       .foreach(demandDecorator::decorate);

装饰器通过Spark sql加载数据,并使用where() - 子句过滤数据集,并将信息添加到需求对象。

奇怪的是,如果文本文件只包含1行,则程序运行正常。只要文本文件中有第二行或更多行,程序就会挂起并且没有完成,即它停留在日志文件中的“TaskSchedulerImpl”行。

一般情况下,我注意到,如果我在“master”中设置的一行少于它的工作,即如果master设置为5而不是在文本文件中使用4行。我做错了什么?

这是日志文件的尾部:

17/11/07 20:02:19 INFO DAGScheduler: Final stage: ResultStage 3 (show at DemandDecorator.java:64)
17/11/07 20:02:19 INFO DAGScheduler: Parents of final stage: List()
17/11/07 20:02:19 INFO DAGScheduler: Missing parents: List()
17/11/07 20:02:19 INFO DAGScheduler: Submitting ResultStage 3 (MapPartitionsRDD[8] at show at OrderVehicleDataDecorator.java:64), which has no missing parents
17/11/07 20:02:19 INFO MemoryStore: Block broadcast_4 stored as values in memory (estimated size 12.3 KB, free 2004.4 MB)
17/11/07 20:02:19 INFO MemoryStore: Block broadcast_4_piece0 stored as bytes in memory (estimated size 5.8 KB, free 2004.4 MB)
17/11/07 20:02:19 INFO BlockManagerInfo: Added broadcast_4_piece0 in memory on 127.0.0.1:59665 (size: 5.8 KB, free: 2004.6 MB)
17/11/07 20:02:19 INFO SparkContext: Created broadcast 4 from broadcast at DAGScheduler.scala:996
17/11/07 20:02:19 INFO DAGScheduler: Submitting 1 missing tasks from ResultStage 3 (MapPartitionsRDD[8] at show at DemandDecorator.java:64)
17/11/07 20:02:19 INFO TaskSchedulerImpl: Adding task set 3.0 with 1 tasks

我不知道为什么会这样。有谁知道可能是什么问题?

0 个答案:

没有答案