You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Ning Zhang (JIRA)" <ji...@apache.org> on 2011/03/08 23:28:00 UTC

[jira] Created: (HIVE-2035) Use block-level merge for RCFile if merging intermediate results are needed

Use block-level merge for RCFile if merging intermediate results are needed
---------------------------------------------------------------------------

                 Key: HIVE-2035
                 URL: https://issues.apache.org/jira/browse/HIVE-2035
             Project: Hive
          Issue Type: Improvement
            Reporter: Ning Zhang
            Assignee: He Yongqiang


Currently if hive.merge.mapredfiles and/or hive.merge.mapfile is set to true the intermediate data could be merged using an additional MapReduce job. This could be quite expensive if the data size is large. With HIVE-1950, merging can be done in the RCFile block level so that it bypasses the (de-)compression, (de-)serialization phases. This could improve the merge process significantly. 

This JIRA should handle the case where the input table is not stored in RCFile, but the destination table is (which requires the intermediate data should be stored in the same format as the destination table). 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

[jira] [Updated] (HIVE-2035) Use block-level merge for RCFile if merging intermediate results are needed

Posted by "Franklin Hu (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HIVE-2035?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Franklin Hu updated HIVE-2035:
------------------------------

    Attachment: hive-2035.1.patch

Implements block level merge of intermediate results to a table or partition stored as RCFile.

> Use block-level merge for RCFile if merging intermediate results are needed
> ---------------------------------------------------------------------------
>
>                 Key: HIVE-2035
>                 URL: https://issues.apache.org/jira/browse/HIVE-2035
>             Project: Hive
>          Issue Type: Improvement
>            Reporter: Ning Zhang
>            Assignee: Franklin Hu
>         Attachments: hive-2035.1.patch
>
>
> Currently if hive.merge.mapredfiles and/or hive.merge.mapfile is set to true the intermediate data could be merged using an additional MapReduce job. This could be quite expensive if the data size is large. With HIVE-1950, merging can be done in the RCFile block level so that it bypasses the (de-)compression, (de-)serialization phases. This could improve the merge process significantly. 
> This JIRA should handle the case where the input table is not stored in RCFile, but the destination table is (which requires the intermediate data should be stored in the same format as the destination table). 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

[jira] [Commented] (HIVE-2035) Use block-level merge for RCFile if merging intermediate results are needed

Posted by "jiraposter@reviews.apache.org (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HIVE-2035?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13052940#comment-13052940 ] 

jiraposter@reviews.apache.org commented on HIVE-2035:
-----------------------------------------------------


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/935/#review875
-----------------------------------------------------------


Can you make sure that in the test cases, the query need the merge step?

- Siying


On 2011-06-20 19:20:53, Franklin Hu wrote:
bq.  
bq.  -----------------------------------------------------------
bq.  This is an automatically generated e-mail. To reply, visit:
bq.  https://reviews.apache.org/r/935/
bq.  -----------------------------------------------------------
bq.  
bq.  (Updated 2011-06-20 19:20:53)
bq.  
bq.  
bq.  Review request for hive.
bq.  
bq.  
bq.  Summary
bq.  -------
bq.  
bq.  For a table stored as RCFile, intermediate results are sometimes merged if those files are below a certain threshold. For RCFiles, we can do a block level merge that does not deserialize the blocks and is more efficient. This patch leverages the existing code used to merge for ALTER TABLE ... CONCATENATE.
bq.  
bq.  
bq.  This addresses bug HIVE-2035.
bq.      https://issues.apache.org/jira/browse/HIVE-2035
bq.  
bq.  
bq.  Diffs
bq.  -----
bq.  
bq.    trunk/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java 1136090 
bq.    trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/TaskFactory.java 1136090 
bq.    trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/BlockMergeTask.java 1136090 
bq.    trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/MergeWork.java 1136090 
bq.    trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/RCFileBlockMergeRecordReader.java 1136090 
bq.    trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/RCFileKeyBufferWrapper.java 1136090 
bq.    trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/RCFileMergeMapper.java 1136090 
bq.    trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRFileSink1.java 1136090 
bq.    trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/ConditionalResolverMergeFiles.java 1136090 
bq.    trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/MapredWork.java 1136090 
bq.    trunk/ql/src/test/queries/clientpositive/rcfile_createas1.q PRE-CREATION 
bq.    trunk/ql/src/test/queries/clientpositive/rcfile_merge1.q PRE-CREATION 
bq.    trunk/ql/src/test/queries/clientpositive/rcfile_merge2.q PRE-CREATION 
bq.    trunk/ql/src/test/queries/clientpositive/rcfile_merge3.q PRE-CREATION 
bq.    trunk/ql/src/test/queries/clientpositive/rcfile_merge4.q PRE-CREATION 
bq.    trunk/ql/src/test/results/clientpositive/rcfile_createas1.q.out PRE-CREATION 
bq.    trunk/ql/src/test/results/clientpositive/rcfile_merge1.q.out PRE-CREATION 
bq.    trunk/ql/src/test/results/clientpositive/rcfile_merge2.q.out PRE-CREATION 
bq.    trunk/ql/src/test/results/clientpositive/rcfile_merge3.q.out PRE-CREATION 
bq.    trunk/ql/src/test/results/clientpositive/rcfile_merge4.q.out PRE-CREATION 
bq.  
bq.  Diff: https://reviews.apache.org/r/935/diff
bq.  
bq.  
bq.  Testing
bq.  -------
bq.  
bq.  
bq.  Thanks,
bq.  
bq.  Franklin
bq.  
bq.



