[ 
https://issues.apache.org/jira/browse/HIVE-4486?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gopal V updated HIVE-4486:
--------------------------

    Summary: FetchOperator slows down SMB map joins by 50% when there are many 
partitions  (was: FetchOperator slows down SMB map joins with many files)
    
> FetchOperator slows down SMB map joins by 50% when there are many partitions
> ----------------------------------------------------------------------------
>
>                 Key: HIVE-4486
>                 URL: https://issues.apache.org/jira/browse/HIVE-4486
>             Project: Hive
>          Issue Type: Bug
>          Components: Query Processor
>         Environment: Ubuntu LXC 12.10
>            Reporter: Gopal V
>            Priority: Minor
>
> While looking at log files for SMB joins in hive, it was noticed that the 
> actual join op didn't show up as a significant fraction of the time spent. 
> Most of the time was spent parsing configuration files.
> To confirm, I put log lines in the HiveConf constructor and eventually made 
> the following edit to the code
> {code}
> --- ql/src/java/org/apache/hadoop/hive/ql/exec/FetchOperator.java
> +++ ql/src/java/org/apache/hadoop/hive/ql/exec/FetchOperator.java
> @@ -648,8 +648,7 @@ public ObjectInspector getOutputObjectInspector() throws 
> HiveException {
>     * @return list of file status entries
>     */
>    private FileStatus[] listStatusUnderPath(FileSystem fs, Path p) throws 
> IOException {
> -    HiveConf hiveConf = new HiveConf(job, FetchOperator.class);
> -    boolean recursive = 
> hiveConf.getBoolVar(HiveConf.ConfVars.HADOOPMAPREDINPUTDIRRECURSIVE);
> +    boolean recursive = false;
>      if (!recursive) {
>        return fs.listStatus(p);
>      }
> {code}
> And re-ran my query to compare timings.
> ||Before||After||
> |Cumulative CPU| 731.07 sec|386.0 sec|
> |Total time | 347.66 seconds | 218.855 seconds | 
> |
> The query used was 
> {code}INSERT OVERWRITE LOCAL DIRECTORY
> '/grid/0/smb/'
> select inv_item_sk
> from
>      inventory inv
>      join store_sales ss on (ss.ss_item_sk = inv.inv_item_sk)
> limit 100000
> ;
> {code}
> On a scale=2 tpcds data-set, where both store_sales & inventory are bucketed 
> into 4 buckets, with store_sales split into 7 partitions and inventory into 
> 261 partitions.
> 78% of all CPU time was spent within new HiveConf(). The yourkit profiler 
> runs are attached.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to