PartitionByHash and usage of KeySelector

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

PartitionByHash and usage of KeySelector

Stefano Bortoli
Hi all,

I am moving my first steps into becoming an Apache Flink user! I have configured and run some simple jobs on a small cluster, and everything worked quite fine so far.

What I am trying to do right now is to run a duplication detection task on dataset of about 9.5M records. The records are well structured, and therefore we can exploit the semantic of attributes to narrow down expensive match executions.

My idea is the following:
1. partition the dataset according to a macro-parameter written in the record. This allows me to get to 7 partitions of different sizes but also certainly disjoint. I do that by filtering on a specific type.
2. create partitions of each of the partitions created in step 1 based on some simple similarity that would reduce the number of expensive function. I would like to do that by using partitionByHash and KeySelector.
3. compute Cross product for each of the partitions defined in step 2;
4. filter each pair of the cross product by applying an expensive boolean matching function. Only positive matching duplicates will be retained.

Currently I am working on the step 2, and I have some problems understanding how to use the partitionByHash function. The main problem is that I need to have a 'rich key' to support partition, and I discovered the ExpressionKeys that would allow me to define hash keys with sets of Strings I can collect from the record. However, the partitionByHash function does not allow to use these objects as the hash must implement comparable.

So, here is my question: how can I partition considering hash keys of more than one String?

Is there a better strategy to implement a de-duplication using Flink?


thanks a lot for your support.

kind regards,

Stefano Bortoli, PhD
ENS Technical Director
_______________________________________________
OKKAMSrl www.okkam.it

Email: [hidden email]

Phone nr: <a href="tel:%2B39%200461%201823912" value="+3904611823912" target="_blank">+39 0461 1823912

Headquarters: Trento (Italy), Via Trener 8
Registered office: Trento (Italy), via Segantini 23

Confidentially notice. This e-mail transmission may contain legally privileged and/or confidential information. Please do not read it if you are not the intended recipient(S). Any use, distribution, reproduction or disclosure by any other person is strictly prohibited. If you have received this e-mail in error, please notify the sender and destroy the original transmission and its attachments without reading or saving it in any manner.

Reply | Threaded
Open this post in threaded view
|

Re: PartitionByHash and usage of KeySelector

Aljoscha Krettek
Hi Stefano,
what to you mean by "creating partitions of each of the partitions"?

The expressions keys can be used to specify fields of objects that
should be used for hashing. So if you had objects of this class in a
DataSet:

class Foo {
  public String bar;
  public Integer baz;
  public Float bat;
}

You could use for example:

input.partitionByHash("baz", "bat")

to perform the partitioning only on those two fields of the objects.

Regards,
Aljoscha

On Thu, Nov 6, 2014 at 9:19 AM, Stefano Bortoli <[hidden email]> wrote:

> Hi all,
>
> I am moving my first steps into becoming an Apache Flink user! I have
> configured and run some simple jobs on a small cluster, and everything
> worked quite fine so far.
>
> What I am trying to do right now is to run a duplication detection task on
> dataset of about 9.5M records. The records are well structured, and
> therefore we can exploit the semantic of attributes to narrow down expensive
> match executions.
>
> My idea is the following:
> 1. partition the dataset according to a macro-parameter written in the
> record. This allows me to get to 7 partitions of different sizes but also
> certainly disjoint. I do that by filtering on a specific type.
> 2. create partitions of each of the partitions created in step 1 based on
> some simple similarity that would reduce the number of expensive function. I
> would like to do that by using partitionByHash and KeySelector.
> 3. compute Cross product for each of the partitions defined in step 2;
> 4. filter each pair of the cross product by applying an expensive boolean
> matching function. Only positive matching duplicates will be retained.
>
> Currently I am working on the step 2, and I have some problems understanding
> how to use the partitionByHash function. The main problem is that I need to
> have a 'rich key' to support partition, and I discovered the ExpressionKeys
> that would allow me to define hash keys with sets of Strings I can collect
> from the record. However, the partitionByHash function does not allow to use
> these objects as the hash must implement comparable.
>
> So, here is my question: how can I partition considering hash keys of more
> than one String?
>
> Is there a better strategy to implement a de-duplication using Flink?
>
>
> thanks a lot for your support.
>
> kind regards,
>
> Stefano Bortoli, PhD
> ENS Technical Director
> _______________________________________________
> OKKAMSrl - www.okkam.it
>
> Email: [hidden email]
>
> Phone nr: +39 0461 1823912
>
> Headquarters: Trento (Italy), Via Trener 8
> Registered office: Trento (Italy), via Segantini 23
>
> Confidentially notice. This e-mail transmission may contain legally
> privileged and/or confidential information. Please do not read it if you are
> not the intended recipient(S). Any use, distribution, reproduction or
> disclosure by any other person is strictly prohibited. If you have received
> this e-mail in error, please notify the sender and destroy the original
> transmission and its attachments without reading or saving it in any manner.
Reply | Threaded
Open this post in threaded view
|

Re: PartitionByHash and usage of KeySelector

Stefano Bortoli
Hi Aljoscha,

with "creating partitions of each of the partitions" I mean that I need to further partition the sets of objects result of the preliminary macro-filter.

My problem is that the objects I deal with are relatively complex, and rich. Furthermore, schema-less when it comes to 'selection of keys'. Namely, I have a sets of Attributes, and each attribute has a name and value. What I would like to do is to create rich KEY objects processing these sets of Attributes according to some logic. Practically, I would have to extract keys from each objects, and then let the partition function to group records around these keys. Hopefully, the partitions generated by these keys will be small enough to make the cross produce manageable, and therefore reduce the cost of expensive matching functions implemented as filters.

In my head, what I am trying to do is to prune as much as possible the search space for duplicates (performing some sort of distributed blocking), and then work expensive cross product comparison on relatively small sets.

Do you think it is feasible? Does it make sense?

Meanwhile I am creating a global index I can query in a map function, but then Flink looses a bit of its appeal on this task. :-)

saluti,
Stefano


2014-11-06 10:18 GMT+01:00 Aljoscha Krettek <[hidden email]>:
Hi Stefano,
what to you mean by "creating partitions of each of the partitions"?

The expressions keys can be used to specify fields of objects that
should be used for hashing. So if you had objects of this class in a
DataSet:

class Foo {
  public String bar;
  public Integer baz;
  public Float bat;
}

You could use for example:

input.partitionByHash("baz", "bat")

to perform the partitioning only on those two fields of the objects.

Regards,
Aljoscha

On Thu, Nov 6, 2014 at 9:19 AM, Stefano Bortoli <[hidden email]> wrote:
> Hi all,
>
> I am moving my first steps into becoming an Apache Flink user! I have
> configured and run some simple jobs on a small cluster, and everything
> worked quite fine so far.
>
> What I am trying to do right now is to run a duplication detection task on
> dataset of about 9.5M records. The records are well structured, and
> therefore we can exploit the semantic of attributes to narrow down expensive
> match executions.
>
> My idea is the following:
> 1. partition the dataset according to a macro-parameter written in the
> record. This allows me to get to 7 partitions of different sizes but also
> certainly disjoint. I do that by filtering on a specific type.
> 2. create partitions of each of the partitions created in step 1 based on
> some simple similarity that would reduce the number of expensive function. I
> would like to do that by using partitionByHash and KeySelector.
> 3. compute Cross product for each of the partitions defined in step 2;
> 4. filter each pair of the cross product by applying an expensive boolean
> matching function. Only positive matching duplicates will be retained.
>
> Currently I am working on the step 2, and I have some problems understanding
> how to use the partitionByHash function. The main problem is that I need to
> have a 'rich key' to support partition, and I discovered the ExpressionKeys
> that would allow me to define hash keys with sets of Strings I can collect
> from the record. However, the partitionByHash function does not allow to use
> these objects as the hash must implement comparable.
>
> So, here is my question: how can I partition considering hash keys of more
> than one String?
>
> Is there a better strategy to implement a de-duplication using Flink?
>
>
> thanks a lot for your support.
>
> kind regards,
>
> Stefano Bortoli, PhD
> ENS Technical Director
> _______________________________________________
> OKKAMSrl - www.okkam.it
>
> Email: [hidden email]
>
> Phone nr: <a href="tel:%2B39%200461%201823912" value="+3904611823912">+39 0461 1823912
>
> Headquarters: Trento (Italy), Via Trener 8
> Registered office: Trento (Italy), via Segantini 23
>
> Confidentially notice. This e-mail transmission may contain legally
> privileged and/or confidential information. Please do not read it if you are
> not the intended recipient(S). Any use, distribution, reproduction or
> disclosure by any other person is strictly prohibited. If you have received
> this e-mail in error, please notify the sender and destroy the original
> transmission and its attachments without reading or saving it in any manner.

Reply | Threaded
Open this post in threaded view
|

