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

Sergey resolved DATAFU-33.
--------------------------

    Resolution: Not A Problem

Non correct method was used during func initialization.

> Can't instantiate AliasableEvalFunc for unit-testing
> ----------------------------------------------------
>
>                 Key: DATAFU-33
>                 URL: https://issues.apache.org/jira/browse/DATAFU-33
>             Project: DataFu
>          Issue Type: Bug
>    Affects Versions: 1.3.0
>         Environment: CDH 4.4
>            Reporter: Sergey
>
> Hi, I can't make it work for 1.2 version too. Works perfectly inside script, 
> can't instantiate in for unit-testing.
> {code}
>     @Test
>     void test(){
>         def udf = new ReportBuilder('/any/path/to/2013/10/21', 
> getBasePath('Partition_dict.csv'))
>         udf.setUDFContextSignature('test')
>         def schemaTuple = new Schema([
>                 new Schema.FieldSchema('msisdn', DataType.LONG),
>                 new Schema.FieldSchema('ts', DataType.INTEGER),
>                 new Schema.FieldSchema('center_lon', DataType.DOUBLE),
>                 new Schema.FieldSchema('center_lat', DataType.DOUBLE),
>         ])
>         def schemaBag = new Schema(new Schema.FieldSchema('orderedRoutes', 
> schemaTuple, DataType.BAG))
>         udf.getOutputSchema(schemaBag)
>         udf.exec(TupleFactory.instance.newTuple([71230000000L, 1382351612,    
> 10.697D,        20.713D]))
>     }
>     /** A stub for testing files taken from distcache */
>     def getBasePath(String fileName){
>         
> FileUtils.toFile(this.class.classLoader.getResource(fileName)).parentFile.absolutePath
>     }
> {code}
> Script usage:
> {code}
>              orderedRoutes = ORDER routes BY ts;
>             GENERATE FLATTEN(ReportBuilder(orderedRoutes)) as 
> (list_of_fields:anytype);
> {code}
> fails here:
> {code}
> @Override
>     DataBag exec(Tuple input) throws IOException {
>         def pivots = getBag(input, ORDERED_ROUTES).toList() //error happens 
> here
>         def outputBag = BagFactory.instance.newDefaultBag()
>         //some code goes here
>         outputBag
>     }
> {code}
> {code}
> 14/02/24 17:55:40 ERROR udf.ReportBuilder: Class: class pig.udf.ReportBuilder
> 14/02/24 17:55:40 ERROR udf.ReportBuilder: Instance name: test
> 14/02/24 17:55:40 ERROR udf.ReportBuilder: Properties: {test={}}
> java.lang.RuntimeException: Could not retrieve aliases from properties using 
> aliasMap
>       at 
> datafu.pig.util.AliasableEvalFunc.getFieldAliases(AliasableEvalFunc.java:164)
>       at 
> datafu.pig.util.AliasableEvalFunc.getPosition(AliasableEvalFunc.java:171)
>       at datafu.pig.util.AliasableEvalFunc.getBag(AliasableEvalFunc.java:253)
>       at datafu.pig.util.AliasableEvalFunc$getBag.callCurrent(Unknown Source)
>       at 
> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
>       at 
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
>       at 
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:145)
>       at udf.ReportBuilder.exec(ReportBuilder.groovy:26)
>       at pig.udf.ReportBuilder$exec.call(Unknown Source)
>       at 
> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
>       at 
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
>       at 
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
>       at udf.ReportBuilderTest.test(ReportBuilderTest.groovy:28)
> {code}



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to