2017-01-23 2 views
-1

код, связанный с нижеследовал:Вызванный: 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

+0

Пожалуйста, разместите полный вывод ошибки. Где ошибка? – nmat

+0

Почему, по вашему мнению, этот код вызывает ошибку? Я ничего не вижу там, что могло бы вызвать это. – puhlen

+0

информация об искру ui размещена, некоторые ошибки показаны. thks –

ответ

0

Не зная более подробную информацию о коде, я заметил два возможных места.

Первый соответствует шаблону для featureData. При выполнении сопоставления вы пытаетесь выполнить сопоставление с шаблоном (psid: String, label: String, cate_features: ParArray[String], media_features: String), но не смогли обработать шаблоны, которые не соответствуют шаблону.

Второй способ: toList. Я полагаю, что это метод из API. Не могли бы вы попробовать это: flatMap(x => List(x._1,x._2)) - Я написал это на рейс, не испытал.

+0

это первый шаблон, потому что существовали грязные данные. tks –

+0

@zhengqomo, так оно работает? –

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