Re: PartitionByHash and usage of KeySelector

Fabian Hueske
Hi Stefano,

I'm not sure if we use the same terminology here. What you call partitioning might be called grouping in Flinks API / documentation.

Grouping builds groups of element that share the same key. This is a deterministic operation.
Partitioning distributes elements over a set of machines / parallel workers. If this is done using hash partitioning, Flink determines the parallel worker for an element by hashing the element's partition key ( mod(hash(key), #workers) ). Consequently, all elements with the same partition key will be shipped to the same worker, BUT also all other elements for which mod(hash(key), #workers) is the same will be shipped to the same worker. If you partition map over these partitions all of these elements will be mixed. If the number of workers (or the hash function) changes, partitions will look different. When grouping all elements of the group will have the same key (and all elements with that key will be in the group).

Flink's cross operator builds a dataset wide cross product. It does not respect groups (or partitions). If you want to build a cross product within a group, you can do that with a groupReduce which requires to hold all elements of the group in memory or manually spill them to disk in your UDF. Alternatively, you can use a self join (join a data set with itself) which will give you all pairs of the CP in individual function calls. However, Flink is currently not treating self joins special, such that the performance could be optimized. You'll also get symmetric pairs (a-b, b-a, a-a, b-b, for two element a, b with the same join key).

If it is possible to combine the marco-parameter keys and the minor-blocking keys into a single key, you could specify a key-selector function x() and either do
- dataSet.groupBy(x).reduceGroup( *read full group into memory, and apply expensive function to each pair of elements* ); or
- dataSet.join(dataSet).where(x).equalTo(x).join( *check of symmetric pair and apply expensive compare function* ).

BTW. there was a similar use case a few days back on the mailing list. Might be worth reading that thread [1].
Since there this is the second time that this issue came up, we might consider to add better support for group-wise cross operations.

Cheers, Fabian



Reply | Threaded
Open this post in threaded view
|

Re: PartitionByHash and usage of KeySelector

Stefano Bortoli
Thanks a lot Fabian. You clarified many points. Currently I am try to run the job relying on a global index built with SOLR. It worked on a dataset of about 1M record, but it failed with obscure exception on the one of 9.2M. If I cannot make it work, I will go back to the grouping approach.

Just a question. If I create a dataset for each group of a dataset, then I could use the cross on each of the group. Right? However, I guess it would be smarter to have a reduceGroup capable of generating just the pairs that would need to be compared.

thanks a lot again. keep on the great work! :-)

saluti,
Stefano


2014-11-10 10:50 GMT+01:00 Fabian Hueske <[hidden email]>:
Hi Stefano,

I'm not sure if we use the same terminology here. What you call partitioning might be called grouping in Flinks API / documentation.

Grouping builds groups of element that share the same key. This is a deterministic operation.
Partitioning distributes elements over a set of machines / parallel workers. If this is done using hash partitioning, Flink determines the parallel worker for an element by hashing the element's partition key ( mod(hash(key), #workers) ). Consequently, all elements with the same partition key will be shipped to the same worker, BUT also all other elements for which mod(hash(key), #workers) is the same will be shipped to the same worker. If you partition map over these partitions all of these elements will be mixed. If the number of workers (or the hash function) changes, partitions will look different. When grouping all elements of the group will have the same key (and all elements with that key will be in the group).

Flink's cross operator builds a dataset wide cross product. It does not respect groups (or partitions). If you want to build a cross product within a group, you can do that with a groupReduce which requires to hold all elements of the group in memory or manually spill them to disk in your UDF. Alternatively, you can use a self join (join a data set with itself) which will give you all pairs of the CP in individual function calls. However, Flink is currently not treating self joins special, such that the performance could be optimized. You'll also get symmetric pairs (a-b, b-a, a-a, b-b, for two element a, b with the same join key).

If it is possible to combine the marco-parameter keys and the minor-blocking keys into a single key, you could specify a key-selector function x() and either do
- dataSet.groupBy(x).reduceGroup( *read full group into memory, and apply expensive function to each pair of elements* ); or
- dataSet.join(dataSet).where(x).equalTo(x).join( *check of symmetric pair and apply expensive compare function* ).

BTW. there was a similar use case a few days back on the mailing list. Might be worth reading that thread [1].
Since there this is the second time that this issue came up, we might consider to add better support for group-wise cross operations.

Cheers, Fabian




Reply | Threaded
Open this post in threaded view
|

Re: PartitionByHash and usage of KeySelector

Fabian Hueske
Yes, if you'd split the data set manually (maybe using filter) into multiple data sets, you could use Cross.
However, Cross is a binary operation, such that you'd need to use it as a self-cross which would result in symmetric pairs as the join.

I'm not sure if I would do this in a single job, i.e., run all cross operations concurrently. 
It might be better to partition the data up-front and run multiple jobs for each group.

Best, Fabian

2014-11-10 11:08 GMT+01:00 Stefano Bortoli <[hidden email]>:
Thanks a lot Fabian. You clarified many points. Currently I am try to run the job relying on a global index built with SOLR. It worked on a dataset of about 1M record, but it failed with obscure exception on the one of 9.2M. If I cannot make it work, I will go back to the grouping approach.

Just a question. If I create a dataset for each group of a dataset, then I could use the cross on each of the group. Right? However, I guess it would be smarter to have a reduceGroup capable of generating just the pairs that would need to be compared.

thanks a lot again. keep on the great work! :-)

saluti,
Stefano


2014-11-10 10:50 GMT+01:00 Fabian Hueske <[hidden email]>:
Hi Stefano,

I'm not sure if we use the same terminology here. What you call partitioning might be called grouping in Flinks API / documentation.

Grouping builds groups of element that share the same key. This is a deterministic operation.
Partitioning distributes elements over a set of machines / parallel workers. If this is done using hash partitioning, Flink determines the parallel worker for an element by hashing the element's partition key ( mod(hash(key), #workers) ). Consequently, all elements with the same partition key will be shipped to the same worker, BUT also all other elements for which mod(hash(key), #workers) is the same will be shipped to the same worker. If you partition map over these partitions all of these elements will be mixed. If the number of workers (or the hash function) changes, partitions will look different. When grouping all elements of the group will have the same key (and all elements with that key will be in the group).

Flink's cross operator builds a dataset wide cross product. It does not respect groups (or partitions). If you want to build a cross product within a group, you can do that with a groupReduce which requires to hold all elements of the group in memory or manually spill them to disk in your UDF. Alternatively, you can use a self join (join a data set with itself) which will give you all pairs of the CP in individual function calls. However, Flink is currently not treating self joins special, such that the performance could be optimized. You'll also get symmetric pairs (a-b, b-a, a-a, b-b, for two element a, b with the same join key).

If it is possible to combine the marco-parameter keys and the minor-blocking keys into a single key, you could specify a key-selector function x() and either do
- dataSet.groupBy(x).reduceGroup( *read full group into memory, and apply expensive function to each pair of elements* ); or
- dataSet.join(dataSet).where(x).equalTo(x).join( *check of symmetric pair and apply expensive compare function* ).

BTW. there was a similar use case a few days back on the mailing list. Might be worth reading that thread [1].
Since there this is the second time that this issue came up, we might consider to add better support for group-wise cross operations.

Cheers, Fabian





Reply | Threaded
Open this post in threaded view
|

Re: PartitionByHash and usage of KeySelector

Stefano Bortoli
Hi Fabian,

is it possible to create a RichKeySelector? I would need to read some configuration files to process the record and build the 'key' using a custom function. There is no interface/abstract class to implement/extend and I wonder whether this is the right way to do it. Meaning, maybe there is I reason I don't get to not have a rich key selection. I thank you a lot in advance for you time!

saluti,
Stefano

2014-11-10 12:05 GMT+01:00 Fabian Hueske <[hidden email]>:
Yes, if you'd split the data set manually (maybe using filter) into multiple data sets, you could use Cross.
However, Cross is a binary operation, such that you'd need to use it as a self-cross which would result in symmetric pairs as the join.

I'm not sure if I would do this in a single job, i.e., run all cross operations concurrently. 
It might be better to partition the data up-front and run multiple jobs for each group.

Best, Fabian

2014-11-10 11:08 GMT+01:00 Stefano Bortoli <[hidden email]>:
Thanks a lot Fabian. You clarified many points. Currently I am try to run the job relying on a global index built with SOLR. It worked on a dataset of about 1M record, but it failed with obscure exception on the one of 9.2M. If I cannot make it work, I will go back to the grouping approach.

Just a question. If I create a dataset for each group of a dataset, then I could use the cross on each of the group. Right? However, I guess it would be smarter to have a reduceGroup capable of generating just the pairs that would need to be compared.

thanks a lot again. keep on the great work! :-)

saluti,
Stefano


2014-11-10 10:50 GMT+01:00 Fabian Hueske <[hidden email]>:
Hi Stefano,

