From 4dc8a0e2887bcf57b9ff4086345f265c69fe54ac Mon Sep 17 00:00:00 2001 From: Prasanna Rajaperumal Date: Mon, 27 Mar 2017 14:49:26 -0700 Subject: [PATCH] Create the partition path if it does not exist when listing data files in a partition --- .../hoodie/common/table/view/HoodieTableFileSystemView.java | 2 ++ .../src/main/java/com/uber/hoodie/common/util/FSUtils.java | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/hoodie-common/src/main/java/com/uber/hoodie/common/table/view/HoodieTableFileSystemView.java b/hoodie-common/src/main/java/com/uber/hoodie/common/table/view/HoodieTableFileSystemView.java index 2473ade75bd28..f10e6c2909a2f 100644 --- a/hoodie-common/src/main/java/com/uber/hoodie/common/table/view/HoodieTableFileSystemView.java +++ b/hoodie-common/src/main/java/com/uber/hoodie/common/table/view/HoodieTableFileSystemView.java @@ -117,6 +117,8 @@ public Stream> getEveryVersionInPartition(String partitionP protected FileStatus[] listDataFilesInPartition(String partitionPathStr) { Path partitionPath = new Path(metaClient.getBasePath(), partitionPathStr); try { + // Create the path if it does not exist already + FSUtils.createPathIfNotExists(fs, partitionPath); return fs.listStatus(partitionPath, path -> path.getName() .contains(metaClient.getTableConfig().getROFileFormat().getFileExtension())); } catch (IOException e) { diff --git a/hoodie-common/src/main/java/com/uber/hoodie/common/util/FSUtils.java b/hoodie-common/src/main/java/com/uber/hoodie/common/util/FSUtils.java index 77448d0589101..90aea0e67fb55 100644 --- a/hoodie-common/src/main/java/com/uber/hoodie/common/util/FSUtils.java +++ b/hoodie-common/src/main/java/com/uber/hoodie/common/util/FSUtils.java @@ -350,4 +350,10 @@ public static void deleteOlderRollbackMetaFiles(FileSystem fs, String metaPath, } }); } + + public static void createPathIfNotExists(FileSystem fs, Path partitionPath) throws IOException { + if(!fs.exists(partitionPath)) { + fs.mkdirs(partitionPath); + } + } }