You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@flink.apache.org by Dan Drewes <dr...@campus.tu-berlin.de> on 2016/06/04 15:34:36 UTC

env.fromElements produces TypeInformation error

Hi,

compiling the code:

def minimize(f:DF, init:T):T = {

   //create execution environment val env = ExecutionEnvironment.getExecutionEnvironment

   valinitialstate =initialState(f, init)

val iterativestate= env.fromElements(initialstate).iterate(10000) {
     iterationInput: DataSet[State] =>
     val result = iterationInput.map {
         oldstate => computeNextState(adjustedFun, oldstate)
       }
       result
   }
}

objectIterationsFirstOrderMinimizer {
case class State[+T,+ConvergenceInfo,+History] (x:T,
                                                    value: Double, grad:T,
                                                    adjustedValue: Double, adjustedGradient:T,
                                                    iter: Int,
                                                    initialAdjVal: Double,
                                                    history:History,
                                                    convergenceInfo:ConvergenceInfo,
                                                    searchFailed: Boolean =false) {
   }

... fails with the error: could not find implicit value for evidence 
parameter of type 
org.apache.flink.api.common.typeinfo.TypeInformation[IterationsFirstOrderMinimizer.this.State] 
     val iterativestate= env.fromElements(initialState(f, 
init)).iterate(10000) {                                         ^ Google 
only told me toimport org.apache.flink.api.scala._     which i do. The 
other suggested solution for generic methods 
(https://ci.apache.org/projects/flink/flink-docs-master/internals/types_serialization.html) 
does also not apply because it's the fromElements call that produces the 
error. I am very new to Flink and Scala and because I don't know if the 
code I posted above is enough to say what I'm doing wrong, you can find 
the complete scala file attached. Thanks in advance for any ideas and 
hints. Best, Dan


---
Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft.
https://www.avast.com/antivirus

Re: env.fromElements produces TypeInformation error

Posted by Aljoscha Krettek <al...@apache.org>.
Hi,
I think the problem is that the case class has generic parameters. You can
try making TypeInformation for those parameters implicitly available at the
call site, i.e:

implicit val typeT = createTypeInformation[T] // where you insert the
specific type for T and do the same for the other generic parameters

Maybe this helps.

Cheers,
Aljoscha

On Sat, 4 Jun 2016 at 20:04 Dan Drewes <dr...@campus.tu-berlin.de> wrote:

> I've tested it, but unfortunately it does not solve the problem.
> The error message remains the same.
>
>
> Am 04.06.2016 um 19:38 schrieb Simone Robutti:
>
> I'm not sure if this is the solution and I don't have the possibility to
> try right now, but you should move the case class "State" definition
> outside the abstract class.
>
> 2016-06-04 17:34 GMT+02:00 Dan Drewes <dr...@campus.tu-berlin.de>:
>
>>
>> Hi,
>>
>> compiling the code:
>>
>> def minimize(f: DF, init: T): T = {
>>
>>   //create execution environment  val env = ExecutionEnvironment.getExecutionEnvironment
>>
>>   val initialstate = initialState(f, init)
>>   val iterativestate= env.fromElements(initialstate).iterate(10000) {
>>     iterationInput: DataSet[State] =>
>>       val result = iterationInput.map {
>>         oldstate => computeNextState(adjustedFun, oldstate)
>>       }
>>       result
>>   }
>> }
>>
>> object IterationsFirstOrderMinimizer {  case class State[+T, +ConvergenceInfo, +History] (x: T,
>>                                                    value: Double, grad: T,
>>                                                    adjustedValue: Double, adjustedGradient: T,
>>                                                    iter: Int,
>>                                                    initialAdjVal: Double,
>>                                                    history: History,
>>                                                    convergenceInfo: ConvergenceInfo,
>>                                                    searchFailed: Boolean = false) {
>>   }
>>
>> ... fails with the error: could not find implicit value for evidence
>> parameter of type
>> org.apache.flink.api.common.typeinfo.TypeInformation[IterationsFirstOrderMinimizer.this.State]
>>     val iterativestate= env.fromElements(initialState(f,
>> init)).iterate(10000) {                                         ^ Google
>> only told me to import org.apache.flink.api.scala._     which i do. The
>> other suggested solution for generic methods (
>> https://ci.apache.org/projects/flink/flink-docs-master/internals/types_serialization.html)
>> does also not apply because it's the fromElements call that produces the
>> error. I am very new to Flink and Scala and because I don't know if the
>> code I posted above is enough to say what I'm doing wrong, you can find the
>> complete scala file attached. Thanks in advance for any ideas and hints.
>> Best, Dan
>>
>>
>> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> Virenfrei.
>> www.avast.com
>> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
>>
>
>
>
>
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> Virenfrei.
> www.avast.com
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
>

Re: env.fromElements produces TypeInformation error

Posted by Dan Drewes <dr...@campus.tu-berlin.de>.
I've tested it, but unfortunately it does not solve the problem.
The error message remains the same.

Am 04.06.2016 um 19:38 schrieb Simone Robutti:
> I'm not sure if this is the solution and I don't have the possibility 
> to try right now, but you should move the case class "State" 
> definition outside the abstract class.
>
> 2016-06-04 17:34 GMT+02:00 Dan Drewes <drewes@campus.tu-berlin.de 
> <ma...@campus.tu-berlin.de>>:
>
>
>     Hi,
>
>     compiling the code:
>
>     def minimize(f:DF, init:T):T = {
>
>        //create execution environment val env = ExecutionEnvironment.getExecutionEnvironment
>
>        valinitialstate =initialState(f, init)
>
>     val iterativestate= env.fromElements(initialstate).iterate(10000) {
>          iterationInput: DataSet[State] =>
>          val result = iterationInput.map {
>              oldstate => computeNextState(adjustedFun, oldstate)
>            }
>            result
>        }
>     }
>
>     objectIterationsFirstOrderMinimizer {
>     case class State[+T,+ConvergenceInfo,+History] (x:T,
>                                                         value: Double, grad:T,
>                                                         adjustedValue: Double, adjustedGradient:T,
>                                                         iter: Int,
>                                                         initialAdjVal: Double,
>                                                         history:History,
>                                                         convergenceInfo:ConvergenceInfo,
>                                                         searchFailed: Boolean =false) {
>        }
>
>     ... fails with the error: could not find implicit value for
>     evidence parameter of type
>     org.apache.flink.api.common.typeinfo.TypeInformation[IterationsFirstOrderMinimizer.this.State]
>     val iterativestate= env.fromElements(initialState(f,
>     init)).iterate(10000) {                                         ^
>     Google only told me toimport org.apache.flink.api.scala._    
>     which i do. The other suggested solution for generic methods
>     (https://ci.apache.org/projects/flink/flink-docs-master/internals/types_serialization.html)
>     does also not apply because it's the fromElements call that
>     produces the error. I am very new to Flink and Scala and because I
>     don't know if the code I posted above is enough to say what I'm
>     doing wrong, you can find the complete scala file attached. Thanks
>     in advance for any ideas and hints. Best, Dan
>
>     <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
>     	Virenfrei. www.avast.com
>     <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
>
>
>



---
Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft.
https://www.avast.com/antivirus

Re: env.fromElements produces TypeInformation error

Posted by Simone Robutti <si...@radicalbit.io>.
I'm not sure if this is the solution and I don't have the possibility to
try right now, but you should move the case class "State" definition
outside the abstract class.

2016-06-04 17:34 GMT+02:00 Dan Drewes <dr...@campus.tu-berlin.de>:

>
> Hi,
>
> compiling the code:
>
> def minimize(f: DF, init: T): T = {
>
>   //create execution environment  val env = ExecutionEnvironment.getExecutionEnvironment
>
>   val initialstate = initialState(f, init)
>   val iterativestate= env.fromElements(initialstate).iterate(10000) {
>     iterationInput: DataSet[State] =>
>       val result = iterationInput.map {
>         oldstate => computeNextState(adjustedFun, oldstate)
>       }
>       result
>   }
> }
>
> object IterationsFirstOrderMinimizer {  case class State[+T, +ConvergenceInfo, +History] (x: T,
>                                                    value: Double, grad: T,
>                                                    adjustedValue: Double, adjustedGradient: T,
>                                                    iter: Int,
>                                                    initialAdjVal: Double,
>                                                    history: History,
>                                                    convergenceInfo: ConvergenceInfo,
>                                                    searchFailed: Boolean = false) {
>   }
>
> ... fails with the error: could not find implicit value for evidence
> parameter of type
> org.apache.flink.api.common.typeinfo.TypeInformation[IterationsFirstOrderMinimizer.this.State]
>     val iterativestate= env.fromElements(initialState(f,
> init)).iterate(10000) {                                         ^ Google
> only told me to import org.apache.flink.api.scala._     which i do. The
> other suggested solution for generic methods (
> https://ci.apache.org/projects/flink/flink-docs-master/internals/types_serialization.html)
> does also not apply because it's the fromElements call that produces the
> error. I am very new to Flink and Scala and because I don't know if the
> code I posted above is enough to say what I'm doing wrong, you can find the
> complete scala file attached. Thanks in advance for any ideas and hints.
> Best, Dan
>
>
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> Virenfrei.
> www.avast.com
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
>