I'm not sure if we use the same terminology here. What you call partitioning might be called grouping in Flinks API / documentation.

Grouping builds groups of element that share the same key. This is a deterministic operation.
Partitioning distributes elements over a set of machines / parallel workers. If this is done using hash partitioning, Flink determines the parallel worker for an element by hashing the element's partition key ( mod(hash(key), #workers) ). Consequently, all elements with the same partition key will be shipped to the same worker, BUT also all other elements for which mod(hash(key), #workers) is the same will be shipped to the same worker. If you partition map over these partitions all of these elements will be mixed. If the number of workers (or the hash function) changes, partitions will look different. When grouping all elements of the group will have the same key (and all elements with that key will be in the group).

Flink's cross operator builds a dataset wide cross product. It does not respect groups (or partitions). If you want to build a cross product within a group, you can do that with a groupReduce which requires to hold all elements of the group in memory or manually spill them to disk in your UDF. Alternatively, you can use a self join (join a data set with itself) which will give you all pairs of the CP in individual function calls. However, Flink is currently not treating self joins special, such that the performance could be optimized. You'll also get symmetric pairs (a-b, b-a, a-a, b-b, for two element a, b with the same join key).

If it is possible to combine the marco-parameter keys and the minor-blocking keys into a single key, you could specify a key-selector function x() and either do
- dataSet.groupBy(x).reduceGroup( *read full group into memory, and apply expensive function to each pair of elements* ); or
- dataSet.join(dataSet).where(x).equalTo(x).join( *check of symmetric pair and apply expensive compare function* ).

BTW. there was a similar use case a few days back on the mailing list. Might be worth reading that thread [1].
Since there this is the second time that this issue came up, we might consider to add better support for group-wise cross operations.

Cheers, Fabian






Reply | Threaded
Open this post in threaded view
|

Re: PartitionByHash and usage of KeySelector

Fabian Hueske
Hi Stefano,

right now, there is no such thing as a RichKeyExtractor.

However, KeySelector functions are serialized and passed to the execution engine. That means, you can configure your KeySelector via the constructor at program construction time and the "same" object is passed to the engine at runtime.
The Configuration object is kind of a legacy feature from the time when user functions were not serializable but new objects were created and configured.

Another alternative is to use a RichMapFunction instead of a KeySelector and convert a Type A into a Tuple2<Key, A>. In fact this is what happens internally when using key selector function.

Best, Fabian

2014-11-10 14:36 GMT+01:00 Stefano Bortoli <[hidden email]>:
Hi Fabian,

is it possible to create a RichKeySelector? I would need to read some configuration files to process the record and build the 'key' using a custom function. There is no interface/abstract class to implement/extend and I wonder whether this is the right way to do it. Meaning, maybe there is I reason I don't get to not have a rich key selection. I thank you a lot in advance for you time!

saluti,
Stefano

2014-11-10 12:05 GMT+01:00 Fabian Hueske <[hidden email]>:
Yes, if you'd split the data set manually (maybe using filter) into multiple data sets, you could use Cross.
However, Cross is a binary operation, such that you'd need to use it as a self-cross which would result in symmetric pairs as the join.

I'm not sure if I would do this in a single job, i.e., run all cross operations concurrently. 
It might be better to partition the data up-front and run multiple jobs for each group.

Best, Fabian

2014-11-10 11:08 GMT+01:00 Stefano Bortoli <[hidden email]>:
Thanks a lot Fabian. You clarified many points. Currently I am try to run the job relying on a global index built with SOLR. It worked on a dataset of about 1M record, but it failed with obscure exception on the one of 9.2M. If I cannot make it work, I will go back to the grouping approach.

Just a question. If I create a dataset for each group of a dataset, then I could use the cross on each of the group. Right? However, I guess it would be smarter to have a reduceGroup capable of generating just the pairs that would need to be compared.

thanks a lot again. keep on the great work! :-)

saluti,
Stefano


2014-11-10 10:50 GMT+01:00 Fabian Hueske <[hidden email]>:
Hi Stefano,

I'm not sure if we use the same terminology here. What you call partitioning might be called grouping in Flinks API / documentation.

Grouping builds groups of element that share the same key. This is a deterministic operation.
Partitioning distributes elements over a set of machines / parallel workers. If this is done using hash partitioning, Flink determines the parallel worker for an element by hashing the element's partition key ( mod(hash(key), #workers) ). Consequently, all elements with the same partition key will be shipped to the same worker, BUT also all other elements for which mod(hash(key), #workers) is the same will be shipped to the same worker. If you partition map over these partitions all of these elements will be mixed. If the number of workers (or the hash function) changes, partitions will look different. When grouping all elements of the group will have the same key (and all elements with that key will be in the group).

Flink's cross operator builds a dataset wide cross product. It does not respect groups (or partitions). If you want to build a cross product within a group, you can do that with a groupReduce which requires to hold all elements of the group in memory or manually spill them to disk in your UDF. Alternatively, you can use a self join (join a data set with itself) which will give you all pairs of the CP in individual function calls. However, Flink is currently not treating self joins special, such that the performance could be optimized. You'll also get symmetric pairs (a-b, b-a, a-a, b-b, for two element a, b with the same join key).

If it is possible to combine the marco-parameter keys and the minor-blocking keys into a single key, you could specify a key-selector function x() and either do
- dataSet.groupBy(x).reduceGroup( *read full group into memory, and apply expensive function to each pair of elements* ); or
- dataSet.join(dataSet).where(x).equalTo(x).join( *check of symmetric pair and apply expensive compare function* ).

BTW. there was a similar use case a few days back on the mailing list. Might be worth reading that thread [1].
Since there this is the second time that this issue came up, we might consider to add better support for group-wise cross operations.

Cheers, Fabian







Reply | Threaded
Open this post in threaded view
|

Re: PartitionByHash and usage of KeySelector

Stefano Bortoli
Hi Fabian,

the rich map with Tuple creation was exactly what I did to interact with the global index, and then filter match and group results. No problem for the moment.

Thanks for you help anyway.

saluti,
Stefano

2014-11-10 16:24 GMT+01:00 Fabian Hueske <[hidden email]>:
Hi Stefano,

right now, there is no such thing as a RichKeyExtractor.

However, KeySelector functions are serialized and passed to the execution engine. That means, you can configure your KeySelector via the constructor at program construction time and the "same" object is passed to the engine at runtime.
The Configuration object is kind of a legacy feature from the time when user functions were not serializable but new objects were created and configured.

Another alternative is to use a RichMapFunction instead of a KeySelector and convert a Type A into a Tuple2<Key, A>. In fact this is what happens internally when using key selector function.

Best, Fabian

2014-11-10 14:36 GMT+01:00 Stefano Bortoli <[hidden email]>:
Hi Fabian,

is it possible to create a RichKeySelector? I would need to read some configuration files to process the record and build the 'key' using a custom function. There is no interface/abstract class to implement/extend and I wonder whether this is the right way to do it. Meaning, maybe there is I reason I don't get to not have a rich key selection. I thank you a lot in advance for you time!

saluti,
Stefano

2014-11-10 12:05 GMT+01:00 Fabian Hueske <[hidden email]>:
Yes, if you'd split the data set manually (maybe using filter) into multiple data sets, you could use Cross.
However, Cross is a binary operation, such that you'd need to use it as a self-cross which would result in symmetric pairs as the join.

I'm not sure if I would do this in a single job, i.e., run all cross operations concurrently. 
It might be better to partition the data up-front and run multiple jobs for each group.

Best, Fabian

2014-11-10 11:08 GMT+01:00 Stefano Bortoli <[hidden email]>:
Thanks a lot Fabian. You clarified many points. Currently I am try to run the job relying on a global index built with SOLR. It worked on a dataset of about 1M record, but it failed with obscure exception on the one of 9.2M. If I cannot make it work, I will go back to the grouping approach.

Just a question. If I create a dataset for each group of a dataset, then I could use the cross on each of the group. Right? However, I guess it would be smarter to have a reduceGroup capable of generating just the pairs that would need to be compared.

thanks a lot again. keep on the great work! :-)

saluti,
Stefano


2014-11-10 10:50 GMT+01:00 Fabian Hueske <[hidden email]>:
Hi Stefano,

I'm not sure if we use the same terminology here. What you call partitioning might be called grouping in Flinks API / documentation.

Grouping builds groups of element that share the same key. This is a deterministic operation.
Partitioning distributes elements over a set of machines / parallel workers. If this is done using hash partitioning, Flink determines the parallel worker for an element by hashing the element's partition key ( mod(hash(key), #workers) ). Consequently, all elements with the same partition key will be shipped to the same worker, BUT also all other elements for which mod(hash(key), #workers) is the same will be shipped to the same worker. If you partition map over these partitions all of these elements will be mixed. If the number of workers (or the hash function) changes, partitions will look different. When grouping all elements of the group will have the same key (and all elements with that key will be in the group).

