Return-Path: X-Original-To: apmail-crunch-user-archive@www.apache.org Delivered-To: apmail-crunch-user-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id A7CED182F6 for ; Thu, 28 Apr 2016 19:16:18 +0000 (UTC) Received: (qmail 72304 invoked by uid 500); 28 Apr 2016 19:16:18 -0000 Delivered-To: apmail-crunch-user-archive@crunch.apache.org Received: (qmail 72261 invoked by uid 500); 28 Apr 2016 19:16:18 -0000 Mailing-List: contact user-help@crunch.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@crunch.apache.org Delivered-To: mailing list user@crunch.apache.org Received: (qmail 72251 invoked by uid 99); 28 Apr 2016 19:16:18 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 28 Apr 2016 19:16:18 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id 0B686C031A for ; Thu, 28 Apr 2016 19:16:18 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.429 X-Spam-Level: * X-Spam-Status: No, score=1.429 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, HTML_MESSAGE=2, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd1-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id Zk6W8cmR4e04 for ; Thu, 28 Apr 2016 19:16:14 +0000 (UTC) Received: from mail-ig0-f170.google.com (mail-ig0-f170.google.com [209.85.213.170]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTPS id 5B0B75FB50 for ; Thu, 28 Apr 2016 19:16:13 +0000 (UTC) Received: by mail-ig0-f170.google.com with SMTP id bi2so1259535igb.0 for ; Thu, 28 Apr 2016 12:16:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=9UoSVoUpp4zJTlRWFUSWVXVZURXljRmfehpjQOfb5xQ=; b=Q0CIbG9JFYDZIdNSj6cmdOkD6BVX2pfrrfvoCnHsuNlmA/ds+GqKY4s5f+23bnJnAH Fx2TbTSeQSd5LxC5wY4eb1EOmPL+sy/8nNWbTi5W04TgMFDOvc0Fe+HvCc6Vi67CYlWN 6lGTwzC7vXx4NgNHQjtf+kaStn202Byt8PWyGsOGDWVL+q8TAk35O6bwTu9MjS7amazG sxzbjLzT6wYmFBkM1HEOzZQ8/zFme5+FUZ+4gTsx2mUzv93rNNSFqNs2Zf8iuXAtAoJw mMuofAWr7qae4XY97r5w+9d+XUCKNQV9ChX5JNOujcU3JTZzJJHaxo5+tF6BsHMzMPqT RfYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=9UoSVoUpp4zJTlRWFUSWVXVZURXljRmfehpjQOfb5xQ=; b=J7NpXng3+Hb/rRJ3JAN/zE94NnCJqFSFbO9qmIlmmKk0mzGbabPn4bx9AUAzKNGTkC Pvwn/08LzgI+C6yGnpr+hlJx+XQwbEez+o3K/DNcm+dYDLhxo2/WIqAZfJZQs5My/HgM kO0EcrcMivXOD8G+JYMgjtIUnJuI21A3LVUx8H1ABDv489H9aq2W7E0ANsYx+lNGJ93I 9xSJf2fEjLpHPzTuqET0lNQpE2JKh83kEURZBYylegywM5ub9wBL8/9nArLQZSY53CWy 0X2Ojx/KQ+tXNpHblToTxt9CdVZNfoA+PjipGivYgUbE52Je150+j8sb/7OK/y8oQVmf 2w8g== X-Gm-Message-State: AOPr4FUg7Mf+W37AHBMyn5GZCjVzHNbXOzfix8UoRBo+2Xe/oncwNf5lsORb8FmD1ktIYmI4ItONmpj+Q5pKFw== X-Received: by 10.50.98.197 with SMTP id ek5mr19880431igb.70.1461870972214; Thu, 28 Apr 2016 12:16:12 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: David Ortiz Date: Thu, 28 Apr 2016 19:16:02 +0000 Message-ID: Subject: Re: Sequential Processing To: Apache Crunch Mailing List Content-Type: multipart/related; boundary=bcaec5015ff30243980531905c46 --bcaec5015ff30243980531905c46 Content-Type: multipart/alternative; boundary=bcaec5015ff30243950531905c45 --bcaec5015ff30243950531905c45 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable I think I am confused as to what you're going for. A parallelDo over the PGroupedTable should do exactly what you described. You get key, Iterable for a single key, at which point you can do whatever you want in the DoFn. That's exactly what i had to do on a flow at work, where I do a groupByKey on a PTable, then in the ensuing parallelDo, create a List out of the Iterable and do some aggregate functions over it. On Thu, Apr 28, 2016 at 2:59 PM Robinson, Landon - Landon < landon.t.robinson@lowes.com> wrote: > Crunch Gurus, > > We need to process some data in order, so parallelDo shouldn=E2=80=99t wo= rk for > this approach. We=E2=80=99ve looked at SequentialDo, but not sure how exa= ctly to > make it work=E2=80=A6(Not much documentation on it). > *DataRecord is a java object with getters and setters.* > > Right now, we have a PGroupedTable where the String > keys in the PGT are linked to multiple DataRecord objects (standard PGT > behavior). > What we need to do now is loop through all records for a particular key, > sort them, and do some simple calculations. > > *What is the best way/standard way to process a PgroupedTable so that > records corresponding to the same key are all kept together and processed= ?* > > Right now we know how to crack open a PGT in the local code and flip > through it (the SingleUseIterable), but we need to make a new dataset out > of it, not just play with it. > > Any direction or guidance would be appreciated! > -------------------------------------------------------------------------= -- > Landon Robinson > Big Data & Hadoop Engineer > IT Business Intelligence, Lowe=E2=80=99s Companies Inc. > -------------------------------------------------------------------------= -- > NOTICE: All information in and attached to the e-mails below may be > proprietary, confidential, privileged and otherwise protected from improp= er > or erroneous disclosure. If you are not the sender's intended recipient, > you are not authorized to intercept, read, print, retain, copy, forward, = or > disseminate this message. If you have erroneously received this > communication, please notify the sender immediately by phone (704-758-100= 0) > or by e-mail and destroy all copies of this message electronic, paper, or > otherwise. > > *By transmitting documents via this email: Users, Customers, Suppliers an= d > Vendors collectively acknowledge and agree the transmittal of information > via email is voluntary, is offered as a convenience, and is not a secured > method of communication; Not to transmit any payment information E.G. > credit card, debit card, checking account, wire transfer information, > passwords, or sensitive and personal information E.G. Driver's license, > DOB, social security, or any other information the user wishes to remain > confidential; To transmit only non-confidential information such as plans= , > pictures and drawings and to assume all risk and liability for and > indemnify Lowe's from any claims, losses or damages that may arise from t= he > transmittal of documents or including non-confidential information in the > body of an email transmittal. Thank you. * > --bcaec5015ff30243950531905c45 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
I think I am confused as to what you're going for.=C2= =A0 A parallelDo over the PGroupedTable should do exactly what you describe= d.=C2=A0 You get key, Iterable<DataRecord> for a single key, at which= point you can do whatever you want in the DoFn.=C2=A0 That's exactly w= hat i had to do on a flow at work, where I do a groupByKey on a PTable, the= n in the ensuing parallelDo, create a List out of the Iterable<Record>= ; and do some aggregate functions over it.

On Thu, Apr 28, 2016 at 2:59 PM Robinson, Landon - Lan= don <landon.t.robinson@lo= wes.com> wrote:
Crunch Gurus,

We need to process some data in order, so parallelDo shouldn=E2=80=99t= work for this approach. We=E2=80=99ve looked at SequentialDo, but not sure= how exactly to make it work=E2=80=A6(Not much documentation on it).
DataRecord=C2=A0is a java object with getters and setters.

Right now, we have a PGroupedTable<String, DataRecord> where the= String keys in the PGT are linked to multiple DataRecord objects (standard= PGT behavior).
What we need to do now is loop through all records for a particular ke= y, sort them, and do some simple calculations.

What is the best way/standard way to process a PgroupedTable so tha= t records corresponding to the same key are all kept together and processed= ?

Right now we know how to crack open a PGT in the local code and flip t= hrough it (the SingleUseIterable), but we need to make a new dataset out of= it, not just play with it.

Any direction or guidance would be appreciated!
----------------------------------------------------------------------= -----
Landon Robinson
Big Data & Hadoop Engineer
IT Business Intelligence, Lowe=E2=80=99s Companies Inc.=C2=A0
---------------------------------------------------------------------------=
NOTICE: All information in and attached to the e-mails below may be proprie= tary, confidential, privileged and otherwise protected from improper or err= oneous disclosure. If you are not the sender's intended recipient, you = are not authorized to intercept, read, print, retain, copy, forward, or dis= seminate this message. If you have erroneously received this communication,= please notify the sender immediately by phone (704-758-1000) or by e-mail = and destroy all copies of this message electronic, paper, or otherwise.

By transmitting documents via this email: Users, Customers, Suppliers an= d Vendors collectively acknowledge and agree the transmittal of information= via email is voluntary, is offered as a convenience, and is not a secured = method of communication; Not to transmit any payment information E.G. credi= t card, debit card, checking account, wire transfer information, passwords,= or sensitive and personal information E.G. Driver's license, DOB, soci= al security, or any other information the user wishes to remain confidentia= l; To transmit only non-confidential information such as plans, pictures an= d drawings and to assume all risk and liability for and indemnify Lowe'= s from any claims, losses or damages that may arise from the transmittal of= documents or including non-confidential information in the body of an emai= l transmittal. Thank you.
--bcaec5015ff30243950531905c45-- --bcaec5015ff30243980531905c46 Content-Type: image/png; name="BB375A5E-4A94-4F89-9262-3ACEEAE2DE49[2].png" Content-Disposition: inline; filename="BB375A5E-4A94-4F89-9262-3ACEEAE2DE49[2].png" Content-Transfer-Encoding: base64 Content-ID: <1545e49a30421b46e2c1> X-Attachment-Id: 1545e49a30421b46e2c1 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 gg== --bcaec5015ff30243980531905c46 Content-Type: image/png; name="BB375A5E-4A94-4F89-9262-3ACEEAE2DE49[2].png" Content-Disposition: inline; filename="BB375A5E-4A94-4F89-9262-3ACEEAE2DE49[2].png" Content-Transfer-Encoding: base64 Content-ID: <> X-Attachment-Id: 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 gg== --bcaec5015ff30243980531905c46--