[ https://issues.apache.org/jira/browse/PIG-4228?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14166639#comment-14166639 ]
Carlos Balduz commented on PIG-4228: ------------------------------------ Sure: movies = LOAD '/user/balduz/movies_data.csv' USING PigStorage(',') as (id:int,name:chararray,year:int,rating:double,duration:int); grouped_by_year = group movies by year; count_by_year = FOREACH grouped_by_year GENERATE group, COUNT(movies); dump count_by_year; As a workaround, I added the following in ForEachConverter, first line inside the call method: try { SchemaTupleBackend.initialize(new Configuration(), new PigContext()); } catch (IOException e) { } It's not the best solution but for now it works... > SchemaTupleBackend error when working on a Spark 1.1.0 cluster > -------------------------------------------------------------- > > Key: PIG-4228 > URL: https://issues.apache.org/jira/browse/PIG-4228 > Project: Pig > Issue Type: Bug > Components: spark > Affects Versions: 0.14.0 > Environment: spark-1.1.0 > Reporter: Carlos Balduz > Labels: spark > > Whenever I try to run a script on a Spark cluster, I get the following error: > ERROR 0: org.apache.spark.SparkException: Job aborted due to stage failure: > Task 2 in stage 1.0 failed 4 times, most recent failure: Lost task 2.3 in > stage 1.0 (...): java.lang.RuntimeException: > org.apache.pig.backend.executionengine.ExecException: ERROR 0: Error while > executing ForEach at [1-2[-1,-1]] > > org.apache.pig.backend.hadoop.executionengine.spark.converter.POOutputConsumerIterator.readNext(POOutputConsumerIterator.java:62) > > org.apache.pig.backend.hadoop.executionengine.spark.converter.POOutputConsumerIterator.hasNext(POOutputConsumerIterator.java:68) > > scala.collection.convert.Wrappers$JIteratorWrapper.hasNext(Wrappers.scala:41) > scala.collection.Iterator$$anon$14.hasNext(Iterator.scala:388) > > scala.collection.convert.Wrappers$IteratorWrapper.hasNext(Wrappers.scala:29) > > org.apache.pig.backend.hadoop.executionengine.spark.converter.POOutputConsumerIterator.readNext(POOutputConsumerIterator.java:34) > > org.apache.pig.backend.hadoop.executionengine.spark.converter.POOutputConsumerIterator.hasNext(POOutputConsumerIterator.java:68) > > scala.collection.convert.Wrappers$JIteratorWrapper.hasNext(Wrappers.scala:41) > scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327) > scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327) > scala.collection.Iterator$class.foreach(Iterator.scala:727) > scala.collection.AbstractIterator.foreach(Iterator.scala:1157) > > org.apache.spark.shuffle.hash.HashShuffleWriter.write(HashShuffleWriter.scala:65) > > org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:68) > > org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41) > org.apache.spark.scheduler.Task.run(Task.scala:54) > org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:177) > > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > java.lang.Thread.run(Thread.java:745) > After debugging I have seen that the problem is inside SchemaTupleBackend. > Although SparkLauncher initializes this class, when the job gets sent to the > executors this is lost and when POOutputConsumerIterator tries to fetch the > results, SchemaTupleBackend.newSchemaTupleFactory(...) is called, throwing a > RuntimeException. -- This message was sent by Atlassian JIRA (v6.3.4#6332)