Flink's cross operator builds a dataset wide cross product. It does not respect groups (or partitions). If you want to build a cross product within a group, you can do that with a groupReduce which requires to hold all elements of the group in memory or manually spill them to disk in your UDF. Alternatively, you can use a self join (join a data set with itself) which will give you all pairs of the CP in individual function calls. However, Flink is currently not treating self joins special, such that the performance could be optimized. You'll also get symmetric pairs (a-b, b-a, a-a, b-b, for two element a, b with the same join key).

If it is possible to combine the marco-parameter keys and the minor-blocking keys into a single key, you could specify a key-selector function x() and either do
- dataSet.groupBy(x).reduceGroup( *read full group into memory, and apply expensive function to each pair of elements* ); or
- dataSet.join(dataSet).where(x).equalTo(x).join( *check of symmetric pair and apply expensive compare function* ).

BTW. there was a similar use case a few days back on the mailing list. Might be worth reading that thread [1].
Since there this is the second time that this issue came up, we might consider to add better support for group-wise cross operations.

Cheers, Fabian








Reply | Threaded
Open this post in threaded view
|

Re: PartitionByHash and usage of KeySelector

Ashley32189
In reply to this post by Stefano Bortoli

Covid; 2017 - 2030 - Girls and Boys - Russian Family Incest - Private Video Collection
Young Girls and Boys Make Real Hot Sex on Cam; Private Video Collection:
ajb - Random Tiktok Girls -- Skype and Omegle Girls -- Tiktok Nude Girls
New Videos - New Movies - Movie Reviews - Movie Trailers - TV
Russian Family Incest - Incest family teens
New Free Games - Private Sex Orgy - Self Teen Girls; ajb - Archive
Private Video Collection - Very Explicit Cams
18 yo Teens Only - Asian Tiktok Teens.
Home Made Model TKM -- Real Life Cam

Download from Xubster-com:
Link: https://xubster.com/users/546/9802

Download from Daofile-com:
Link: https://daofile.com/go/3w4soyhvuake

Download from Nelion-me:
Link: https://nelion.me/go/w98s182gorax

Download from File-al:
Link: https://file.al/public/56284/31885

-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

Log In or Sign Up; Link: https://xubster.com/free546.html

Amateur Young Girls
Link; 1: https://xubster.com/users/546/12421/0001
Link; 2: https://xubster.com/users/546/12462/0002
Link; 3: https://xubster.com/users/546/12463/0003
Link; 4: https://xubster.com/users/546/12464/0004
Link; 5: https://xubster.com/users/546/12465/0005
Link; 6: https://xubster.com/users/546/12466/0006
Link; 7: https://xubster.com/users/546/12467/0007
Link; 8: https://xubster.com/users/546/12468/0008
Link; 9: https://xubster.com/users/546/12469/0009
Link; 10: https://xubster.com/users/546/12470/0010
Link; 11: https://xubster.com/users/546/12471/0011
Link; 12: https://xubster.com/users/546/12472/0012

Covid: 2017 - 2030 - Girls and Boys
Link; 13: https://xubster.com/users/546/12422/0013
Link; 14: https://xubster.com/users/546/12473/0014

18 yo Teens Only
Innocent sweethearts star in 18 year old sex scenes
with their tight cunts filled by big cocks
Sexy coeds give hot blowjobs and swallow cum
Teens, Hardcore, Large Shlong, Amateur eighteen Years Old
18 year old masturbates on cam
Horny Teen 19 Years Old Masturbating On Web Cam
Only fingers filling my pussy to orgasm
Link; 15: https://xubster.com/users/546/12423/0015
Link; 16: https://xubster.com/users/546/12474/0016
Link; 17: https://xubster.com/users/546/12475/0017
Link; 18: https://xubster.com/users/546/12476/0018
Link; 19: https://xubster.com/users/546/12477/0019

Asian Tiktok Teens
Link; 20: https://xubster.com/users/546/12424/0020
Link; 21: https://xubster.com/users/546/12479/0021
Link; 22: https://xubster.com/users/546/12480/0022
Link; 23: https://xubster.com/users/546/12481/0023
Link; 24: https://xubster.com/users/546/12482/0024
Link; 25: https://xubster.com/users/546/12483/0025
Link; 26: https://xubster.com/users/546/12484/0026
Link; 27: https://xubster.com/users/546/12485/0027
Link; 28: https://xubster.com/users/546/12486/0028
Link; 29: https://xubster.com/users/546/12487/0029
Link; 30: https://xubster.com/users/546/12488/0030
Link; 31: https://xubster.com/users/546/12489/0031

Real Life Cam
Teen and Young Girls and Couples
Voyeur Villa Nelly Doggystyle HD Sex
Real Private Life on WebCam
Categories: Voyeur Sex, WebCam Porn, SpyCam Fetish
Teen Cam, Young Couples, Exhibitionism Video, Young Public Sex
WebCam Public Sex, Masturbation Teens, TeenSex
Link; 32: https://xubster.com/users/546/12418/0032
Link; 33: https://xubster.com/users/546/12490/0033
Link; 34: https://xubster.com/users/546/12491/0034
Link; 35: https://xubster.com/users/546/12492/0035
Link; 36: https://xubster.com/users/546/12493/0036
Link; 37: https://xubster.com/users/546/12494/0037

Porn Tiktok 18+ Banned on TikTok
Link; 38: https://xubster.com/users/546/12592/0038
Link; 39: https://xubster.com/users/546/12593/0039
Link; 40: https://xubster.com/users/546/12594/0040
Link; 41: https://xubster.com/users/546/12595/0041
Link; 42: https://xubster.com/users/546/12596/0042
Link; 43: https://xubster.com/users/546/12597/0043
Link; 44: https://xubster.com/users/546/12598/0044
Link; 45: https://xubster.com/users/546/12599/0045
Link; 46: https://xubster.com/users/546/12600/0046
Link; 47: https://xubster.com/users/546/12601/0047
Link; 48: https://xubster.com/users/546/12602/0048
Link; 49: https://xubster.com/users/546/12603/0049
Link; 50: https://xubster.com/users/546/12604/0050

Teen Models
Japanese Teen Girl in WebCam Show After School
MISS VIKKI - TEEN RUSSIAN MODEL
Little Miss Vikki From Russia -- My Private Collection
Mattie Doll -- Horny Teen With a Talent for Sharing Sensational Orgasmes
Kyutty Kitty -- Asian Sweety PussyCat
REAL VIDEOS OF SEXY TEEN MODEL Hentai-Cat
Effy Loweell -- Sexy Young Models With Small Tits

Alice MFC
Link; 51: https://xubster.com/users/546/12427

Alison Lil Baby
Link; 52: https://xubster.com/users/546/12428

Cute Mary
Link; 53: https://xubster.com/users/546/12429

Effy Loweell
Link; 54: https://xubster.com/users/546/12430

Hana Lily
Link; 55: https://xubster.com/users/546/12431

Hentai-Cat
Link; 56: https://xubster.com/users/546/12432

Hot Nesquik
Link; 57: https://xubster.com/users/546/12433

Katya Letova
Link; 58: https://xubster.com/users/546/12434

Koska Leska
Link; 59: https://xubster.com/users/546/12435

Kyutty
Link; 60: https://xubster.com/users/546/12436

Mattie Doll
Link; 61: https://xubster.com/users/546/12437

Miss Vikki
Link; 62: https://xubster.com/users/546/12438

Venus Kitty
Link; 63: https://xubster.com/users/546/12439

Your Wet Schoolgirl
Link; 64: https://xubster.com/users/546/12440

Non Nude Tiktok Teens
Teen Cute Girls talk, sexy dance and play on cam
Link; 65: https://xubster.com/users/546/12452/0065
Link; 66: https://xubster.com/users/546/12507/0066
Link; 67: https://xubster.com/users/546/12508/0067
Link; 68: https://xubster.com/users/546/12509/0068
Link; 69: https://xubster.com/users/546/12510/0069
Link; 70: https://xubster.com/users/546/12511/0070
Link; 71: https://xubster.com/users/546/12512/0071
Link; 72: https://xubster.com/users/546/12513/0072
Link; 73: https://xubster.com/users/546/12514/0073
Link; 74: https://xubster.com/users/546/12515/0074
Link; 75: https://xubster.com/users/546/12516/0075
Link; 76: https://xubster.com/users/546/12517/0076

Nudism Young Girls
Link; 77: https://xubster.com/users/546/12453/0077
Link; 78: https://xubster.com/users/546/12518/0078
Link; 79: https://xubster.com/users/546/12519/0079
Link; 80: https://xubster.com/users/546/12520/0080
Link; 81: https://xubster.com/users/546/12521/0081
Link; 82: https://xubster.com/users/546/12522/0082
Link; 83: https://xubster.com/users/546/12523/0083

