You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mapreduce-issues@hadoop.apache.org by "Jason Lowe (JIRA)" <ji...@apache.org> on 2014/02/14 20:16:20 UTC

[jira] [Commented] (MAPREDUCE-5756) CombineFileInputFormat.getSplits() including directories in its results

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

Jason Lowe commented on MAPREDUCE-5756:
---------------------------------------

I'm not sure if the filtering of directories in the 1.x version of CombineFileInputFormat was intentional.  Seems like it's an easy way to silently drop data if the user assumed everything under the specified directory would be part of the input.  However if it's always worked like that in 1.x and people are expecting that behavior then arguably 2.x needs to match it for backwards compatibility or risk breaking things (like Hive in this case).

> CombineFileInputFormat.getSplits() including directories in its results
> -----------------------------------------------------------------------
>
>                 Key: MAPREDUCE-5756
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-5756
>             Project: Hadoop Map/Reduce
>          Issue Type: Bug
>            Reporter: Jason Dere
>
> Trying to track down HIVE-6401, where we see some "is not a file" errors because getSplits() is giving us directories.  I believe the culprit is FileInputFormat.listStatus():
> {code}
>                 if (recursive && stat.isDirectory()) {
>                   addInputPathRecursively(result, fs, stat.getPath(),
>                       inputFilter);
>                 } else {
>                   result.add(stat);
>                 }
> {code}
> Which seems to be allowing directories to be added to the results if recursive is false.  Is this meant to return directories? If not, I think it should look like this:
> {code}
>                 if (stat.isDirectory()) {
>                  if (recursive) {
>                   addInputPathRecursively(result, fs, stat.getPath(),
>                       inputFilter);
>                  }
>                 } else {
>                   result.add(stat);
>                 }
> {code}



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)