[ 
https://issues.apache.org/jira/browse/HIVE-17257?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16117565#comment-16117565
 ] 

Chao Sun commented on HIVE-17257:
---------------------------------

[~kellyzly]: the empty files maybe generated if the result set is empty and if 
you have multiple mapper/reducers with file sink. Example:
{code}
set hive.execution.engine=spark;
set hive.auto.convert.join=false;
set mapreduce.job.reduces=1000;
create table dummy (a string);
insert overwrite directory '/tmp/test' select src.key from src join dummy on 
src.key = dummy.a;
{code}
The above will generate 1000 empty files in /tmp/test.

[~xuefuz]: I need to revise the patch. There's an issue where HoS won't launch 
task for the final merge job since the input data is empty.

> Hive should merge empty files
> -----------------------------
>
>                 Key: HIVE-17257
>                 URL: https://issues.apache.org/jira/browse/HIVE-17257
>             Project: Hive
>          Issue Type: Bug
>            Reporter: Chao Sun
>            Assignee: Chao Sun
>         Attachments: HIVE-17257.0.patch
>
>
> Currently if merging file option is turned on and the dest dir contains large 
> number of empty files, Hive will not trigger merge task:
> {code}
>   private long getMergeSize(FileSystem inpFs, Path dirPath, long avgSize) {
>     AverageSize averageSize = getAverageSize(inpFs, dirPath);
>     if (averageSize.getTotalSize() <= 0) {
>       return -1;
>     }
>     if (averageSize.getNumFiles() <= 1) {
>       return -1;
>     }
>     if (averageSize.getTotalSize()/averageSize.getNumFiles() < avgSize) {
>       return averageSize.getTotalSize();
>     }
>     return -1;
>   }
> {code}
> This logic doesn't seem right as the it seems better to combine these empty 
> files into one.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to