Russian Family Incest
Incest family teens
Link; 84: https://xubster.com/users/546/12454/0084
Link; 85: https://xubster.com/users/546/12524/0085
Link; 86: https://xubster.com/users/546/12525/0086
Link; 87: https://xubster.com/users/546/12526/0087
Link; 88: https://xubster.com/users/546/12527/0088
Link; 89: https://xubster.com/users/546/12528/0089
Link; 90: https://xubster.com/users/546/12529/0090
Link; 91: https://xubster.com/users/546/12530/0091

Real Spycam - Hiddencam
Link; 92: https://xubster.com/users/546/12455/0092
Link; 93: https://xubster.com/users/546/12531/0093
Link; 94: https://xubster.com/users/546/12532/0094
Link; 95: https://xubster.com/users/546/12533/0095
Link; 96: https://xubster.com/users/546/12534/0096
Link; 97: https://xubster.com/users/546/12535/0097
Link; 98: https://xubster.com/users/546/12536/0098
Link; 99: https://xubster.com/users/546/12537/0099
Link; 100: https://xubster.com/users/546/12538/0100
Link; 101: https://xubster.com/users/546/12539/0101
Link; 102: https://xubster.com/users/546/12540/0102
Link; 103: https://xubster.com/users/546/12541/0103

Tight Teen Pussy
FUCK TIGHT TEEN PUSSY - Real Fuck Extreme Small Teen Pussy - 18+
FULL HD 83 Hot Home Made Videos of Real Extreme Fuck Small Teen Pussy
Link; 104: https://xubster.com/users/546/12456/0104

Random Tiktok Girls
Link; 105: https://xubster.com/users/546/12457/0105
Link; 106: https://xubster.com/users/546/12542/0106
Link; 107: https://xubster.com/users/546/12543/0107
Link; 108: https://xubster.com/users/546/12544/0108
Link; 109: https://xubster.com/users/546/12545/0109
Link; 110: https://xubster.com/users/546/12546/0110
Link; 111: https://xubster.com/users/546/12547/0111
Link; 112: https://xubster.com/users/546/12548/0112
Link; 113: https://xubster.com/users/546/12549/0113
Link; 114: https://xubster.com/users/546/12550/0114
Link; 115: https://xubster.com/users/546/12551/0115
Link; 116: https://xubster.com/users/546/12552/0116
Link; 117: https://xubster.com/users/546/12553/0117
Link; 118: https://xubster.com/users/546/12554/0118

Skype and Omegle Girls
Link; 119: https://xubster.com/users/546/12459/0119
Link; 120: https://xubster.com/users/546/12555/0120
Link; 121: https://xubster.com/users/546/12556/0121
Link; 122: https://xubster.com/users/546/12557/0122
Link; 123: https://xubster.com/users/546/12558/0123
Link; 124: https://xubster.com/users/546/12559/0124
Link; 125: https://xubster.com/users/546/12560/0125
Link; 126: https://xubster.com/users/546/12561/0126
Link; 127: https://xubster.com/users/546/12562/0127
Link; 128: https://xubster.com/users/546/12563/0128
Link; 129: https://xubster.com/users/546/12564/0129
Link; 130: https://xubster.com/users/546/12565/0130

Tiktok Nude Girls
Link; 131: https://xubster.com/users/546/12460/0131
Link; 132: https://xubster.com/users/546/12566/0132
Link; 133: https://xubster.com/users/546/12567/0133
Link; 134: https://xubster.com/users/546/12568/0134
Link; 135: https://xubster.com/users/546/12569/0135
Link; 136: https://xubster.com/users/546/12570/0136
Link; 137: https://xubster.com/users/546/12571/0137
Link; 138: https://xubster.com/users/546/12572/0138
Link; 139: https://xubster.com/users/546/12573/0139
Link; 140: https://xubster.com/users/546/12574/0140
Link; 141: https://xubster.com/users/546/12575/0141
Link; 142: https://xubster.com/users/546/12576/0142
Link; 143: https://xubster.com/users/546/12577/0143
Link; 144: https://xubster.com/users/546/12578/0144
Link; 145: https://xubster.com/users/546/12579/0145

Webcam Teens and Couples
Link; 146: https://xubster.com/users/546/12461/0146
Link; 147: https://xubster.com/users/546/12580/0147
Link; 148: https://xubster.com/users/546/12581/0148
Link; 149: https://xubster.com/users/546/12582/0149
Link; 150: https://xubster.com/users/546/12583/0150
Link; 151: https://xubster.com/users/546/12584/0151
Link; 152: https://xubster.com/users/546/12585/0152
Link; 153: https://xubster.com/users/546/12586/0153
Link; 154: https://xubster.com/users/546/12587/0154
Link; 155: https://xubster.com/users/546/12588/0155
Link; 156: https://xubster.com/users/546/12589/0156
Link; 157: https://xubster.com/users/546/12590/0157

Rape Porn; Free Porn Videos; HD - VR Sex Videos
Link; 158: https://xubster.com/users/546/6261/001

Snuff Porn Videos; Fake murders and decapitation
Link; 159: https://xubster.com/users/546/6265/002

Forced Porn; Forced Sex - Forced To Fuck Videos
Link; 160: https://xubster.com/users/546/6266/003

Hot Asian Teen Sex Videos; Japanese and Korean Porn Movies
Link; 161: https://xubster.com/users/546/6262/004

Sleeping Girl Gets An Unexpected Visit Late At Night
Sex Sleeping Girl Porn Videos
Link; 162: https://xubster.com/users/546/6296/005

Lesbian Necrophilia Porn Videos
Link; 163: https://xubster.com/users/546/6290/006

Horror Porn Videos - Sex Movies
Link; 164: https://xubster.com/users/546/6295/007

Sex Gay Porn Videos
Link; 165: https://xubster.com/users/546/6281/008

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

3D, Hentai, Free Games

Download from Daofile.com:
Link: https://daofile.com/go/p47ssveuv75c

Sex Cartoons; Free Games; Hentai; Manga; 3D

Download: MegaPack; 367249 Files:
Link: https://file.al/public/56284/38916

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

Preview Video
Link: https://xubster.com/users/546/12061

HD Young Nudists PN Videos

Download from Xubster.com:
Link: https://xubster.com/users/546/12062
Link: https://xubster.com/users/546/12067

PN Teen Girls; Young Adult Nudism; Teen Nudist Sex:

Download: MegaPack; 83150 Files:
Link: https://file.al/public/56284/38915

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

Private Collection; Real Teen Sexy Selfies and Videos

Download: MegaPack; 192851 Files:
Link: https://file.al/public/56284/38917

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

Preview Video
Link: https://daofile.com/go/efb4i0wyu73a

TukTuk Patrol - Thai Teen Video:

Download from Daofile.com:
Link: https://daofile.com/go/0ackk6rwv5gq

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

Girls and Boys PT - Photo and Video

Download: MegaPack; 531498 Files:
Link: https://file.al/public/56284/39650

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

VIP: - Young Nude Vagina
Link; 1: https://daofile.com/go/58017o3w2wa1

VIP: - Taboo Teen Archive
Link; 2: https://daofile.com/go/at6nq7tzdrwq
Link; 3: https://daofile.com/go/uqvdfvlt1b7j

VIP: - Private Sex Orgy; - Self Teen Girls
Link; 4: https://daofile.com/go/rwmcfthjrcew
Link; 5: https://daofile.com/go/7x4q0mtks6bo

Young Teen Bathing Suit Videos and HD Footage
Asian Woman In Bathroom Videos and HD Footage
Japanese Bath Culture, Public Bath
Link; 6: https://daofile.com/go/zvcjqfm0s50w
Link; 7: https://daofile.com/go/62mt4oaxq78n
Link; 8: https://daofile.com/go/x1q0iheql2ym
Link; 9: https://daofile.com/go/c9d7xs7fsme6
Link; 10: https://daofile.com/go/0pza6o1prc3r
Link; 11: https://daofile.com/go/s6qkgi10c7tf
Link; 12: https://daofile.com/go/1mg548npuj9p
Link; 13: https://daofile.com/go/piif3sxzu7y4

Japanese Teen HD Sex Porn Videos
Japanese School Girl Full Movie Porn videos
Japanese teen jav xxx sex school asian big tits milf mom sister porn HD
Link; 14: https://daofile.com/go/ws3qwum15koi
Link; 15: https://daofile.com/go/z9k8qssuw74c
Link; 16: https://daofile.com/go/r2pmntlq6vkp
Link; 17: https://daofile.com/go/r9khigu0c0xe
Link; 18: https://daofile.com/go/5qfkaafzvk0k
Link; 19: https://daofile.com/go/st4jcfg1g9bz
Link; 20: https://daofile.com/go/4hvigt8dchbc