> Use block-level merge for RCFile if merging intermediate results are needed
> ---------------------------------------------------------------------------
>
>                 Key: HIVE-2035
>                 URL: https://issues.apache.org/jira/browse/HIVE-2035
>             Project: Hive
>          Issue Type: Improvement
>            Reporter: Ning Zhang
>            Assignee: Franklin Hu
>         Attachments: hive-2035.1.patch
>
>
> Currently if hive.merge.mapredfiles and/or hive.merge.mapfile is set to true the intermediate data could be merged using an additional MapReduce job. This could be quite expensive if the data size is large. With HIVE-1950, merging can be done in the RCFile block level so that it bypasses the (de-)compression, (de-)serialization phases. This could improve the merge process significantly. 
> This JIRA should handle the case where the input table is not stored in RCFile, but the destination table is (which requires the intermediate data should be stored in the same format as the destination table). 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (HIVE-2035) Use block-level merge for RCFile if merging intermediate results are needed

Posted by "Siying Dong (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HIVE-2035?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13055355#comment-13055355 ] 

Siying Dong commented on HIVE-2035:
-----------------------------------

+1, will run regression tests

> Use block-level merge for RCFile if merging intermediate results are needed
> ---------------------------------------------------------------------------
>
>                 Key: HIVE-2035
>                 URL: https://issues.apache.org/jira/browse/HIVE-2035
>             Project: Hive
>          Issue Type: Improvement
>            Reporter: Ning Zhang
>            Assignee: Franklin Hu
>         Attachments: hive-2035.1.patch, hive-2035.3.patch
>
>
> Currently if hive.merge.mapredfiles and/or hive.merge.mapfile is set to true the intermediate data could be merged using an additional MapReduce job. This could be quite expensive if the data size is large. With HIVE-1950, merging can be done in the RCFile block level so that it bypasses the (de-)compression, (de-)serialization phases. This could improve the merge process significantly. 
> This JIRA should handle the case where the input table is not stored in RCFile, but the destination table is (which requires the intermediate data should be stored in the same format as the destination table). 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (HIVE-2035) Use block-level merge for RCFile if merging intermediate results are needed

Posted by "jiraposter@reviews.apache.org (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HIVE-2035?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13051430#comment-13051430 ] 

jiraposter@reviews.apache.org commented on HIVE-2035:
-----------------------------------------------------


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/935/#review864
-----------------------------------------------------------



trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/MergeWork.java
<https://reviews.apache.org/r/935/#comment1889>

    It doesn't seem to be a RuntimeException



trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/RCFileMergeMapper.java
<https://reviews.apache.org/r/935/#comment1890>

    why not "inputDepth--"?



trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRFileSink1.java
<https://reviews.apache.org/r/935/#comment1891>

    should we just throw an exception instead of return a magic null?



trunk/ql/src/test/queries/clientpositive/rcfile_insert.q
<https://reviews.apache.org/r/935/#comment1893>

    Will it launch a merge job? If it launches, it seems a bug in Hive that CombineHiveInputFormat doesn't span to multiple partitions when it needs to.



trunk/ql/src/test/queries/clientpositive/rcfile_merge1.q
<https://reviews.apache.org/r/935/#comment1892>

    It doesn't seem to launch merge jobs. If it launches. It seems to be a bug.


- Siying


