[ 
https://issues.apache.org/jira/browse/HAMA-784?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ikhtiyor Ahmedov updated HAMA-784:
----------------------------------

    Description: 
Example code which fails:
{code}KeyValueTextInputFormat.addInputPaths(job, 
"/tmp/test.seq,/tmp/test2.seq,/tmp/test3.seq");{code}

Exception:
{code}
java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to 
org.apache.hadoop.io.LongWritable
        at org.apache.hama.bsp.LineRecordReader.next(LineRecordReader.java:1)
        at 
org.apache.hama.bsp.TrackedRecordReader.moveToNext(TrackedRecordReader.java:63)
        at 
org.apache.hama.bsp.TrackedRecordReader.next(TrackedRecordReader.java:49)
        at org.apache.hama.bsp.BSPPeerImpl.readNext(BSPPeerImpl.java:598)
        at org.apache.hama.examples.OnlineCF$OnlineCFBSP.bsp(OnlineCF.java:146)
        at 
org.apache.hama.bsp.LocalBSPRunner$BSPRunner.run(LocalBSPRunner.java:256)
        at 
org.apache.hama.bsp.LocalBSPRunner$BSPRunner.call(LocalBSPRunner.java:286)
        at 
org.apache.hama.bsp.LocalBSPRunner$BSPRunner.call(LocalBSPRunner.java:1)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
{code}
Reason: below is part of implemented function of abstract class which is not 
overridden by extended classes (unfortunately static method)
{code:title=FileInputFormat.java}
public static void addInputPaths(BSPJob conf, String commaSeparatedPaths) {
  for (String str : getPathStrings(commaSeparatedPaths)) {
    addInputPath(conf, new Path(str));
  }
}
{code}

Quick fix:
anyway set input format
{code}
job.setInputFormat(KeyValueTextInputFormat.class);//set explicitly
KeyValueTextInputFormat.addInputPaths(job, 
"/tmp/test.seq,/tmp/test2.seq,/tmp/test3.seq");
{code}
or add modification to the documentation in link 
(http://wiki.apache.org/hama/BSPModel), so that new developers will explicitly 
set input format even they use static methods of InputFormat.

  was:
Example code which fails:
{code}KeyValueTextInputFormat.addInputPaths(job, 
"/tmp/test.seq,/tmp/test2.seq,/tmp/test3.seq");{code}

Exception:
{code}
java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to 
org.apache.hadoop.io.LongWritable
        at org.apache.hama.bsp.LineRecordReader.next(LineRecordReader.java:1)
        at 
org.apache.hama.bsp.TrackedRecordReader.moveToNext(TrackedRecordReader.java:63)
        at 
org.apache.hama.bsp.TrackedRecordReader.next(TrackedRecordReader.java:49)
        at org.apache.hama.bsp.BSPPeerImpl.readNext(BSPPeerImpl.java:598)
        at org.apache.hama.examples.OnlineCF$OnlineCFBSP.bsp(OnlineCF.java:146)
        at 
org.apache.hama.bsp.LocalBSPRunner$BSPRunner.run(LocalBSPRunner.java:256)
        at 
org.apache.hama.bsp.LocalBSPRunner$BSPRunner.call(LocalBSPRunner.java:286)
        at 
org.apache.hama.bsp.LocalBSPRunner$BSPRunner.call(LocalBSPRunner.java:1)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
{code}
Reason: below is part of implemented function of abstract class which is not 
overridden by extended classes
{code:title=FileInputFormat.java}
public static void addInputPaths(BSPJob conf, String commaSeparatedPaths) {
  for (String str : getPathStrings(commaSeparatedPaths)) {
    addInputPath(conf, new Path(str));
  }
}
{code}

Quick fix:
anyway set input format
{code}
job.setInputFormat(KeyValueTextInputFormat.class);//set explicitly
KeyValueTextInputFormat.addInputPaths(job, 
"/tmp/test.seq,/tmp/test2.seq,/tmp/test3.seq");
{code}
or add modification to the documentation in link 
(http://wiki.apache.org/hama/BSPModel), so that new developers will explicitly 
set input format even they use static methods of InputFormat.

    
> Input format class type is not considered when given multiple input paths
> -------------------------------------------------------------------------
>
>                 Key: HAMA-784
>                 URL: https://issues.apache.org/jira/browse/HAMA-784
>             Project: Hama
>          Issue Type: Bug
>          Components: bsp core
>            Reporter: Ikhtiyor Ahmedov
>              Labels: inputformat
>
> Example code which fails:
> {code}KeyValueTextInputFormat.addInputPaths(job, 
> "/tmp/test.seq,/tmp/test2.seq,/tmp/test3.seq");{code}
> Exception:
> {code}
> java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to 
> org.apache.hadoop.io.LongWritable
>       at org.apache.hama.bsp.LineRecordReader.next(LineRecordReader.java:1)
>       at 
> org.apache.hama.bsp.TrackedRecordReader.moveToNext(TrackedRecordReader.java:63)
>       at 
> org.apache.hama.bsp.TrackedRecordReader.next(TrackedRecordReader.java:49)
>       at org.apache.hama.bsp.BSPPeerImpl.readNext(BSPPeerImpl.java:598)
>       at org.apache.hama.examples.OnlineCF$OnlineCFBSP.bsp(OnlineCF.java:146)
>       at 
> org.apache.hama.bsp.LocalBSPRunner$BSPRunner.run(LocalBSPRunner.java:256)
>       at 
> org.apache.hama.bsp.LocalBSPRunner$BSPRunner.call(LocalBSPRunner.java:286)
>       at 
> org.apache.hama.bsp.LocalBSPRunner$BSPRunner.call(LocalBSPRunner.java:1)
>       at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>       at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>       at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
>       at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>       at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>       at java.lang.Thread.run(Thread.java:662)
> {code}
> Reason: below is part of implemented function of abstract class which is not 
> overridden by extended classes (unfortunately static method)
> {code:title=FileInputFormat.java}
> public static void addInputPaths(BSPJob conf, String commaSeparatedPaths) {
>   for (String str : getPathStrings(commaSeparatedPaths)) {
>     addInputPath(conf, new Path(str));
>   }
> }
> {code}
> Quick fix:
> anyway set input format
> {code}
> job.setInputFormat(KeyValueTextInputFormat.class);//set explicitly
> KeyValueTextInputFormat.addInputPaths(job, 
> "/tmp/test.seq,/tmp/test2.seq,/tmp/test3.seq");
> {code}
> or add modification to the documentation in link 
> (http://wiki.apache.org/hama/BSPModel), so that new developers will 
> explicitly set input format even they use static methods of InputFormat.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to