Sorry, i was out for lunch. Maybe the problem is that sessionID is a String?
public abstract class Parent{
private Date eventDate;
private EventType eventType;
private String sessionId;
public Parent() { }
//GETTER & SETTER
}
public class SourceA extends Parent{
private Boolean outboundMessage;
private String soapMessage;
public SourceA () {
super();
}
//GETTER & SETTER
}
public class SourceB extends Parent{
private Integer id;
private String username;
public SourceB () {
super();
}
//GETTER & SETTER
}
Am 09.02.2016 um 12:06 schrieb Till Rohrmann:
Could you share the code for your types |SourceA| and |SourceB|. It
seems as if Flink does not recognize them to be POJOs because he
assigned them the |GenericType| type. Either there is something wrong
with the type extractor or your implementation does not fulfil the
requirements for POJOs, as indicated by Chiwan.
Cheers,
Till
On Tue, Feb 9, 2016 at 11:53 AM, Dominique Rondé
<dominique.ro...@codecentric.de
<mailto:dominique.ro...@codecentric.de>> wrote:
The fields in SourceA and SourceB are private but have public
getters and setters. The classes provide an empty and public
constructor.
Am 09.02.2016 11:47 schrieb "Chiwan Park" <chiwanp...@apache.org
<mailto:chiwanp...@apache.org>>:
Oh, the fields in SourceA have public getters. Does the fields
in SourceA have public setter? SourceA needs public setter for
private fields.
Regards,
Chiwan Park
> On Feb 9, 2016, at 7:45 PM, Chiwan Park
<chiwanp...@apache.org <mailto:chiwanp...@apache.org>> wrote:
>
> Hi Dominique,
>
> It seems that `SourceA` is not dealt as POJO. Are all fields
in SourceA public? There are some requirements for POJO
classes [1].
>
> [1]:
https://ci.apache.org/projects/flink/flink-docs-release-0.10/apis/programming_guide.html#pojos
>
> Regards,
> Chiwan Park
>
>> On Feb 9, 2016, at 7:42 PM, Dominique Rondé
<dominique.ro...@codecentric.de
<mailto:dominique.ro...@codecentric.de>> wrote:
>>
>> Hi folks,
>>
>> i try to join two datasets containing some PoJos. Each PoJo
inherit a field "sessionId" from the parent class. The field
is private but has a public getter.
>>
>> The join is like this:
>> DataSet<Tuple2<SourceA,SourceB>> joinedDataSet =
sourceA.join(SourceB).where("sessionId").equalTo("sessionId");
>>
>> But the result is the following execption:
>>
>> Exception in thread "main"
org.apache.flink.api.common.InvalidProgramException: This type
(GenericType<x.y.z.service.eventstore.dto.SourceA>) cannot be
used as key.
>> at
org.apache.flink.api.java.operators.Keys$ExpressionKeys.<init>(Keys.java:287)
>> at
org.apache.flink.api.java.operators.JoinOperator$JoinOperatorSets.where(JoinOperator.java:890)
>> at
x.y.z.eventstore.processing.pmc.PmcProcessor.main(PmcProcessor.java:55)
>>
>> I spend some time with google around but I don't get an
idea what is wrong. I hope some of you can give me a hint...
>>
>> Greets
>> Dominique
>>
>
--
Dominique Rondé | Senior Consultant
codecentric AG | Kreuznacherstrasse 30 | 60486 Frankfurt | Deutschland
mobil: +49 (0) 172.7182592
www.codecentric.de | blog.codecentric.de | www.meettheexperts.de |
www.more4fi.de
Sitz der Gesellschaft: Solingen | HRB 25917| Amtsgericht Wuppertal
Vorstand: Michael Hochgürtel . Mirko Novakovic . Rainer Vehns
Aufsichtsrat: Patric Fedlmeier (Vorsitzender) . Klaus Jäger . Jürgen Schütz