On 2011-06-17 20:45:46, Franklin Hu wrote:
bq.  
bq.  -----------------------------------------------------------
bq.  This is an automatically generated e-mail. To reply, visit:
bq.  https://reviews.apache.org/r/935/
bq.  -----------------------------------------------------------
bq.  
bq.  (Updated 2011-06-17 20:45:46)
bq.  
bq.  
bq.  Review request for hive.
bq.  
bq.  
bq.  Summary
bq.  -------
bq.  
bq.  For a table stored as RCFile, intermediate results are sometimes merged if those files are below a certain threshold. For RCFiles, we can do a block level merge that does not deserialize the blocks and is more efficient. This patch leverages the existing code used to merge for ALTER TABLE ... CONCATENATE.
bq.  
bq.  
bq.  This addresses bug HIVE-2035.
bq.      https://issues.apache.org/jira/browse/HIVE-2035
bq.  
bq.  
bq.  Diffs
bq.  -----
bq.  
bq.    trunk/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java 1134415 
bq.    trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/TaskFactory.java 1134415 
bq.    trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/BlockMergeTask.java 1134415 
bq.    trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/MergeWork.java 1134415 
bq.    trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/RCFileBlockMergeRecordReader.java 1134415 
bq.    trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/RCFileKeyBufferWrapper.java 1134415 
bq.    trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/RCFileMergeMapper.java 1134415 
bq.    trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRFileSink1.java 1134415 
bq.    trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/ConditionalResolverMergeFiles.java 1134415 
bq.    trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/MapredWork.java 1134415 
bq.    trunk/ql/src/test/queries/clientpositive/rcfile_createas1.q PRE-CREATION 
bq.    trunk/ql/src/test/queries/clientpositive/rcfile_insert.q PRE-CREATION 
bq.    trunk/ql/src/test/queries/clientpositive/rcfile_merge1.q PRE-CREATION 
bq.    trunk/ql/src/test/queries/clientpositive/rcfile_merge2.q PRE-CREATION 
bq.    trunk/ql/src/test/queries/clientpositive/rcfile_merge3.q PRE-CREATION 
bq.    trunk/ql/src/test/queries/clientpositive/rcfile_merge4.q PRE-CREATION 
bq.    trunk/ql/src/test/results/clientpositive/rcfile_createas1.q.out PRE-CREATION 
bq.    trunk/ql/src/test/results/clientpositive/rcfile_insert.q.out PRE-CREATION 
bq.    trunk/ql/src/test/results/clientpositive/rcfile_merge1.q.out PRE-CREATION 
bq.    trunk/ql/src/test/results/clientpositive/rcfile_merge2.q.out PRE-CREATION 
bq.    trunk/ql/src/test/results/clientpositive/rcfile_merge3.q.out PRE-CREATION 
bq.    trunk/ql/src/test/results/clientpositive/rcfile_merge4.q.out PRE-CREATION 
bq.  
bq.  Diff: https://reviews.apache.org/r/935/diff
bq.  
bq.  
bq.  Testing
bq.  -------
bq.  
bq.  
bq.  Thanks,
bq.  
bq.  Franklin
bq.  
bq.



> Use block-level merge for RCFile if merging intermediate results are needed
> ---------------------------------------------------------------------------
>
>                 Key: HIVE-2035
>                 URL: https://issues.apache.org/jira/browse/HIVE-2035
>             Project: Hive
>          Issue Type: Improvement
>            Reporter: Ning Zhang
>            Assignee: Franklin Hu
>         Attachments: hive-2035.1.patch
>
>
> Currently if hive.merge.mapredfiles and/or hive.merge.mapfile is set to true the intermediate data could be merged using an additional MapReduce job. This could be quite expensive if the data size is large. With HIVE-1950, merging can be done in the RCFile block level so that it bypasses the (de-)compression, (de-)serialization phases. This could improve the merge process significantly. 
> This JIRA should handle the case where the input table is not stored in RCFile, but the destination table is (which requires the intermediate data should be stored in the same format as the destination table). 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Updated] (HIVE-2035) Use block-level merge for RCFile if merging intermediate results are needed

Posted by "Franklin Hu (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HIVE-2035?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Franklin Hu updated HIVE-2035:
------------------------------

    Attachment: hive-2035.3.patch

Add min/max split size settings to unit tests

> Use block-level merge for RCFile if merging intermediate results are needed
> ---------------------------------------------------------------------------
>
>                 Key: HIVE-2035
>                 URL: https://issues.apache.org/jira/browse/HIVE-2035
>             Project: Hive
>          Issue Type: Improvement
>            Reporter: Ning Zhang
>            Assignee: Franklin Hu
>         Attachments: hive-2035.1.patch, hive-2035.3.patch
>
>
> Currently if hive.merge.mapredfiles and/or hive.merge.mapfile is set to true the intermediate data could be merged using an additional MapReduce job. This could be quite expensive if the data size is large. With HIVE-1950, merging can be done in the RCFile block level so that it bypasses the (de-)compression, (de-)serialization phases. This could improve the merge process significantly. 
> This JIRA should handle the case where the input table is not stored in RCFile, but the destination table is (which requires the intermediate data should be stored in the same format as the destination table). 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Assigned] (HIVE-2035) Use block-level merge for RCFile if merging intermediate results are needed

Posted by "He Yongqiang (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HIVE-2035?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

