diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/MapJoinTableContainerSerDe.java ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/MapJoinTableContainerSerDe.java index 25088ff..abdb6af 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/MapJoinTableContainerSerDe.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/MapJoinTableContainerSerDe.java @@ -32,6 +32,7 @@ import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.serde2.SerDe; import org.apache.hadoop.hive.serde2.SerDeException; +import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.io.Writable; @SuppressWarnings("deprecation") @@ -118,7 +119,7 @@ public MapJoinPersistableTableContainer load( for (FileStatus fileStatus: fileStatuses) { Path filePath = fileStatus.getPath(); - if (fileStatus.isDirectory()) { + if (ShimLoader.getHadoopShims().isDirectory(fileStatus)) { throw new HiveException("Error, not a file: " + filePath); } InputStream is = null; diff --git shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java index f881a7a..fde9dd9 100644 --- shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java +++ shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java @@ -562,6 +562,11 @@ public Path getCurrentTrashPath(Configuration conf, FileSystem fs) { return null; } + @Override + public boolean isDirectory(FileStatus fileStatus) { + return fileStatus.isDir(); + } + /** * Returns a shim to wrap KerberosName */ diff --git shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java index 78ef3c0..7b719d3 100644 --- shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java +++ shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java @@ -895,6 +895,11 @@ public KerberosNameShim getKerberosNameShim(String name) throws IOException { return new KerberosNameShim(name); } + @Override + public boolean isDirectory(FileStatus fileStatus) { + return fileStatus.isDirectory(); + } + /** * Shim for KerberosName */ diff --git shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java index 8853e44..f1743ae 100644 --- shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java +++ shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java @@ -523,6 +523,11 @@ public void checkFileAccess(FileSystem fs, FileStatus status, FsAction action) public KerberosNameShim getKerberosNameShim(String name) throws IOException; /** + * Check whether file is directory. + */ + boolean isDirectory(FileStatus fileStatus); + + /** * Shim for KerberosName */ public interface KerberosNameShim {