I am trying to covert Scala code (which works fine) to Java The sacral code is: // create a Kafka consumers Now I am trying to re write it to Java and fighting with the requirement of providing types, where they should be obvious // create a Kafka consumers Am I missing something similar to import org.apache.flink.api.scala._ In java? Now if this is an only way, Does this seems right? |
More questions In Scala my DataProcessor is defined as class DataProcessorKeyed extends CoProcessFunction[WineRecord, ModelToServe, Double] with CheckpointedFunction { And it is used as follows val models = modelsStream.map(ModelToServe.fromByteArray(_)) When I am doing the same thing in Java public class DataProcessorKeyed extends CoProcessFunction<Winerecord.WineRecord, ModelToServe, Double> implements CheckpointedFunction{ Which I am using as follows // Read data from streams I am getting an error Error:(68, 17) java: no suitable method found for keyBy(int) method org.apache.flink.streaming.api.scala.DataStream.keyBy(scala.collection.Seq<java.lang.Object>) is not applicable (argument mismatch; int cannot be converted to scala.collection.Seq<java.lang.Object>) method org.apache.flink.streaming.api.scala.DataStream.<K>keyBy(scala.Function1<org.apache.flink.api.java.tuple.Tuple2<java.lang.String,com.lightbend.model.ModelToServe>,K>,org.apache.flink.api.common.typeinfo.TypeInformation<K>) is not applicable (cannot infer type-variable(s) K (actual and formal argument lists differ in length)) So it assumes key/value pairs for the coprocessor Why is such difference between APIs?
|
Hi Boris,
each API is designed language-specific so they might not always be the same. Scala has better type extraction features and let you write code very precisely. Java requires sometime more code to archieve the same. You don't need to specify the type in .flatMap() explicitly. It will be automatically extracted using the generic signature of DataDataConverter. Regarding your error. Make sure that you don't mix up the API classes. If you want to use the Java API you should not use "org.apache.flink.streaming.api.scala.DataStream" but the Java one. Regards, Timo Am 1/11/18 um 5:13 AM schrieb Boris Lublinsky:
|
Could you send us the definition of the
class or even better a small code example on Github to reproduce
your error?
If you are implementing a Flink job in Java you should not have any org.apache.flink...scala.... import in your class file. Regards, Timo Hi Timo
"You don't need to
specify the type in .flatMap() explicitly. It will be
automatically extracted using the generic signature of
DataDataConverter.”
It does not. That is
the reason why I had to add it there
I rewrote the class in Java. Thats why I am so confused Am 1/11/18 um 10:07 AM schrieb Timo Walther:
|
Free forum by Nabble | Edit this page |