Selfie teens
Real teens sexy selfies, show teen tits
Link; 21: https://daofile.com/go/dlfstx2s3mv3
Link; 22: https://daofile.com/go/3i181cjpm77j
Link; 23: https://daofile.com/go/ccyhj01bdnmg
Link; 24: https://daofile.com/go/gh7snep8cn54

Collection of Teen Sex and Erotic Videos
Link; 25: https://daofile.com/go/kun7aw1l0sxy
Link; 26: https://daofile.com/go/u9jikdewbmen
Link; 27: https://daofile.com/go/sxflclskqlde
Link; 28: https://daofile.com/go/htsmkg04kkop
Link; 29: https://daofile.com/go/daq9svwypcpg
Link; 30: https://daofile.com/go/d26g52rcnyql
Link; 31: https://daofile.com/go/4msqlcw96jyf
Link; 32: https://daofile.com/go/a6vapjguf0x7
Link; 33: https://daofile.com/go/937pupbznnt1

Webcam Teen
Teen Erotic Videos From Real Life Cams - Omegle teen, Skype teen
Link; 34: https://daofile.com/go/e2nnzbuhjt5z
Link; 35: https://daofile.com/go/nz1tewuygcr1
Link; 36: https://daofile.com/go/23sfxojnkhlc
Link; 37: https://daofile.com/go/31lpybl6312o
Link; 38: https://daofile.com/go/ahtftflfq6gl
Link; 39: https://daofile.com/go/5xcpj94xj6tw
Link; 40: https://daofile.com/go/gyshuzhg00l8
Link; 41: https://daofile.com/go/kr3zaonpkf4p
Link; 42: https://daofile.com/go/cl923bdxvs9k
Link; 43: https://daofile.com/go/3burlwssg7py
Link; 44: https://daofile.com/go/e12thco5doao

Young Girls and Boys Make Real Hot Sex on Cam
Link; 45: https://daofile.com/go/k0ws7lypjw5c
Link; 46: https://daofile.com/go/w96f0hj7ym8t

Sex Machine Porn Videos
Link; 47: https://daofile.com/go/psc0hbsfch2w
Link; 48: https://daofile.com/go/xet9s4b8l1n0

Candy-Dolls; Teen Crazy Girls Gallery
Link; 49: https://daofile.com/go/ka68my4wdqca
Link; 50: https://daofile.com/go/wwiaf2oaavgp

Toilet HD Videos - Hidden cams in toilets film every amateur comer
Watch Public toilet spy cam of girls pissing of Best Collection Voyeur Porn videos
Medical And Gyno Voyeur Videos
Watch Medical voyeur cam shooting
Asian explored in the gyno office of Best Collection Voyeur Porn videos
Link; 51: https://daofile.com/go/71feh10vjrfe
Link; 52: https://daofile.com/go/osxvp1epjyam
Link; 53: https://daofile.com/go/ylhuc48hu73l
Link; 54: https://daofile.com/go/5lx4gmnok82y
Link; 55: https://daofile.com/go/u13oih6vbrjc
Link; 56: https://daofile.com/go/s3a5qk1p5cyw

Tokyo-Dolls - Sexy Teen Girls - Full Collection
Link; 57: https://daofile.com/go/y9w47mnulyw1

Galitsin Teen - TP Sex Videos i7149
Link; 58: https://daofile.com/go/6uttrr3le10n
Link; 59: https://daofile.com/go/sjatsg7tjroi
Link; 60: https://daofile.com/go/1gx4d40cf40w
Link; 61: https://daofile.com/go/mu8hlmao4fge
Link; 62: https://daofile.com/go/phu0sv1tgx9c
Link; 63: https://daofile.com/go/z6oa86xp644b

Candid HD
Link; 64: https://daofile.com/go/1piz0c48n4p3

Femdom BDSM;
Link; 65: https://daofile.com/go/u6w29zcyys0c

Nonude Models
Link; 66: https://daofile.com/go/nnxix879th8k

Nudi-Pageant
Link; 67: https://daofile.com/go/nxnme8zrveru

TTL and YFM Teen Latinas Models
Link; 68: http://daofile.com/go/wlpk7947rax3

*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*
.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*

Covid; 2017 - 2030 - Girls and Boys - Russian Family Incest - Private Video Collection
Young Girls and Boys Make Real Hot Sex on Cam; Private Video Collection:
ajb - Random Tiktok Girls -- Skype and Omegle Girls -- Tiktok Nude Girls
New Videos - New Movies - Movie Reviews - Movie Trailers - TV
Russian Family Incest - Incest family teens
New Free Games - Private Sex Orgy - Self Teen Girls, ajb - Archive
Private Video Collection - Very Explicit Cams
18 yo Teens Only - Asian Tiktok Teens
Home Made Model TKM -- Real Life Cam

Download from Xubster-com:
Link: https://xubster.com/users/546/9802

Download from Daofile-com:
Link: https://daofile.com/go/3w4soyhvuake

Download from Nelion-me:
Link: https://nelion.me/go/w98s182gorax

Download from File-al:
Link: https://file.al/public/56284/31885

___________________
___________________

Young Girls and Boys Make Real Hot Sex on Cam


Covid; 2017 - 2030 - Girls and Boys - Russian Family Incest - Private Video Collection
Young Girls and Boys Make Real Hot Sex on Cam; Private Video Collection:
ajb - Random Tiktok Girls -- Skype and Omegle Girls -- Tiktok Nude Girls
New Videos - New Movies - Movie Reviews - Movie Trailers - TV
Russian Family Incest - Incest family teens
New Free Games - Private Sex Orgy - Self Teen Girls; ajb - Archive
Private Video Collection - Very Explicit Cams
18 yo Teens Only - Asian Tiktok Teens.
Home Made Model TKM -- Real Life Cam

Download from Xubster-com:
Link: https://xubster.com/users/546/9802

Download from Daofile-com:
Link: https://daofile.com/go/3w4soyhvuake

Download from Nelion-me:
Link: https://nelion.me/go/w98s182gorax

Download from File-al:
Link: https://file.al/public/56284/31885

-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

Log In or Sign Up; Link: https://xubster.com/free546.html

Amateur Young Girls
Link; 1: https://xubster.com/users/546/12421/0001
Link; 2: https://xubster.com/users/546/12462/0002
Link; 3: https://xubster.com/users/546/12463/0003
Link; 4: https://xubster.com/users/546/12464/0004
Link; 5: https://xubster.com/users/546/12465/0005
Link; 6: https://xubster.com/users/546/12466/0006
Link; 7: https://xubster.com/users/546/12467/0007
Link; 8: https://xubster.com/users/546/12468/0008
Link; 9: https://xubster.com/users/546/12469/0009
Link; 10: https://xubster.com/users/546/12470/0010
Link; 11: https://xubster.com/users/546/12471/0011
Link; 12: https://xubster.com/users/546/12472/0012

Covid: 2017 - 2030 - Girls and Boys
Link; 13: https://xubster.com/users/546/12422/0013
Link; 14: https://xubster.com/users/546/12473/0014

18 yo Teens Only
Innocent sweethearts star in 18 year old sex scenes
with their tight cunts filled by big cocks
Sexy coeds give hot blowjobs and swallow cum
Teens, Hardcore, Large Shlong, Amateur eighteen Years Old
18 year old masturbates on cam
Horny Teen 19 Years Old Masturbating On Web Cam
Only fingers filling my pussy to orgasm
Link; 15: https://xubster.com/users/546/12423/0015
Link; 16: https://xubster.com/users/546/12474/0016
Link; 17: https://xubster.com/users/546/12475/0017
Link; 18: https://xubster.com/users/546/12476/0018
Link; 19: https://xubster.com/users/546/12477/0019

Asian Tiktok Teens
Link; 20: https://xubster.com/users/546/12424/0020
Link; 21: https://xubster.com/users/546/12479/0021
Link; 22: https://xubster.com/users/546/12480/0022
Link; 23: https://xubster.com/users/546/12481/0023
Link; 24: https://xubster.com/users/546/12482/0024
Link; 25: https://xubster.com/users/546/12483/0025
Link; 26: https://xubster.com/users/546/12484/0026
Link; 27: https://xubster.com/users/546/12485/0027
Link; 28: https://xubster.com/users/546/12486/0028
Link; 29: https://xubster.com/users/546/12487/0029
Link; 30: https://xubster.com/users/546/12488/0030
Link; 31: https://xubster.com/users/546/12489/0031

Real Life Cam
Teen and Young Girls and Couples
Voyeur Villa Nelly Doggystyle HD Sex
Real Private Life on WebCam
Categories: Voyeur Sex, WebCam Porn, SpyCam Fetish
Teen Cam, Young Couples, Exhibitionism Video, Young Public Sex
WebCam Public Sex, Masturbation Teens, TeenSex
Link; 32: https://xubster.com/users/546/12418/0032
Link; 33: https://xubster.com/users/546/12490/0033
Link; 34: https://xubster.com/users/546/12491/0034
Link; 35: https://xubster.com/users/546/12492/0035
Link; 36: https://xubster.com/users/546/12493/0036
Link; 37: https://xubster.com/users/546/12494/0037