He Yongqiang reassigned HIVE-2035:
----------------------------------

    Assignee:     (was: He Yongqiang)

> Use block-level merge for RCFile if merging intermediate results are needed
> ---------------------------------------------------------------------------
>
>                 Key: HIVE-2035
>                 URL: https://issues.apache.org/jira/browse/HIVE-2035
>             Project: Hive
>          Issue Type: Improvement
>            Reporter: Ning Zhang
>
> Currently if hive.merge.mapredfiles and/or hive.merge.mapfile is set to true the intermediate data could be merged using an additional MapReduce job. This could be quite expensive if the data size is large. With HIVE-1950, merging can be done in the RCFile block level so that it bypasses the (de-)compression, (de-)serialization phases. This could improve the merge process significantly. 
> This JIRA should handle the case where the input table is not stored in RCFile, but the destination table is (which requires the intermediate data should be stored in the same format as the destination table). 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

[jira] [Commented] (HIVE-2035) Use block-level merge for RCFile if merging intermediate results are needed

Posted by "jiraposter@reviews.apache.org (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HIVE-2035?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13052176#comment-13052176 ] 

jiraposter@reviews.apache.org commented on HIVE-2035:
-----------------------------------------------------


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/935/
-----------------------------------------------------------

(Updated 2011-06-20 19:20:53.263299)


Review request for hive.


Changes
-------

Throw error at compile time for bad rcfile merge input format class rather than at runtime, remove bad test, stylistic fixes


Summary
-------

For a table stored as RCFile, intermediate results are sometimes merged if those files are below a certain threshold. For RCFiles, we can do a block level merge that does not deserialize the blocks and is more efficient. This patch leverages the existing code used to merge for ALTER TABLE ... CONCATENATE.


This addresses bug HIVE-2035.
    https://issues.apache.org/jira/browse/HIVE-2035


Diffs (updated)
-----

  trunk/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java 1136090 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/TaskFactory.java 1136090 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/BlockMergeTask.java 1136090 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/MergeWork.java 1136090 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/RCFileBlockMergeRecordReader.java 1136090 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/RCFileKeyBufferWrapper.java 1136090 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/RCFileMergeMapper.java 1136090 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRFileSink1.java 1136090 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/ConditionalResolverMergeFiles.java 1136090 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/MapredWork.java 1136090 
  trunk/ql/src/test/queries/clientpositive/rcfile_createas1.q PRE-CREATION 
  trunk/ql/src/test/queries/clientpositive/rcfile_merge1.q PRE-CREATION 
  trunk/ql/src/test/queries/clientpositive/rcfile_merge2.q PRE-CREATION 
  trunk/ql/src/test/queries/clientpositive/rcfile_merge3.q PRE-CREATION 
  trunk/ql/src/test/queries/clientpositive/rcfile_merge4.q PRE-CREATION 
  trunk/ql/src/test/results/clientpositive/rcfile_createas1.q.out PRE-CREATION 
  trunk/ql/src/test/results/clientpositive/rcfile_merge1.q.out PRE-CREATION 
  trunk/ql/src/test/results/clientpositive/rcfile_merge2.q.out PRE-CREATION 
  trunk/ql/src/test/results/clientpositive/rcfile_merge3.q.out PRE-CREATION 
  trunk/ql/src/test/results/clientpositive/rcfile_merge4.q.out PRE-CREATION 

Diff: https://reviews.apache.org/r/935/diff


Testing
-------


Thanks,

Franklin



> Use block-level merge for RCFile if merging intermediate results are needed
> ---------------------------------------------------------------------------
>
>                 Key: HIVE-2035
>                 URL: https://issues.apache.org/jira/browse/HIVE-2035
>             Project: Hive
>          Issue Type: Improvement
>            Reporter: Ning Zhang
>            Assignee: Franklin Hu
>         Attachments: hive-2035.1.patch
>
>
> Currently if hive.merge.mapredfiles and/or hive.merge.mapfile is set to true the intermediate data could be merged using an additional MapReduce job. This could be quite expensive if the data size is large. With HIVE-1950, merging can be done in the RCFile block level so that it bypasses the (de-)compression, (de-)serialization phases. This could improve the merge process significantly. 
> This JIRA should handle the case where the input table is not stored in RCFile, but the destination table is (which requires the intermediate data should be stored in the same format as the destination table). 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (HIVE-2035) Use block-level merge for RCFile if merging intermediate results are needed

Posted by "Hudson (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HIVE-2035?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13056745#comment-13056745 ] 

Hudson commented on HIVE-2035:
------------------------------

Integrated in Hive-trunk-h0.21 #798 (See [https://builds.apache.org/job/Hive-trunk-h0.21/798/])
    

