You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@flink.apache.org by Mengqi Yang <me...@gmail.com> on 2016/03/14 10:43:57 UTC

Using a POJO class wrapping an ArrayList

Hi all,

Now I am building a POJO class for key selectors. Here is the class:

public class Ids<K> implements Comparable, Serializable{
	
	private static final long serialVersionUID = 1L;
	
	private ArrayList<K> ids = new ArrayList<K>();
	
	Ids() {}
	
	Ids(ArrayList<K> inputIds) {
		this.ids = inputIds;
	}
	
}

And the question is, how could I use each element in the array list as a
field for further key selection? I saw the typeinfo of Flink takes the field
of arraylist as 1. Or maybe I didn't understand it correctly.

Thanks,
Mengqi 



--
View this message in context: http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Using-a-POJO-class-wrapping-an-ArrayList-tp5483.html
Sent from the Apache Flink User Mailing List archive. mailing list archive at Nabble.com.

Re: Using a POJO class wrapping an ArrayList

Posted by Fabian Hueske <fh...@gmail.com>.
Hi Mengqi,

I did not completely understand your use case.

If you would like to use a composite key (a key with multiple fields) there
are two alternatives:
- use a tuple as key type. This only works if all records have the same
number of key fields. Tuple serialization and comparisons are very
efficient.
- implement your own type (like you did) but override the compare() method.
Here you can also deal with different number of key fields. A custom type
will be serialized with Kryo. You can make it more efficient if you
register the type in the ExecutionConfig.

If you want to use multiple keys for a record, you need to emit the record
multiple times in a FlatMapFunction and assign each time a different key.

Hope this helps,
Fabian


2016-03-14 10:43 GMT+01:00 Mengqi Yang <me...@gmail.com>:

> Hi all,
>
> Now I am building a POJO class for key selectors. Here is the class:
>
> public class Ids<K> implements Comparable, Serializable{
>
>         private static final long serialVersionUID = 1L;
>
>         private ArrayList<K> ids = new ArrayList<K>();
>
>         Ids() {}
>
>         Ids(ArrayList<K> inputIds) {
>                 this.ids = inputIds;
>         }
>
> }
>
> And the question is, how could I use each element in the array list as a
> field for further key selection? I saw the typeinfo of Flink takes the
> field
> of arraylist as 1. Or maybe I didn't understand it correctly.
>
> Thanks,
> Mengqi
>
>
>
> --
> View this message in context:
> http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Using-a-POJO-class-wrapping-an-ArrayList-tp5483.html
> Sent from the Apache Flink User Mailing List archive. mailing list archive
> at Nabble.com.
>