Porn Tiktok 18+ Banned on TikTok
Link; 38: https://xubster.com/users/546/12592/0038
Link; 39: https://xubster.com/users/546/12593/0039
Link; 40: https://xubster.com/users/546/12594/0040
Link; 41: https://xubster.com/users/546/12595/0041
Link; 42: https://xubster.com/users/546/12596/0042
Link; 43: https://xubster.com/users/546/12597/0043
Link; 44: https://xubster.com/users/546/12598/0044
Link; 45: https://xubster.com/users/546/12599/0045
Link; 46: https://xubster.com/users/546/12600/0046
Link; 47: https://xubster.com/users/546/12601/0047
Link; 48: https://xubster.com/users/546/12602/0048
Link; 49: https://xubster.com/users/546/12603/0049
Link; 50: https://xubster.com/users/546/12604/0050

Teen Models
Japanese Teen Girl in WebCam Show After School
MISS VIKKI - TEEN RUSSIAN MODEL
Little Miss Vikki From Russia -- My Private Collection
Mattie Doll -- Horny Teen With a Talent for Sharing Sensational Orgasmes
Kyutty Kitty -- Asian Sweety PussyCat
REAL VIDEOS OF SEXY TEEN MODEL Hentai-Cat
Effy Loweell -- Sexy Young Models With Small Tits

Alice MFC
Link; 51: https://xubster.com/users/546/12427

Alison Lil Baby
Link; 52: https://xubster.com/users/546/12428

Cute Mary
Link; 53: https://xubster.com/users/546/12429

Effy Loweell
Link; 54: https://xubster.com/users/546/12430

Hana Lily
Link; 55: https://xubster.com/users/546/12431

Hentai-Cat
Link; 56: https://xubster.com/users/546/12432

Hot Nesquik
Link; 57: https://xubster.com/users/546/12433

Katya Letova
Link; 58: https://xubster.com/users/546/12434

Koska Leska
Link; 59: https://xubster.com/users/546/12435

Kyutty
Link; 60: https://xubster.com/users/546/12436

Mattie Doll
Link; 61: https://xubster.com/users/546/12437

Miss Vikki
Link; 62: https://xubster.com/users/546/12438

Venus Kitty
Link; 63: https://xubster.com/users/546/12439

Your Wet Schoolgirl
Link; 64: https://xubster.com/users/546/12440

Non Nude Tiktok Teens
Teen Cute Girls talk, sexy dance and play on cam
Link; 65: https://xubster.com/users/546/12452/0065
Link; 66: https://xubster.com/users/546/12507/0066
Link; 67: https://xubster.com/users/546/12508/0067
Link; 68: https://xubster.com/users/546/12509/0068
Link; 69: https://xubster.com/users/546/12510/0069
Link; 70: https://xubster.com/users/546/12511/0070
Link; 71: https://xubster.com/users/546/12512/0071
Link; 72: https://xubster.com/users/546/12513/0072
Link; 73: https://xubster.com/users/546/12514/0073
Link; 74: https://xubster.com/users/546/12515/0074
Link; 75: https://xubster.com/users/546/12516/0075
Link; 76: https://xubster.com/users/546/12517/0076

Nudism Young Girls
Link; 77: https://xubster.com/users/546/12453/0077
Link; 78: https://xubster.com/users/546/12518/0078
Link; 79: https://xubster.com/users/546/12519/0079
Link; 80: https://xubster.com/users/546/12520/0080
Link; 81: https://xubster.com/users/546/12521/0081
Link; 82: https://xubster.com/users/546/12522/0082
Link; 83: https://xubster.com/users/546/12523/0083

Russian Family Incest
Incest family teens
Link; 84: https://xubster.com/users/546/12454/0084
Link; 85: https://xubster.com/users/546/12524/0085
Link; 86: https://xubster.com/users/546/12525/0086
Link; 87: https://xubster.com/users/546/12526/0087
Link; 88: https://xubster.com/users/546/12527/0088
Link; 89: https://xubster.com/users/546/12528/0089
Link; 90: https://xubster.com/users/546/12529/0090
Link; 91: https://xubster.com/users/546/12530/0091

Real Spycam - Hiddencam
Link; 92: https://xubster.com/users/546/12455/0092
Link; 93: https://xubster.com/users/546/12531/0093
Link; 94: https://xubster.com/users/546/12532/0094
Link; 95: https://xubster.com/users/546/12533/0095
Link; 96: https://xubster.com/users/546/12534/0096
Link; 97: https://xubster.com/users/546/12535/0097
Link; 98: https://xubster.com/users/546/12536/0098
Link; 99: https://xubster.com/users/546/12537/0099
Link; 100: https://xubster.com/users/546/12538/0100
Link; 101: https://xubster.com/users/546/12539/0101
Link; 102: https://xubster.com/users/546/12540/0102
Link; 103: https://xubster.com/users/546/12541/0103

Tight Teen Pussy
FUCK TIGHT TEEN PUSSY - Real Fuck Extreme Small Teen Pussy - 18+
FULL HD 83 Hot Home Made Videos of Real Extreme Fuck Small Teen Pussy
Link; 104: https://xubster.com/users/546/12456/0104

Random Tiktok Girls
Link; 105: https://xubster.com/users/546/12457/0105
Link; 106: https://xubster.com/users/546/12542/0106
Link; 107: https://xubster.com/users/546/12543/0107
Link; 108: https://xubster.com/users/546/12544/0108
Link; 109: https://xubster.com/users/546/12545/0109
Link; 110: https://xubster.com/users/546/12546/0110
Link; 111: https://xubster.com/users/546/12547/0111
Link; 112: https://xubster.com/users/546/12548/0112
Link; 113: https://xubster.com/users/546/12549/0113
Link; 114: https://xubster.com/users/546/12550/0114
Link; 115: https://xubster.com/users/546/12551/0115
Link; 116: https://xubster.com/users/546/12552/0116
Link; 117: https://xubster.com/users/546/12553/0117
Link; 118: https://xubster.com/users/546/12554/0118

Skype and Omegle Girls
Link; 119: https://xubster.com/users/546/12459/0119
Link; 120: https://xubster.com/users/546/12555/0120
Link; 121: https://xubster.com/users/546/12556/0121
Link; 122: https://xubster.com/users/546/12557/0122
Link; 123: https://xubster.com/users/546/12558/0123
Link; 124: https://xubster.com/users/546/12559/0124
Link; 125: https://xubster.com/users/546/12560/0125
Link; 126: https://xubster.com/users/546/12561/0126
Link; 127: https://xubster.com/users/546/12562/0127
Link; 128: https://xubster.com/users/546/12563/0128
Link; 129: https://xubster.com/users/546/12564/0129
Link; 130: https://xubster.com/users/546/12565/0130

Tiktok Nude Girls
Link; 131: https://xubster.com/users/546/12460/0131
Link; 132: https://xubster.com/users/546/12566/0132
Link; 133: https://xubster.com/users/546/12567/0133
Link; 134: https://xubster.com/users/546/12568/0134
Link; 135: https://xubster.com/users/546/12569/0135
Link; 136: https://xubster.com/users/546/12570/0136
Link; 137: https://xubster.com/users/546/12571/0137
Link; 138: https://xubster.com/users/546/12572/0138
Link; 139: https://xubster.com/users/546/12573/0139
Link; 140: https://xubster.com/users/546/12574/0140
Link; 141: https://xubster.com/users/546/12575/0141
Link; 142: https://xubster.com/users/546/12576/0142
Link; 143: https://xubster.com/users/546/12577/0143
Link; 144: https://xubster.com/users/546/12578/0144
Link; 145: https://xubster.com/users/546/12579/0145

Webcam Teens and Couples
Link; 146: https://xubster.com/users/546/12461/0146
Link; 147: https://xubster.com/users/546/12580/0147
Link; 148: https://xubster.com/users/546/12581/0148
Link; 149: https://xubster.com/users/546/12582/0149
Link; 150: https://xubster.com/users/546/12583/0150
Link; 151: https://xubster.com/users/546/12584/0151
Link; 152: https://xubster.com/users/546/12585/0152
Link; 153: https://xubster.com/users/546/12586/0153
Link; 154: https://xubster.com/users/546/12587/0154
Link; 155: https://xubster.com/users/546/12588/0155
Link; 156: https://xubster.com/users/546/12589/0156
Link; 157: https://xubster.com/users/546/12590/0157

Rape Porn; Free Porn Videos; HD - VR Sex Videos
Link; 158: https://xubster.com/users/546/6261/001