> Use block-level merge for RCFile if merging intermediate results are needed
> ---------------------------------------------------------------------------
>
>                 Key: HIVE-2035
>                 URL: https://issues.apache.org/jira/browse/HIVE-2035
>             Project: Hive
>          Issue Type: Improvement
>            Reporter: Ning Zhang
>            Assignee: Franklin Hu
>         Attachments: hive-2035.1.patch, hive-2035.3.patch
>
>
> Currently if hive.merge.mapredfiles and/or hive.merge.mapfile is set to true the intermediate data could be merged using an additional MapReduce job. This could be quite expensive if the data size is large. With HIVE-1950, merging can be done in the RCFile block level so that it bypasses the (de-)compression, (de-)serialization phases. This could improve the merge process significantly. 
> This JIRA should handle the case where the input table is not stored in RCFile, but the destination table is (which requires the intermediate data should be stored in the same format as the destination table). 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (HIVE-2035) Use block-level merge for RCFile if merging intermediate results are needed

Posted by "Siying Dong (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HIVE-2035?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13051415#comment-13051415 ] 

Siying Dong commented on HIVE-2035:
-----------------------------------

will take a look.

> Use block-level merge for RCFile if merging intermediate results are needed
> ---------------------------------------------------------------------------
>
>                 Key: HIVE-2035
>                 URL: https://issues.apache.org/jira/browse/HIVE-2035
>             Project: Hive
>          Issue Type: Improvement
>            Reporter: Ning Zhang
>            Assignee: Franklin Hu
>         Attachments: hive-2035.1.patch
>
>
> Currently if hive.merge.mapredfiles and/or hive.merge.mapfile is set to true the intermediate data could be merged using an additional MapReduce job. This could be quite expensive if the data size is large. With HIVE-1950, merging can be done in the RCFile block level so that it bypasses the (de-)compression, (de-)serialization phases. This could improve the merge process significantly. 
> This JIRA should handle the case where the input table is not stored in RCFile, but the destination table is (which requires the intermediate data should be stored in the same format as the destination table). 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Updated] (HIVE-2035) Use block-level merge for RCFile if merging intermediate results are needed

Posted by "Siying Dong (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HIVE-2035?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Siying Dong updated HIVE-2035:
------------------------------

    Status: Patch Available  (was: Open)

> Use block-level merge for RCFile if merging intermediate results are needed
> ---------------------------------------------------------------------------
>
>                 Key: HIVE-2035
>                 URL: https://issues.apache.org/jira/browse/HIVE-2035
>             Project: Hive
>          Issue Type: Improvement
>            Reporter: Ning Zhang
>            Assignee: Franklin Hu
>         Attachments: hive-2035.1.patch, hive-2035.3.patch
>
>
> Currently if hive.merge.mapredfiles and/or hive.merge.mapfile is set to true the intermediate data could be merged using an additional MapReduce job. This could be quite expensive if the data size is large. With HIVE-1950, merging can be done in the RCFile block level so that it bypasses the (de-)compression, (de-)serialization phases. This could improve the merge process significantly. 
> This JIRA should handle the case where the input table is not stored in RCFile, but the destination table is (which requires the intermediate data should be stored in the same format as the destination table). 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (HIVE-2035) Use block-level merge for RCFile if merging intermediate results are needed

Posted by "jiraposter@reviews.apache.org (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HIVE-2035?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13025645#comment-13025645 ] 

jiraposter@reviews.apache.org commented on HIVE-2035:
-----------------------------------------------------


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/669/
-----------------------------------------------------------

Review request for hive, Carl Steinbach, John Sichi, and Paul Yang.


Summary
-------

See HIVE-2135


This addresses bug HIVE-2035.
    https://issues.apache.org/jira/browse/HIVE-2035


Diffs
-----

  trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java 1096976 
  trunk/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreCommand.java PRE-CREATION 
  trunk/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java 1096976 
  trunk/metastore/src/java/org/apache/hadoop/hive/metastore/URLConnectionUpdater.java PRE-CREATION 

Diff: https://reviews.apache.org/r/669/diff


Testing
-------

Since this is a refactoring patch, no new tests are required. Ran all the tests in metastore. All of them passed.


Thanks,

Ashutosh



> Use block-level merge for RCFile if merging intermediate results are needed
> ---------------------------------------------------------------------------
>
>                 Key: HIVE-2035
>                 URL: https://issues.apache.org/jira/browse/HIVE-2035
>             Project: Hive
>          Issue Type: Improvement
>            Reporter: Ning Zhang
>            Assignee: He Yongqiang
>
> Currently if hive.merge.mapredfiles and/or hive.merge.mapfile is set to true the intermediate data could be merged using an additional MapReduce job. This could be quite expensive if the data size is large. With HIVE-1950, merging can be done in the RCFile block level so that it bypasses the (de-)compression, (de-)serialization phases. This could improve the merge process significantly. 
> This JIRA should handle the case where the input table is not stored in RCFile, but the destination table is (which requires the intermediate data should be stored in the same format as the destination table). 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

