Return-Path: X-Original-To: apmail-accumulo-notifications-archive@minotaur.apache.org Delivered-To: apmail-accumulo-notifications-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id E5AF617A54 for ; Wed, 8 Apr 2015 16:21:12 +0000 (UTC) Received: (qmail 98563 invoked by uid 500); 8 Apr 2015 16:21:12 -0000 Delivered-To: apmail-accumulo-notifications-archive@accumulo.apache.org Received: (qmail 98523 invoked by uid 500); 8 Apr 2015 16:21:12 -0000 Mailing-List: contact notifications-help@accumulo.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: jira@apache.org Delivered-To: mailing list notifications@accumulo.apache.org Received: (qmail 98512 invoked by uid 99); 8 Apr 2015 16:21:12 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 08 Apr 2015 16:21:12 +0000 Date: Wed, 8 Apr 2015 16:21:12 +0000 (UTC) From: "ASF GitHub Bot (JIRA)" To: notifications@accumulo.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (ACCUMULO-3602) BatchScanner optimization for AccumuloInputFormat MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/ACCUMULO-3602?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14485464#comment-14485464 ] ASF GitHub Bot commented on ACCUMULO-3602: ------------------------------------------ Github user keith-turner commented on a diff in the pull request: https://github.com/apache/accumulo/pull/25#discussion_r27986006 --- Diff: core/src/main/java/org/apache/accumulo/core/client/mapred/AbstractInputFormat.java --- @@ -384,7 +387,21 @@ public static InputTableConfig getInputTableConfig(JobConf job, String tableName protected abstract static class AbstractRecordReader implements RecordReader { protected long numKeysRead; protected Iterator> scannerIterator; - protected RangeInputSplit split; + protected org.apache.accumulo.core.client.mapreduce.impl.AccumuloInputSplit split; + protected ScannerBase scannerBase; + + /** + * Configures the iterators on a scanner for the given table name. + * + * @param job + * the Hadoop job configuration + * @param scanner + * the scanner for which to configure the iterators + * @param tableName + * the table name for which the scanner is configured + * @since 1.7.0 + */ + protected abstract void setupIterators(JobConf job, ScannerBase scanner, String tableName, AccumuloInputSplit split); --- End diff -- I like how your suggestion moves configuration of the scanner to a private method. Trying to understand your suggestion made me realize I don't understand why `AccumuloInputSplit` is storing and serializing things like iterators. Why not get that info from the job conf when the task runs? I am being lazy asking this question, let me know if its not quick/easy to explain I can dig around in the code. > BatchScanner optimization for AccumuloInputFormat > ------------------------------------------------- > > Key: ACCUMULO-3602 > URL: https://issues.apache.org/jira/browse/ACCUMULO-3602 > Project: Accumulo > Issue Type: Improvement > Components: client > Affects Versions: 1.6.1, 1.6.2 > Reporter: Eugene Cheipesh > Assignee: Eugene Cheipesh > Labels: performance > Fix For: 1.7.0 > > > Currently {{AccumuloInputFormat}} produces a split for reach {{Range}} specified in the configuration. Some table indexing schemes, for instance z-order geospacial index, produce large number of small ranges resulting in large number of splits. This is specifically a concern when using {{AccumuloInputFormat}} as a source for Spark RDD where each Split is mapped to an RDD partition. > Large number of small RDD partitions leads to poor parallism on read and high overhead on processing. A desirable alternative is to group ranges by tablet into a single split and use {{BatchScanner}} to produce the records. Grouping by tablets is useful because it represents Accumulos attempt to distributed stored records and can be influance by the user through table splits. > The grouping functionality already exists in the internal {{TabletLocator}} class. > Current proposal is to modify {{AbstractInputFormat}} such that it generates either {{RangeInputSplit}} or {{MultiRangeInputSplit}} based on a new setting in {{InputConfigurator}}. {{AccumuloInputFormat}} would then be able to inspect the type of the split and instantiate an appropriate reader. > The functinality of {{TabletLocator}} should be exposed as a public API in 1.7 as it is useful for optimizations. -- This message was sent by Atlassian JIRA (v6.3.4#6332)