We're trying to use the SequenceFileLoader, but get an error when we try to
define the converter classes as so:

A = LOAD '/tmp/part-m-00000' using
org.apache.pig.piggybank.storage.SequenceFileLoader ( '-c
com.twitter.elephantbird.pig.util.TextConverter', '-c
com.twitter.elephantbird.pig.util.TextConverter' ) AS (key:chararray,
value:chararray);

The exception:

Failed to parse: Pig script failed to parse:
<line 1, column 4> pig script failed to validate:
java.lang.RuntimeException: could not instantiate
'org.apache.pig.piggybank.storage.SequenceFileLoader' with arguments '[-c
com.twitter.elephantbird.pig.util.TextConverter, -c
com.twitter.elephantbird.pig.util.TextConverter]'
        at
org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:191)
        at org.apache.pig.PigServer$Graph.validateQuery(PigServer.java:1571)

...<cut>...

Caused by: java.lang.NoSuchMethodException:
org.apache.pig.piggybank.storage.SequenceFileLoader.<init>([Ljava.lang.String;)
        at java.lang.Class.getConstructor0(Class.java:2706)
        at java.lang.Class.getConstructor(Class.java:1657)
        at
org.apache.pig.impl.PigContext.instantiateFuncFromSpec(PigContext.java:594)
        ... 22 more

It seems that the exception occurs because there's only 1 parameter passed
to the constructor (SequenceFileLoader has constructors for 0, 2, or 3
String objects).

p.s. I realize that, in this case, we can use the default
SequenceFileLoader() without parameters (it works), but we want to use
other converters beyond this example.

Reply via email to