[jira] [Commented] (HIVE-2035) Use block-level merge for RCFile if merging intermediate results are needed

Posted by "Ning Zhang (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HIVE-2035?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13025909#comment-13025909 ] 

Ning Zhang commented on HIVE-2035:
----------------------------------

Ashutosh, it seems the review request #669 got a wrong HIVE JIRA reference? 

> Use block-level merge for RCFile if merging intermediate results are needed
> ---------------------------------------------------------------------------
>
>                 Key: HIVE-2035
>                 URL: https://issues.apache.org/jira/browse/HIVE-2035
>             Project: Hive
>          Issue Type: Improvement
>            Reporter: Ning Zhang
>            Assignee: He Yongqiang
>
> Currently if hive.merge.mapredfiles and/or hive.merge.mapfile is set to true the intermediate data could be merged using an additional MapReduce job. This could be quite expensive if the data size is large. With HIVE-1950, merging can be done in the RCFile block level so that it bypasses the (de-)compression, (de-)serialization phases. This could improve the merge process significantly. 
> This JIRA should handle the case where the input table is not stored in RCFile, but the destination table is (which requires the intermediate data should be stored in the same format as the destination table). 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

[jira] [Commented] (HIVE-2035) Use block-level merge for RCFile if merging intermediate results are needed

Posted by "jiraposter@reviews.apache.org (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HIVE-2035?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13051316#comment-13051316 ] 

jiraposter@reviews.apache.org commented on HIVE-2035:
-----------------------------------------------------


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/935/
-----------------------------------------------------------

Review request for hive.


Summary
-------

For a table stored as RCFile, intermediate results are sometimes merged if those files are below a certain threshold. For RCFiles, we can do a block level merge that does not deserialize the blocks and is more efficient. This patch leverages the existing code used to merge for ALTER TABLE ... CONCATENATE.


This addresses bug HIVE-2035.
    https://issues.apache.org/jira/browse/HIVE-2035


Diffs
-----

  trunk/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java 1134415 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/TaskFactory.java 1134415 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/BlockMergeTask.java 1134415 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/MergeWork.java 1134415 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/RCFileBlockMergeRecordReader.java 1134415 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/RCFileKeyBufferWrapper.java 1134415 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/RCFileMergeMapper.java 1134415 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRFileSink1.java 1134415 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/ConditionalResolverMergeFiles.java 1134415 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/MapredWork.java 1134415 
  trunk/ql/src/test/queries/clientpositive/rcfile_createas1.q PRE-CREATION 
  trunk/ql/src/test/queries/clientpositive/rcfile_insert.q PRE-CREATION 
  trunk/ql/src/test/queries/clientpositive/rcfile_merge1.q PRE-CREATION 
  trunk/ql/src/test/queries/clientpositive/rcfile_merge2.q PRE-CREATION 
  trunk/ql/src/test/queries/clientpositive/rcfile_merge3.q PRE-CREATION 
  trunk/ql/src/test/queries/clientpositive/rcfile_merge4.q PRE-CREATION 
  trunk/ql/src/test/results/clientpositive/rcfile_createas1.q.out PRE-CREATION 
  trunk/ql/src/test/results/clientpositive/rcfile_insert.q.out PRE-CREATION 
  trunk/ql/src/test/results/clientpositive/rcfile_merge1.q.out PRE-CREATION 
  trunk/ql/src/test/results/clientpositive/rcfile_merge2.q.out PRE-CREATION 
  trunk/ql/src/test/results/clientpositive/rcfile_merge3.q.out PRE-CREATION 
  trunk/ql/src/test/results/clientpositive/rcfile_merge4.q.out PRE-CREATION 

Diff: https://reviews.apache.org/r/935/diff


Testing
-------


Thanks,

Franklin



> Use block-level merge for RCFile if merging intermediate results are needed
> ---------------------------------------------------------------------------
>
>                 Key: HIVE-2035
>                 URL: https://issues.apache.org/jira/browse/HIVE-2035
>             Project: Hive
>          Issue Type: Improvement
>            Reporter: Ning Zhang
>            Assignee: Franklin Hu
>         Attachments: hive-2035.1.patch
>
>
> Currently if hive.merge.mapredfiles and/or hive.merge.mapfile is set to true the intermediate data could be merged using an additional MapReduce job. This could be quite expensive if the data size is large. With HIVE-1950, merging can be done in the RCFile block level so that it bypasses the (de-)compression, (de-)serialization phases. This could improve the merge process significantly. 
> This JIRA should handle the case where the input table is not stored in RCFile, but the destination table is (which requires the intermediate data should be stored in the same format as the destination table). 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Assigned] (HIVE-2035) Use block-level merge for RCFile if merging intermediate results are needed

