Hadoop Map/Reduce
  1. Hadoop Map/Reduce
  2. MAPREDUCE-885

More efficient SQL queries for DBInputFormat

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.21.0
    • Component/s: None
    • Labels:
      None
    • Hadoop Flags:
      Reviewed

      Description

      DBInputFormat generates InputSplits by counting the available rows in a table, and selecting subsections of the table via the "LIMIT" and "OFFSET" SQL keywords. These are only meaningful in an ordered context, so the query also includes an "ORDER BY" clause on an index column. The resulting queries are often inefficient and require full table scans. Actually using multiple mappers with these queries can lead to O(n^2) behavior in the database, where n is the number of splits. Attempting to use parallelism with these queries is counter-productive.

      A better mechanism is to organize splits based on data values themselves, which can be performed in the WHERE clause, allowing for index range scans of tables, and can better exploit parallelism in the database.

      1. MAPREDUCE-885.2.patch
        56 kB
        Aaron Kimball
      2. MAPREDUCE-885.3.patch
        55 kB
        Aaron Kimball
      3. MAPREDUCE-885.4.patch
        54 kB
        Aaron Kimball
      4. MAPREDUCE-885.5.patch
        63 kB
        Aaron Kimball
      5. MAPREDUCE-885.6.patch
        64 kB
        Aaron Kimball
      6. MAPREDUCE-885.patch
        67 kB
        Aaron Kimball

        Issue Links

          Activity

          Aaron Kimball created issue -
          Hide
          Aaron Kimball added a comment -

          This patch introduces DataDrivenDBInputFormat. This class extends DBInputFormat and reuses much of its common logic (e.g., setting up and tearing down connections, configuration, DBWritable, etc). But it adds a DataDrivenDBInputSplit class which splits queries based on data values, e.g. "id >= 10 AND id < 20" for one split, and "id >= 20 AND id < 30" for the next one. The resulting queries run significantly faster and parallelise properly.

          Instead of requiring a counting query like DBInputFormat, this InputFormat requires a query that returns the min and max values of the split column on the data to import. DataDrivenDBInputSplit is a subclass of DBInputSplit; the original DBRecordReader family of classes has been modified to discriminate between the new InputSplit class vs. the old one; if it detects a new one, it submits the newer WHERE-based query rather than the LIMIT/OFFSET-based query to the database.

          The min and max values of the column are used to generate splits via linear interpolation between the values. A DBSplitter interface has been added, which takes the min and max values for the column, as well as the number of splits to use. It then generates about this many splits, which subdivide the range of values into roughly-even intervals. Several DBSplitter implementations are provided which are applicable to different data types. For example, there is an IntegerSplitter which can split INTEGER, BIGINT, TINYINT, LONG, etc. columns. The FloatSplitter implementation works on DECIMAL, NUMBER, and REAL datatypes. A TextSplitter implementation is provided, but its utility is database-dependent. Databases may choose to sort strings via a number of algorithms (e.g., case-sensitive vs. case-insensitive). The TextSplitter assumes that strings are sorted in Unicode codepoint order. (e.g., "AAA" < "BBB" < "aaa".) A warning will be logged if the TextSplitter is used.

          Explicit tests have been added for some of the splitters. Sqoop has been modified to use the new InputFormat with encouraging performance results. Sqoop's existing regression test suite exercises the code paths for all the splitters and isolated several bugs which were fixed prior to submitting this patch. I will post the Sqoop patch separately after this JIRA issue is committed.

          Show
          Aaron Kimball added a comment - This patch introduces DataDrivenDBInputFormat. This class extends DBInputFormat and reuses much of its common logic (e.g., setting up and tearing down connections, configuration, DBWritable, etc). But it adds a DataDrivenDBInputSplit class which splits queries based on data values, e.g. "id >= 10 AND id < 20" for one split, and "id >= 20 AND id < 30" for the next one. The resulting queries run significantly faster and parallelise properly. Instead of requiring a counting query like DBInputFormat, this InputFormat requires a query that returns the min and max values of the split column on the data to import. DataDrivenDBInputSplit is a subclass of DBInputSplit; the original DBRecordReader family of classes has been modified to discriminate between the new InputSplit class vs. the old one; if it detects a new one, it submits the newer WHERE-based query rather than the LIMIT/OFFSET-based query to the database. The min and max values of the column are used to generate splits via linear interpolation between the values. A DBSplitter interface has been added, which takes the min and max values for the column, as well as the number of splits to use. It then generates about this many splits, which subdivide the range of values into roughly-even intervals. Several DBSplitter implementations are provided which are applicable to different data types. For example, there is an IntegerSplitter which can split INTEGER, BIGINT, TINYINT, LONG, etc. columns. The FloatSplitter implementation works on DECIMAL, NUMBER, and REAL datatypes. A TextSplitter implementation is provided, but its utility is database-dependent. Databases may choose to sort strings via a number of algorithms (e.g., case-sensitive vs. case-insensitive). The TextSplitter assumes that strings are sorted in Unicode codepoint order. (e.g., "AAA" < "BBB" < "aaa".) A warning will be logged if the TextSplitter is used. Explicit tests have been added for some of the splitters. Sqoop has been modified to use the new InputFormat with encouraging performance results. Sqoop's existing regression test suite exercises the code paths for all the splitters and isolated several bugs which were fixed prior to submitting this patch. I will post the Sqoop patch separately after this JIRA issue is committed.
          Aaron Kimball made changes -
          Field Original Value New Value
          Attachment MAPREDUCE-885.patch [ 12416936 ]
          Aaron Kimball made changes -
          Status Open [ 1 ] Patch Available [ 10002 ]
          Hide
          Hadoop QA added a comment -

          -1 overall. Here are the results of testing the latest attachment
          http://issues.apache.org/jira/secure/attachment/12416936/MAPREDUCE-885.patch
          against trunk revision 805324.

          +1 @author. The patch does not contain any @author tags.

          +1 tests included. The patch appears to include 4 new or modified tests.

          -1 patch. The patch command could not apply the patch.

          Console output: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-vesta.apache.org/490/console

          This message is automatically generated.

          Show
          Hadoop QA added a comment - -1 overall. Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12416936/MAPREDUCE-885.patch against trunk revision 805324. +1 @author. The patch does not contain any @author tags. +1 tests included. The patch appears to include 4 new or modified tests. -1 patch. The patch command could not apply the patch. Console output: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-vesta.apache.org/490/console This message is automatically generated.
          Hide
          Aaron Kimball added a comment -

          I think this patch won't apply until MAPREDUCE-875 is in.

          Show
          Aaron Kimball added a comment - I think this patch won't apply until MAPREDUCE-875 is in.
          Aaron Kimball made changes -
          Link This issue blocks MAPREDUCE-907 [ MAPREDUCE-907 ]
          Hide
          Enis Soztutar added a comment -

          Data driven splits are really neat. Just a few suggestions

          • We can add a getSplitter(int sqlDataType) method to DDDBIF and move sql type -> DBSplitter instance mapping, so that classes extending it can easily override this logic, for skewed data, etc.
          • Introduce DDDBRR extending DBRR in DDDBIF and move getDataBasedSelectQuery() as an overridden implementation of getSelectQuery().
          • Do we need mapred.lib.db.DDDBIF since it is introduced as deprecated. I know that lot's of legacy code is using the old API, but adding a already deprecated class seems odd.
          Show
          Enis Soztutar added a comment - Data driven splits are really neat. Just a few suggestions We can add a getSplitter(int sqlDataType) method to DDDBIF and move sql type -> DBSplitter instance mapping, so that classes extending it can easily override this logic, for skewed data, etc. Introduce DDDBRR extending DBRR in DDDBIF and move getDataBasedSelectQuery() as an overridden implementation of getSelectQuery(). Do we need mapred.lib.db.DDDBIF since it is introduced as deprecated. I know that lot's of legacy code is using the old API, but adding a already deprecated class seems odd.
          Hide
          Aaron Kimball added a comment -

          Enis,

          • +1 to getSplitter().
          • The reason for not adding DDDBRR (these acronyms are getting to be a mouthful!) is because I wanted to take advantage of the database-specific RR factory code in DBIF, and the existing family of db-specific RR's. Otherwise I'll need to add a new MySQLDDDBRR, OracleDDDBRR, etc., and any future vendor-specific improvements will require more code duplication to provide both DBRR and DDDBRR compatibility. (It's times like this I wish we had C++-style multiple inheritance.) I suppose this is technically "cleaner" but at a cost of many more lines of code to maintain; any changes made to one DBRR, you have to remember to make to the other, etc. What do you think?
          • We probably don't need the deprecated version. Sqoop is just still using the old API, so I reflexively added this since I need it. I suppose the correct thing to do is to upgrade Sqoop to the new API already. :smile:
          Show
          Aaron Kimball added a comment - Enis, +1 to getSplitter(). The reason for not adding DDDBRR (these acronyms are getting to be a mouthful!) is because I wanted to take advantage of the database-specific RR factory code in DBIF, and the existing family of db-specific RR's. Otherwise I'll need to add a new MySQLDDDBRR, OracleDDDBRR, etc., and any future vendor-specific improvements will require more code duplication to provide both DBRR and DDDBRR compatibility. (It's times like this I wish we had C++-style multiple inheritance.) I suppose this is technically "cleaner" but at a cost of many more lines of code to maintain; any changes made to one DBRR, you have to remember to make to the other, etc. What do you think? We probably don't need the deprecated version. Sqoop is just still using the old API, so I reflexively added this since I need it. I suppose the correct thing to do is to upgrade Sqoop to the new API already. :smile:
          Hide
          Aaron Kimball added a comment -

          Attaching new patch that incorporates Enis's comments.

          Enis – I've made the change to add DDDBRR extending DBRR and added a MySQLDDDBRR on top of that after all. I think it's cleaner this way after all.

          Show
          Aaron Kimball added a comment - Attaching new patch that incorporates Enis's comments. Enis – I've made the change to add DDDBRR extending DBRR and added a MySQLDDDBRR on top of that after all. I think it's cleaner this way after all.
          Aaron Kimball made changes -
          Attachment MAPREDUCE-885.2.patch [ 12417692 ]
          Aaron Kimball made changes -
          Status Patch Available [ 10002 ] Open [ 1 ]
          Hide
          Enis Soztutar added a comment -

          The thing is that we have two different strategies (row driven and data driven) for splitting and several vendor-specific classes. However, I think the current logic in the patch, which is that the InputFormat determines the strategy, and vendor specific code is automatically selected i cleaner. Moreover, since DDDBIF does not use non-standard SQL constructs, I think we won't need any vendor-specific code other than MySQL.
          One more thing, before we go. Could you please revert the changes in OracleDBRR. Thanks.

          Show
          Enis Soztutar added a comment - The thing is that we have two different strategies (row driven and data driven) for splitting and several vendor-specific classes. However, I think the current logic in the patch, which is that the InputFormat determines the strategy, and vendor specific code is automatically selected i cleaner. Moreover, since DDDBIF does not use non-standard SQL constructs, I think we won't need any vendor-specific code other than MySQL. One more thing, before we go. Could you please revert the changes in OracleDBRR. Thanks.
          Hide
          Aaron Kimball added a comment -

          Attaching new patch which reverts incidental whitespace changes in OracleDBRR.

          Show
          Aaron Kimball added a comment - Attaching new patch which reverts incidental whitespace changes in OracleDBRR.
          Aaron Kimball made changes -
          Attachment MAPREDUCE-885.3.patch [ 12417849 ]
          Aaron Kimball made changes -
          Status Open [ 1 ] Patch Available [ 10002 ]
          Hide
          Hadoop QA added a comment -

          -1 overall. Here are the results of testing the latest attachment
          http://issues.apache.org/jira/secure/attachment/12417849/MAPREDUCE-885.3.patch
          against trunk revision 808730.

          +1 @author. The patch does not contain any @author tags.

          -1 tests included. The patch doesn't appear to include any new or modified tests.
          Please justify why no new tests are needed for this patch.
          Also please list what manual steps were performed to verify this patch.

          -1 patch. The patch command could not apply the patch.

          Console output: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-vesta.apache.org/532/console

          This message is automatically generated.

          Show
          Hadoop QA added a comment - -1 overall. Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12417849/MAPREDUCE-885.3.patch against trunk revision 808730. +1 @author. The patch does not contain any @author tags. -1 tests included. The patch doesn't appear to include any new or modified tests. Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch. -1 patch. The patch command could not apply the patch. Console output: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-vesta.apache.org/532/console This message is automatically generated.
          Hide
          Aaron Kimball added a comment -

          new patch resync'd with trunk.

          Show
          Aaron Kimball added a comment - new patch resync'd with trunk.
          Aaron Kimball made changes -
          Attachment MAPREDUCE-885.4.patch [ 12418033 ]
          Aaron Kimball made changes -
          Status Patch Available [ 10002 ] Open [ 1 ]
          Aaron Kimball made changes -
          Status Open [ 1 ] Patch Available [ 10002 ]
          Assignee Aaron Kimball [ kimballa ] zhuweimin [ chinashuimin ]
          Aaron Kimball made changes -
          Status Patch Available [ 10002 ] Open [ 1 ]
          Aaron Kimball made changes -
          Assignee zhuweimin [ chinashuimin ] Aaron Kimball [ kimballa ]
          Hide
          Aaron Kimball added a comment -

          Just realized that the previous patches forgot to include changes to src/test/ – adding now.

          Show
          Aaron Kimball added a comment - Just realized that the previous patches forgot to include changes to src/test/ – adding now.
          Aaron Kimball made changes -
          Attachment MAPREDUCE-885.5.patch [ 12418034 ]
          Aaron Kimball made changes -
          Status Open [ 1 ] Patch Available [ 10002 ]
          Hide
          Hadoop QA added a comment -

          -1 overall. Here are the results of testing the latest attachment
          http://issues.apache.org/jira/secure/attachment/12418034/MAPREDUCE-885.5.patch
          against trunk revision 808730.

          +1 @author. The patch does not contain any @author tags.

          +1 tests included. The patch appears to include 4 new or modified tests.

          +1 javadoc. The javadoc tool did not generate any warning messages.

          +1 javac. The applied patch does not increase the total number of javac compiler warnings.

          -1 findbugs. The patch appears to introduce 3 new Findbugs warnings.

          +1 release audit. The applied patch does not increase the total number of release audit warnings.

          -1 core tests. The patch failed core unit tests.

          +1 contrib tests. The patch passed contrib unit tests.

          Test results: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-vesta.apache.org/535/testReport/
          Findbugs warnings: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-vesta.apache.org/535/artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html
          Checkstyle results: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-vesta.apache.org/535/artifact/trunk/build/test/checkstyle-errors.html
          Console output: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-vesta.apache.org/535/console

          This message is automatically generated.

          Show
          Hadoop QA added a comment - -1 overall. Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12418034/MAPREDUCE-885.5.patch against trunk revision 808730. +1 @author. The patch does not contain any @author tags. +1 tests included. The patch appears to include 4 new or modified tests. +1 javadoc. The javadoc tool did not generate any warning messages. +1 javac. The applied patch does not increase the total number of javac compiler warnings. -1 findbugs. The patch appears to introduce 3 new Findbugs warnings. +1 release audit. The applied patch does not increase the total number of release audit warnings. -1 core tests. The patch failed core unit tests. +1 contrib tests. The patch passed contrib unit tests. Test results: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-vesta.apache.org/535/testReport/ Findbugs warnings: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-vesta.apache.org/535/artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html Checkstyle results: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-vesta.apache.org/535/artifact/trunk/build/test/checkstyle-errors.html Console output: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-vesta.apache.org/535/console This message is automatically generated.
          Hide
          Aaron Kimball added a comment -

          Failures are unrelated.

          Show
          Aaron Kimball added a comment - Failures are unrelated.
          Hide
          Hadoop QA added a comment -

          -1 overall. Here are the results of testing the latest attachment
          http://issues.apache.org/jira/secure/attachment/12418034/MAPREDUCE-885.5.patch
          against trunk revision 808730.

          +1 @author. The patch does not contain any @author tags.

          +1 tests included. The patch appears to include 4 new or modified tests.

          +1 javadoc. The javadoc tool did not generate any warning messages.

          +1 javac. The applied patch does not increase the total number of javac compiler warnings.

          -1 findbugs. The patch appears to introduce 3 new Findbugs warnings.

          +1 release audit. The applied patch does not increase the total number of release audit warnings.

          -1 core tests. The patch failed core unit tests.

          +1 contrib tests. The patch passed contrib unit tests.

          Test results: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-vesta.apache.org/536/testReport/
          Findbugs warnings: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-vesta.apache.org/536/artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html
          Checkstyle results: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-vesta.apache.org/536/artifact/trunk/build/test/checkstyle-errors.html
          Console output: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-vesta.apache.org/536/console

          This message is automatically generated.

          Show
          Hadoop QA added a comment - -1 overall. Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12418034/MAPREDUCE-885.5.patch against trunk revision 808730. +1 @author. The patch does not contain any @author tags. +1 tests included. The patch appears to include 4 new or modified tests. +1 javadoc. The javadoc tool did not generate any warning messages. +1 javac. The applied patch does not increase the total number of javac compiler warnings. -1 findbugs. The patch appears to introduce 3 new Findbugs warnings. +1 release audit. The applied patch does not increase the total number of release audit warnings. -1 core tests. The patch failed core unit tests. +1 contrib tests. The patch passed contrib unit tests. Test results: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-vesta.apache.org/536/testReport/ Findbugs warnings: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-vesta.apache.org/536/artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html Checkstyle results: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-vesta.apache.org/536/artifact/trunk/build/test/checkstyle-errors.html Console output: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-vesta.apache.org/536/console This message is automatically generated.
          Hide
          Aaron Kimball added a comment -

          Attaching patch that addresses findbugs warnings

          Show
          Aaron Kimball added a comment - Attaching patch that addresses findbugs warnings
          Aaron Kimball made changes -
          Attachment MAPREDUCE-885.6.patch [ 12419012 ]
          Aaron Kimball made changes -
          Status Patch Available [ 10002 ] Open [ 1 ]
          Aaron Kimball made changes -
          Status Open [ 1 ] Patch Available [ 10002 ]
          Hide
          Hadoop QA added a comment -

          -1 overall. Here are the results of testing the latest attachment
          http://issues.apache.org/jira/secure/attachment/12419012/MAPREDUCE-885.6.patch
          against trunk revision 812546.

          +1 @author. The patch does not contain any @author tags.

          +1 tests included. The patch appears to include 4 new or modified tests.

          +1 javadoc. The javadoc tool did not generate any warning messages.

          +1 javac. The applied patch does not increase the total number of javac compiler warnings.

          -1 findbugs. The patch appears to introduce 1 new Findbugs warnings.

          +1 release audit. The applied patch does not increase the total number of release audit warnings.

          +1 core tests. The patch passed core unit tests.

          +1 contrib tests. The patch passed contrib unit tests.

          Test results: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-h3.grid.sp2.yahoo.net/20/testReport/
          Findbugs warnings: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-h3.grid.sp2.yahoo.net/20/artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html
          Checkstyle results: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-h3.grid.sp2.yahoo.net/20/artifact/trunk/build/test/checkstyle-errors.html
          Console output: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-h3.grid.sp2.yahoo.net/20/console

          This message is automatically generated.

          Show
          Hadoop QA added a comment - -1 overall. Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12419012/MAPREDUCE-885.6.patch against trunk revision 812546. +1 @author. The patch does not contain any @author tags. +1 tests included. The patch appears to include 4 new or modified tests. +1 javadoc. The javadoc tool did not generate any warning messages. +1 javac. The applied patch does not increase the total number of javac compiler warnings. -1 findbugs. The patch appears to introduce 1 new Findbugs warnings. +1 release audit. The applied patch does not increase the total number of release audit warnings. +1 core tests. The patch passed core unit tests. +1 contrib tests. The patch passed contrib unit tests. Test results: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-h3.grid.sp2.yahoo.net/20/testReport/ Findbugs warnings: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-h3.grid.sp2.yahoo.net/20/artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html Checkstyle results: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-h3.grid.sp2.yahoo.net/20/artifact/trunk/build/test/checkstyle-errors.html Console output: http://hudson.zones.apache.org/hudson/job/Mapreduce-Patch-h3.grid.sp2.yahoo.net/20/console This message is automatically generated.
          Hide
          Aaron Kimball added a comment -

          I believe that the remaining findbugs warning is spurious. MysqlDDDBRR.executeQuery() saves a ref to the statement object that is created and executed; the DBRR.close() method will then call statement.close() later. This is the same pattern used in the rest of the DBRR's, but findbugs seems to have a problem with this one.

          Show
          Aaron Kimball added a comment - I believe that the remaining findbugs warning is spurious. MysqlDDDBRR.executeQuery() saves a ref to the statement object that is created and executed; the DBRR.close() method will then call statement.close() later. This is the same pattern used in the rest of the DBRR's, but findbugs seems to have a problem with this one.
          Hide
          Enis Soztutar added a comment -

          I've committed this. Thanks Aaron!

          Show
          Enis Soztutar added a comment - I've committed this. Thanks Aaron!
          Enis Soztutar made changes -
          Status Patch Available [ 10002 ] Resolved [ 5 ]
          Hadoop Flags [Reviewed]
          Fix Version/s 0.21.0 [ 12314045 ]
          Resolution Fixed [ 1 ]
          Hide
          Hudson added a comment -

          Integrated in Hadoop-Mapreduce-trunk-Commit #34 (See http://hudson.zones.apache.org/hudson/job/Hadoop-Mapreduce-trunk-Commit/34/)
          . More efficient SQL queries for DBInputFormat. Contributed by Aaron Kimball.

          Show
          Hudson added a comment - Integrated in Hadoop-Mapreduce-trunk-Commit #34 (See http://hudson.zones.apache.org/hudson/job/Hadoop-Mapreduce-trunk-Commit/34/ ) . More efficient SQL queries for DBInputFormat. Contributed by Aaron Kimball.
          Hide
          Hudson added a comment -

          Integrated in Hadoop-Mapreduce-trunk #83 (See http://hudson.zones.apache.org/hudson/job/Hadoop-Mapreduce-trunk/83/)
          . More efficient SQL queries for DBInputFormat. Contributed by Aaron Kimball.

          Show
          Hudson added a comment - Integrated in Hadoop-Mapreduce-trunk #83 (See http://hudson.zones.apache.org/hudson/job/Hadoop-Mapreduce-trunk/83/ ) . More efficient SQL queries for DBInputFormat. Contributed by Aaron Kimball.
          Tom White made changes -
          Status Resolved [ 5 ] Closed [ 6 ]
          Gavin made changes -
          Link This issue blocks MAPREDUCE-907 [ MAPREDUCE-907 ]
          Gavin made changes -
          Link This issue is depended upon by MAPREDUCE-907 [ MAPREDUCE-907 ]
          Transition Time In Source Status Execution Times Last Executer Last Execution Date
          Patch Available Patch Available Open Open
          19d 13h 22m 4 Aaron Kimball 09/Sep/09 03:16
          Open Open Patch Available Patch Available
          1d 12h 59m 5 Aaron Kimball 09/Sep/09 03:16
          Patch Available Patch Available Resolved Resolved
          5d 12h 5m 1 Enis Soztutar 14/Sep/09 15:21
          Resolved Resolved Closed Closed
          344d 6h 53m 1 Tom White 24/Aug/10 22:15

            People

            • Assignee:
              Aaron Kimball
              Reporter:
              Aaron Kimball
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development