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>
>