2016-03-02 21 views
2

哪些策略(散列,排序)不弗林克使用默認減少數據集/分組(例如GROUPBY或減少功能)?並且API函數不弗林克在洗牌步驟用於弗林克:默認分區/改組策略/函數

  1. 分區和
  2. 排序分區

默認內的元素?

回答

3

默認情況下,Flink使用散列分區和排序來執行reduce和groupReduce函數。在減少或可組合的情況下,組合器也使用基於分類的策略來執行。基於哈希的組合策略目前正在進行代碼審查,並將很快推出。 請注意,Flink默認使用流水線shuffle。這意味着生成發送者任務和接收者分類器同時執行。

你可以這樣劃分方式不同的數據集:

val data: DataSet[(String, Int)] = ... 
data.partitionByHash(0) // hash-partitions on String field 
data.partitionByRange(1) // range-partitions on Int field (w/ online sampling overhead) 
data.partitionCustom(new MyPartitioner(), 0) // use a custom function to partition on String field 

如下您可以在本地進行排序分區:

val data: DataSet[(String, Int)] = ... 
data.sortPartition(0, Order.ASCENDING) // sorts partitions on String field in ascending order 
+0

謝謝您的回答。你能推薦一篇博客文章或者一個關於github源代碼的URL來獲取更多信息嗎?我正在尋找Flinks散列分區/分區內分區行爲的參考(源引用)。 – lary

+1

不確定是否有關於流水線洗牌行爲的專門博客文章。 Dongwon Kim在去年的Flink Forward上進行了一次演講,討論並分析了流水線和批量洗牌。視頻和幻燈片[在這裏](http://2015.flink-forward.org/?post_type=session)。這[博客文章(http://flink.apache.org/news/2015/05/11/Juggling-with-Bits-and-Bytes.html)描述弗林克的內存管理和排序實現可能有幫助。 –