[
https://issues.apache.org/jira/browse/HIVE-7493?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Brock Noland updated HIVE-7493:
-------------------------------
Summary: Enhance HiveReduceFunction's row clustering [Spark Branch] (was:
Enhance HiveReduceFunction's row clustering)
> Enhance HiveReduceFunction's row clustering [Spark Branch]
> ----------------------------------------------------------
>
> Key: HIVE-7493
> URL: https://issues.apache.org/jira/browse/HIVE-7493
> Project: Hive
> Issue Type: Sub-task
> Components: Spark
> Reporter: Xuefu Zhang
> Assignee: Chao
>
> HiveReduceFunction is backed by Hive's ExecReducer, whose reduce function
> takes an input in the form of <key, value list>. However,
> HiveReduceFunction's input is an iterator over a set of <key, value> pairs.
> To reuse Hive's ExecReducer, we need to "stage and cluster" the input rows by
> key, and then feed the <key, value list> to ExecMapper's reduce method. There
> are several problems with the current approach:
> 1. unbounded memory usage.
> 2. memory inefficient: input has be cached until all input is consumed.
> 3. this functionality seems generic enough to have it in Spark itself.
> Thus, we'd like to check:
> 1. Whether Spark can provide a different version of PairFlatMapFunction,
> where the input to the call method is an iterator over tuples of <key,
> iterator<value>>. Something like this:
> {code}
> public Iterable<Tuple2<BytesWritable, BytesWritable>>
> call(Iterator<Tuple2<BytesWritable, Iterator<BytesWritable>>> it);
> {code}
> 2. If above effort fails, we need to enhance our row clustering mechanism so
> that it has bounded memory usage and is able to spill if needed.
--
This message was sent by Atlassian JIRA
(v6.2#6252)