Return-Path: X-Original-To: apmail-hadoop-hdfs-user-archive@minotaur.apache.org Delivered-To: apmail-hadoop-hdfs-user-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 54697107D5 for ; Wed, 11 Mar 2015 10:39:04 +0000 (UTC) Received: (qmail 54647 invoked by uid 500); 11 Mar 2015 10:38:59 -0000 Delivered-To: apmail-hadoop-hdfs-user-archive@hadoop.apache.org Received: (qmail 54505 invoked by uid 500); 11 Mar 2015 10:38:58 -0000 Mailing-List: contact user-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@hadoop.apache.org Delivered-To: mailing list user@hadoop.apache.org Received: (qmail 54494 invoked by uid 99); 11 Mar 2015 10:38:58 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 11 Mar 2015 10:38:58 +0000 X-ASF-Spam-Status: No, hits=2.5 required=5.0 tests=HTML_IMAGE_ONLY_16,HTML_IMAGE_RATIO_06,HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of xeonmailinglist@gmail.com designates 74.125.82.176 as permitted sender) Received: from [74.125.82.176] (HELO mail-we0-f176.google.com) (74.125.82.176) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 11 Mar 2015 10:38:30 +0000 Received: by wesk11 with SMTP id k11so8097490wes.13 for ; Wed, 11 Mar 2015 03:36:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type; bh=6YXfX2mtCSKCvKipDhM2gCfrM0YsRVgfxJj+RfuRRrQ=; b=vbViVsVLn7WXJI9YIRtklGWLNXZlOORYrI3PXIxSX+6IFo3kwizC+GPGvIFGjO2zJh f16rX7mqeHyIfA2JxJTjvuS/J5LkLtoKnqSwybFS8lLVI1v/NVHlU900kG1WwyNGrlAV Ghhqp0zrBW522j2aUf+zd3Ia1S36KjH+9xUuPvPyG5+ZrzCkBdMB34cdvMjGI7vp0ZZQ hm5yol1feKTSJJw/oNSR5M/UAufCn3d/3eGjy3vrQ4FgwhONpu+swWykiO/i+yES1jMQ jyWZxugwpRNUedqPdSU91wOfik4SUVDXD+bPWgHp69gqgUXA+PUpFp7fF+PUfAuQ0M9k 5ifQ== X-Received: by 10.180.24.233 with SMTP id x9mr6980651wif.9.1426070219253; Wed, 11 Mar 2015 03:36:59 -0700 (PDT) Received: from [10.101.225.109] ([194.117.18.101]) by mx.google.com with ESMTPSA id md2sm7934127wic.19.2015.03.11.03.36.58 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Mar 2015 03:36:58 -0700 (PDT) Message-ID: <55001AC9.30307@gmail.com> Date: Wed, 11 Mar 2015 10:36:57 +0000 From: xeonmailinglist-gmail User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 MIME-Version: 1.0 To: "user@hadoop.apache.org" Subject: Re: Prune out data to a specific reduce task References: <550018E5.9010608@gmail.com> In-Reply-To: <550018E5.9010608@gmail.com> Content-Type: multipart/alternative; boundary="------------020103090702030107000608" X-Virus-Checked: Checked by ClamAV on apache.org This is a multi-part message in MIME format. --------------020103090702030107000608 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit To exclude data to a specific reducer, should I build a partitioner that do this? Should I have a map function that checks to which reduce task the output goes? Can anyone give me some suggestion? And by the way, I really want to exclude data to a reduce task. So, I will run more than 1 reducer, even if one of them does not get input data. On 11-03-2015 10:28, xeonmailinglist-gmail wrote: > Hi, > > I have this job that has 3 map tasks and 2 reduce tasks. But, I want > to excludes data that will go to the reduce task 2. This means that, > only reducer 1 will produce data, and the other one will be empty, or > even it doesn't execute. > > How can I do this in MapReduce? > > Example Job Execution > > > Thanks, > > -- > -- -- -- --------------020103090702030107000608 Content-Type: multipart/related; boundary="------------080101060401030501040609" --------------080101060401030501040609 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 7bit To exclude data to a specific reducer, should I build a partitioner that do this? Should I have a map function that checks to which reduce task the output goes?

Can anyone give me some suggestion?

And by the way, I really want to exclude data to a reduce task. So, I will run more than 1 reducer, even if one of them does not get input data.


On 11-03-2015 10:28, xeonmailinglist-gmail wrote:
Hi,

I have this job that has 3 map tasks and 2 reduce tasks. But, I want to excludes data that will go to the reduce task 2. This means that, only reducer 1 will produce data, and the other one will be empty, or even it doesn't execute.

How can I do this in MapReduce?

Example Job Execution


Thanks,

-- 
--

-- 
--
--------------080101060401030501040609 Content-Type: image/png Content-Transfer-Encoding: base64 Content-ID: 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 --------------080101060401030501040609-- --------------020103090702030107000608--