Snuff Porn Videos; Fake murders and decapitation
Link; 159: https://xubster.com/users/546/6265/002

Forced Porn; Forced Sex - Forced To Fuck Videos
Link; 160: https://xubster.com/users/546/6266/003

Hot Asian Teen Sex Videos; Japanese and Korean Porn Movies
Link; 161: https://xubster.com/users/546/6262/004

Sleeping Girl Gets An Unexpected Visit Late At Night
Sex Sleeping Girl Porn Videos
Link; 162: https://xubster.com/users/546/6296/005

Lesbian Necrophilia Porn Videos
Link; 163: https://xubster.com/users/546/6290/006

Horror Porn Videos - Sex Movies
Link; 164: https://xubster.com/users/546/6295/007

Sex Gay Porn Videos
Link; 165: https://xubster.com/users/546/6281/008

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

3D, Hentai, Free Games

Download from Daofile.com:
Link: https://daofile.com/go/p47ssveuv75c

Sex Cartoons; Free Games; Hentai; Manga; 3D

Download: MegaPack; 367249 Files:
Link: https://file.al/public/56284/38916

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

Preview Video
Link: https://xubster.com/users/546/12061

HD Young Nudists PN Videos

Download from Xubster.com:
Link: https://xubster.com/users/546/12062
Link: https://xubster.com/users/546/12067

PN Teen Girls; Young Adult Nudism; Teen Nudist Sex:

Download: MegaPack; 83150 Files:
Link: https://file.al/public/56284/38915

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

Private Collection; Real Teen Sexy Selfies and Videos

Download: MegaPack; 192851 Files:
Link: https://file.al/public/56284/38917

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

Preview Video
Link: https://daofile.com/go/efb4i0wyu73a

TukTuk Patrol - Thai Teen Video:

Download from Daofile.com:
Link: https://daofile.com/go/0ackk6rwv5gq

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

Girls and Boys PT - Photo and Video

Download: MegaPack; 531498 Files:
Link: https://file.al/public/56284/39650

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

VIP: - Young Nude Vagina
Link; 1: https://daofile.com/go/58017o3w2wa1

VIP: - Taboo Teen Archive
Link; 2: https://daofile.com/go/at6nq7tzdrwq
Link; 3: https://daofile.com/go/uqvdfvlt1b7j

VIP: - Private Sex Orgy; - Self Teen Girls
Link; 4: https://daofile.com/go/rwmcfthjrcew
Link; 5: https://daofile.com/go/7x4q0mtks6bo

Young Teen Bathing Suit Videos and HD Footage
Asian Woman In Bathroom Videos and HD Footage
Japanese Bath Culture, Public Bath
Link; 6: https://daofile.com/go/zvcjqfm0s50w
Link; 7: https://daofile.com/go/62mt4oaxq78n
Link; 8: https://daofile.com/go/x1q0iheql2ym
Link; 9: https://daofile.com/go/c9d7xs7fsme6
Link; 10: https://daofile.com/go/0pza6o1prc3r
Link; 11: https://daofile.com/go/s6qkgi10c7tf
Link; 12: https://daofile.com/go/1mg548npuj9p
Link; 13: https://daofile.com/go/piif3sxzu7y4

Japanese Teen HD Sex Porn Videos
Japanese School Girl Full Movie Porn videos
Japanese teen jav xxx sex school asian big tits milf mom sister porn HD
Link; 14: https://daofile.com/go/ws3qwum15koi
Link; 15: https://daofile.com/go/z9k8qssuw74c
Link; 16: https://daofile.com/go/r2pmntlq6vkp
Link; 17: https://daofile.com/go/r9khigu0c0xe
Link; 18: https://daofile.com/go/5qfkaafzvk0k
Link; 19: https://daofile.com/go/st4jcfg1g9bz
Link; 20: https://daofile.com/go/4hvigt8dchbc

Selfie teens
Real teens sexy selfies, show teen tits
Link; 21: https://daofile.com/go/dlfstx2s3mv3
Link; 22: https://daofile.com/go/3i181cjpm77j
Link; 23: https://daofile.com/go/ccyhj01bdnmg
Link; 24: https://daofile.com/go/gh7snep8cn54

Collection of Teen Sex and Erotic Videos
Link; 25: https://daofile.com/go/kun7aw1l0sxy
Link; 26: https://daofile.com/go/u9jikdewbmen
Link; 27: https://daofile.com/go/sxflclskqlde
Link; 28: https://daofile.com/go/htsmkg04kkop
Link; 29: https://daofile.com/go/daq9svwypcpg
Link; 30: https://daofile.com/go/d26g52rcnyql
Link; 31: https://daofile.com/go/4msqlcw96jyf
Link; 32: https://daofile.com/go/a6vapjguf0x7
Link; 33: https://daofile.com/go/937pupbznnt1

Webcam Teen
Teen Erotic Videos From Real Life Cams - Omegle teen, Skype teen
Link; 34: https://daofile.com/go/e2nnzbuhjt5z
Link; 35: https://daofile.com/go/nz1tewuygcr1
Link; 36: https://daofile.com/go/23sfxojnkhlc
Link; 37: https://daofile.com/go/31lpybl6312o
Link; 38: https://daofile.com/go/ahtftflfq6gl
Link; 39: https://daofile.com/go/5xcpj94xj6tw
Link; 40: https://daofile.com/go/gyshuzhg00l8
Link; 41: https://daofile.com/go/kr3zaonpkf4p
Link; 42: https://daofile.com/go/cl923bdxvs9k
Link; 43: https://daofile.com/go/3burlwssg7py
Link; 44: https://daofile.com/go/e12thco5doao

Young Girls and Boys Make Real Hot Sex on Cam
Link; 45: https://daofile.com/go/k0ws7lypjw5c
Link; 46: https://daofile.com/go/w96f0hj7ym8t

Sex Machine Porn Videos
Link; 47: https://daofile.com/go/psc0hbsfch2w
Link; 48: https://daofile.com/go/xet9s4b8l1n0

Candy-Dolls; Teen Crazy Girls Gallery
Link; 49: https://daofile.com/go/ka68my4wdqca
Link; 50: https://daofile.com/go/wwiaf2oaavgp

Toilet HD Videos - Hidden cams in toilets film every amateur comer
Watch Public toilet spy cam of girls pissing of Best Collection Voyeur Porn videos
Medical And Gyno Voyeur Videos
Watch Medical voyeur cam shooting
Asian explored in the gyno office of Best Collection Voyeur Porn videos
Link; 51: https://daofile.com/go/71feh10vjrfe
Link; 52: https://daofile.com/go/osxvp1epjyam
Link; 53: https://daofile.com/go/ylhuc48hu73l
Link; 54: https://daofile.com/go/5lx4gmnok82y
Link; 55: https://daofile.com/go/u13oih6vbrjc
Link; 56: https://daofile.com/go/s3a5qk1p5cyw

Tokyo-Dolls - Sexy Teen Girls - Full Collection
Link; 57: https://daofile.com/go/y9w47mnulyw1

Galitsin Teen - TP Sex Videos i7149
Link; 58: https://daofile.com/go/6uttrr3le10n
Link; 59: https://daofile.com/go/sjatsg7tjroi
Link; 60: https://daofile.com/go/1gx4d40cf40w
Link; 61: https://daofile.com/go/mu8hlmao4fge
Link; 62: https://daofile.com/go/phu0sv1tgx9c
Link; 63: https://daofile.com/go/z6oa86xp644b

Candid HD
Link; 64: https://daofile.com/go/1piz0c48n4p3

Femdom BDSM;
Link; 65: https://daofile.com/go/u6w29zcyys0c

Nonude Models
Link; 66: https://daofile.com/go/nnxix879th8k

Nudi-Pageant
Link; 67: https://daofile.com/go/nxnme8zrveru

TTL and YFM Teen Latinas Models
Link; 68: http://daofile.com/go/wlpk7947rax3

*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*
.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*

Covid; 2017 - 2030 - Girls and Boys - Russian Family Incest - Private Video Collection
Young Girls and Boys Make Real Hot Sex on Cam; Private Video Collection:
ajb - Random Tiktok Girls -- Skype and Omegle Girls -- Tiktok Nude Girls
New Videos - New Movies - Movie Reviews - Movie Trailers - TV
Russian Family Incest - Incest family teens
New Free Games - Private Sex Orgy - Self Teen Girls, ajb - Archive
Private Video Collection - Very Explicit Cams
18 yo Teens Only - Asian Tiktok Teens
Home Made Model TKM -- Real Life Cam

Download from Xubster-com:
Link: https://xubster.com/users/546/9802

Download from Daofile-com:
Link: https://daofile.com/go/3w4soyhvuake

Download from Nelion-me:
Link: https://nelion.me/go/w98s182gorax

Download from File-al:
Link: https://file.al/public/56284/31885

___________________
___________________