Posted by "Franklin Hu (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HIVE-2035?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Franklin Hu reassigned HIVE-2035:
---------------------------------

    Assignee: Franklin Hu

> Use block-level merge for RCFile if merging intermediate results are needed
> ---------------------------------------------------------------------------
>
>                 Key: HIVE-2035
>                 URL: https://issues.apache.org/jira/browse/HIVE-2035
>             Project: Hive
>          Issue Type: Improvement
>            Reporter: Ning Zhang
>            Assignee: Franklin Hu
>
> Currently if hive.merge.mapredfiles and/or hive.merge.mapfile is set to true the intermediate data could be merged using an additional MapReduce job. This could be quite expensive if the data size is large. With HIVE-1950, merging can be done in the RCFile block level so that it bypasses the (de-)compression, (de-)serialization phases. This could improve the merge process significantly. 
> This JIRA should handle the case where the input table is not stored in RCFile, but the destination table is (which requires the intermediate data should be stored in the same format as the destination table). 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

[jira] [Commented] (HIVE-2035) Use block-level merge for RCFile if merging intermediate results are needed

Posted by "Siying Dong (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HIVE-2035?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13056205#comment-13056205 ] 

Siying Dong commented on HIVE-2035:
-----------------------------------

committed

> Use block-level merge for RCFile if merging intermediate results are needed
> ---------------------------------------------------------------------------
>
>                 Key: HIVE-2035
>                 URL: https://issues.apache.org/jira/browse/HIVE-2035
>             Project: Hive
>          Issue Type: Improvement
>            Reporter: Ning Zhang
>            Assignee: Franklin Hu
>         Attachments: hive-2035.1.patch, hive-2035.3.patch
>
>
> Currently if hive.merge.mapredfiles and/or hive.merge.mapfile is set to true the intermediate data could be merged using an additional MapReduce job. This could be quite expensive if the data size is large. With HIVE-1950, merging can be done in the RCFile block level so that it bypasses the (de-)compression, (de-)serialization phases. This could improve the merge process significantly. 
> This JIRA should handle the case where the input table is not stored in RCFile, but the destination table is (which requires the intermediate data should be stored in the same format as the destination table). 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (HIVE-2035) Use block-level merge for RCFile if merging intermediate results are needed

Posted by "jiraposter@reviews.apache.org (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HIVE-2035?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13054033#comment-13054033 ] 

jiraposter@reviews.apache.org commented on HIVE-2035:
-----------------------------------------------------


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/935/
-----------------------------------------------------------

(Updated 2011-06-23 18:56:14.903379)


Review request for hive.


Changes
-------

Add max and min split size configs to unit tests


Summary
-------

For a table stored as RCFile, intermediate results are sometimes merged if those files are below a certain threshold. For RCFiles, we can do a block level merge that does not deserialize the blocks and is more efficient. This patch leverages the existing code used to merge for ALTER TABLE ... CONCATENATE.


This addresses bug HIVE-2035.
    https://issues.apache.org/jira/browse/HIVE-2035


Diffs (updated)
-----

  trunk/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java 1139014 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/TaskFactory.java 1139014 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/BlockMergeTask.java 1139014 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/MergeWork.java 1139014 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/RCFileBlockMergeRecordReader.java 1139014 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/RCFileKeyBufferWrapper.java 1139014 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/io/rcfile/merge/RCFileMergeMapper.java 1139014 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRFileSink1.java 1139014 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/ConditionalResolverMergeFiles.java 1139014 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/MapredWork.java 1139014 
  trunk/ql/src/test/queries/clientpositive/rcfile_createas1.q PRE-CREATION 
  trunk/ql/src/test/queries/clientpositive/rcfile_merge1.q PRE-CREATION 
  trunk/ql/src/test/queries/clientpositive/rcfile_merge2.q PRE-CREATION 
  trunk/ql/src/test/queries/clientpositive/rcfile_merge3.q PRE-CREATION 
  trunk/ql/src/test/queries/clientpositive/rcfile_merge4.q PRE-CREATION 
  trunk/ql/src/test/results/clientpositive/rcfile_createas1.q.out PRE-CREATION 
  trunk/ql/src/test/results/clientpositive/rcfile_merge1.q.out PRE-CREATION 
  trunk/ql/src/test/results/clientpositive/rcfile_merge2.q.out PRE-CREATION 
  trunk/ql/src/test/results/clientpositive/rcfile_merge3.q.out PRE-CREATION 
  trunk/ql/src/test/results/clientpositive/rcfile_merge4.q.out PRE-CREATION 

Diff: https://reviews.apache.org/r/935/diff


