diff --git a/java/shims/src/java/org/apache/orc/impl/HadoopShims.java b/java/shims/src/java/org/apache/orc/impl/HadoopShims.java index 2ae0364f25e..d8e32296547 100644 --- a/java/shims/src/java/org/apache/orc/impl/HadoopShims.java +++ b/java/shims/src/java/org/apache/orc/impl/HadoopShims.java @@ -22,6 +22,8 @@ import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.util.VersionInfo; import org.apache.orc.EncryptionAlgorithm; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.Closeable; import java.io.IOException; @@ -133,12 +135,18 @@ ByteBuffer readBuffer(int maxLength, boolean endVariableLengthBlock(OutputStream output) throws IOException; default boolean supportVectoredIO() { - // HADOOP-18103 is available since Apache Hadoop 3.3.5+ - String[] versionParts = VersionInfo.getVersion().split("[.]"); - int major = Integer.parseInt(versionParts[0]); - int minor = Integer.parseInt(versionParts[1]); - int patch = Integer.parseInt(versionParts[2]); - return major == 3 && (minor > 3 || (minor == 3 && patch > 4)); + try { + // HADOOP-18103 is available since Apache Hadoop 3.3.5+ + String[] versionParts = VersionInfo.getVersion().split("[.]"); + int major = Integer.parseInt(versionParts[0]); + int minor = Integer.parseInt(versionParts[1]); + int patch = Integer.parseInt(versionParts[2]); + return major == 3 && (minor > 3 || (minor == 3 && patch > 4)); + } catch (final NumberFormatException e) { + // There could be cases where we are not able to parse the version + // Here we are defaulting to the non vectoredIO if that is the case + return false; + } } /**