产生的原因:java.lang.ArrayIndexOutOfBoundsException火花flatMap
相关代码如下:产生的原因:java.lang.ArrayIndexOutOfBoundsException火花flatMap
val cateList = featureData.map{
case (psid: String, label: String, cate_features: ParArray[String], media_features: String) =>
val pair_feature = cate_features.zipWithIndex.map(x => (x._2, x._1))
pair_feature
}.flatMap(_.toList)
它配错在flatMap,有什么不对?哪里存在问题?
完整的错误信息:
它主要岗位的错误java.lang.ArrayIndexOutOfBoundsException。我认为存在某处去访问阵列。我不熟悉Scala。任何帮助将受到欢迎。韩国社交协会。
17/01/23 12:23:08 INFO scheduler.TaskSetManager: Lost task 29.3 in stage 0.0 (TID 53) on executor 10.39.2.232: java.lang.ArrayIndexOutOfBoundsException (3) [duplicate 9]
17/01/23 12:23:08 ERROR scheduler.TaskSetManager: Task 29 in stage 0.0 failed 4 times; aborting job
17/01/23 12:23:08 INFO cluster.YarnScheduler: Cancelling stage 0
17/01/23 12:23:08 INFO cluster.YarnScheduler: Stage 0 was cancelled
17/01/23 12:23:08 INFO scheduler.DAGScheduler: ShuffleMapStage 0 (flatMap at ETL.scala:132) failed in 27.635 s
17/01/23 12:23:08 INFO scheduler.DAGScheduler: Job 0 failed: reduce at ETL.scala:205, took 27.763709 s
Exception in thread "main" org.apache.spark.SparkException: Job aborted due to stage failure: Task 29 in stage 0.0 failed 4 times, most recent failure: Lost task 29.3 in stage 0.0 (TID 53, 10.39.2.232): java.lang.ArrayIndexOutOfBoundsException: 3 at com.sina.adalgo.feature.ETL$$anonfun$11$$anonfun$13.apply(ETL.scala:111)
at com.sina.adalgo.feature.ETL$$anonfun$11$$anonfun$13.apply(ETL.scala:111)
at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
at org.apache.spark.storage.MemoryStore.unrollSafely(MemoryStore.scala:283)
at org.apache.spark.CacheManager.putInBlockManager(CacheManager.scala:171)
at org.apache.spark.CacheManager.getOrCompute(CacheManager.scala:78)
at org.apache.spark.rdd.RDD.iterator(RDD.scala:268)
at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38)
at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:306)
at org.apache.spark.rdd.RDD.iterator(RDD.scala:270)
at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38)
at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:306)
at org.apache.spark.rdd.RDD.iterator(RDD.scala:270)
at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:73)
at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41)
at org.apache.spark.scheduler.Task.run(Task.scala:89)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:213)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
星火UI错误信息
我张贴如下: spark ui error information
不知道代码的进一步的细节,我发现了两个可能的地方。
首先是模式匹配featureData
。在进行映射时,您尝试与模式(psid: String, label: String, cate_features: ParArray[String], media_features: String)
匹配,但未能处理模式与模式不匹配。
其次是toList
方法。我想这是来自API的一种方法。你可以试试这个:flatMap(x => List(x._1,x._2))
- 我在飞机上写过,没有测试过。
这是第一种模式,因为存在脏数据。 tks –
@zhengqomo所以它的作品? –
请发布完整的错误输出。错误究竟在哪里? – nmat
你为什么认为这段代码导致错误?我没有看到任何会导致它的东西。 – puhlen
发布了spark ui信息,显示了一些错误。 thts –