Testing
-------


Thanks,

Franklin



> Use block-level merge for RCFile if merging intermediate results are needed
> ---------------------------------------------------------------------------
>
>                 Key: HIVE-2035
>                 URL: https://issues.apache.org/jira/browse/HIVE-2035
>             Project: Hive
>          Issue Type: Improvement
>            Reporter: Ning Zhang
>            Assignee: Franklin Hu
>         Attachments: hive-2035.1.patch, hive-2035.3.patch
>
>
> Currently if hive.merge.mapredfiles and/or hive.merge.mapfile is set to true the intermediate data could be merged using an additional MapReduce job. This could be quite expensive if the data size is large. With HIVE-1950, merging can be done in the RCFile block level so that it bypasses the (de-)compression, (de-)serialization phases. This could improve the merge process significantly. 
> This JIRA should handle the case where the input table is not stored in RCFile, but the destination table is (which requires the intermediate data should be stored in the same format as the destination table). 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Updated] (HIVE-2035) Use block-level merge for RCFile if merging intermediate results are needed

Posted by "Franklin Hu (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HIVE-2035?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Franklin Hu updated HIVE-2035:
------------------------------

       Resolution: Fixed
    Fix Version/s: 0.8.0
           Status: Resolved  (was: Patch Available)

> Use block-level merge for RCFile if merging intermediate results are needed
> ---------------------------------------------------------------------------
>
>                 Key: HIVE-2035
>                 URL: https://issues.apache.org/jira/browse/HIVE-2035
>             Project: Hive
>          Issue Type: Improvement
>            Reporter: Ning Zhang
>            Assignee: Franklin Hu
>             Fix For: 0.8.0
>
>         Attachments: hive-2035.1.patch, hive-2035.3.patch
>
>
> Currently if hive.merge.mapredfiles and/or hive.merge.mapfile is set to true the intermediate data could be merged using an additional MapReduce job. This could be quite expensive if the data size is large. With HIVE-1950, merging can be done in the RCFile block level so that it bypasses the (de-)compression, (de-)serialization phases. This could improve the merge process significantly. 
> This JIRA should handle the case where the input table is not stored in RCFile, but the destination table is (which requires the intermediate data should be stored in the same format as the destination table). 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Updated] (HIVE-2035) Use block-level merge for RCFile if merging intermediate results are needed

Posted by "Franklin Hu (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HIVE-2035?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Franklin Hu updated HIVE-2035:
------------------------------

    Release Note: For tables stored as RCFile, intermediate results that have too many small files will be merged with a block-level merge that does not deserialize and re-serialized the contents of each block.

> Use block-level merge for RCFile if merging intermediate results are needed
> ---------------------------------------------------------------------------
>
>                 Key: HIVE-2035
>                 URL: https://issues.apache.org/jira/browse/HIVE-2035
>             Project: Hive
>          Issue Type: Improvement
>            Reporter: Ning Zhang
>            Assignee: Franklin Hu
>             Fix For: 0.8.0
>
>         Attachments: hive-2035.1.patch, hive-2035.3.patch
>
>
> Currently if hive.merge.mapredfiles and/or hive.merge.mapfile is set to true the intermediate data could be merged using an additional MapReduce job. This could be quite expensive if the data size is large. With HIVE-1950, merging can be done in the RCFile block level so that it bypasses the (de-)compression, (de-)serialization phases. This could improve the merge process significantly. 
> This JIRA should handle the case where the input table is not stored in RCFile, but the destination table is (which requires the intermediate data should be stored in the same format as the destination table). 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (HIVE-2035) Use block-level merge for RCFile if merging intermediate results are needed

Posted by "Ashutosh Chauhan (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HIVE-2035?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13025937#comment-13025937 ] 

Ashutosh Chauhan commented on HIVE-2035:
----------------------------------------

Yeah, correct Ning. I missed jira number by 100. Edited the review request. 
Btw, it will be great if you can take a look at that.

> Use block-level merge for RCFile if merging intermediate results are needed
> ---------------------------------------------------------------------------
>
>                 Key: HIVE-2035
>                 URL: https://issues.apache.org/jira/browse/HIVE-2035
>             Project: Hive
>          Issue Type: Improvement
>            Reporter: Ning Zhang
>            Assignee: He Yongqiang
>
> Currently if hive.merge.mapredfiles and/or hive.merge.mapfile is set to true the intermediate data could be merged using an additional MapReduce job. This could be quite expensive if the data size is large. With HIVE-1950, merging can be done in the RCFile block level so that it bypasses the (de-)compression, (de-)serialization phases. This could improve the merge process significantly. 
> This JIRA should handle the case where the input table is not stored in RCFile, but the destination table is (which requires the intermediate data should be stored in the same format as the destination table). 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira