hudi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From GitBox <>
Subject [GitHub] [incubator-hudi] nsivabalan commented on a change in pull request #1176: [HUDI-430] Adding InlineFileSystem to support embedding any file format as an InlineFile
Date Fri, 20 Mar 2020 01:17:57 GMT
nsivabalan commented on a change in pull request #1176: [HUDI-430] Adding InlineFileSystem
to support embedding any file format as an InlineFile

 File path: hudi-utilities/src/main/java/org/apache/hudi/utilities/inline/fs/
 @@ -0,0 +1,133 @@
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hudi.utilities.inline.fs;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FSDataInputStream;
+import org.apache.hadoop.fs.FSDataOutputStream;
+import org.apache.hadoop.fs.FileStatus;
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.fs.permission.FsPermission;
+import org.apache.hadoop.util.Progressable;
+ * Enables reading any inline file at a given offset and length. This {@link FileSystem}
is used only in read path and does not support
+ * any write apis.
+ * <p>
+ * - Reading an inlined file at a given offset, length, read it out as if it were an independent
file of that length
+ * - Inlined path is of the form "inlinefs:///path/to/outer/file/<outer_file_scheme>/inline_file/?start_offset=<start_offset>&length=<length>
+ * <p>
+ * TODO: The reader/writer may try to use relative paths based on the inlinepath and it may
not work. Need to handle
+ * this gracefully eg. the parquet summary metadata reading. TODO: If this shows promise,
also support directly writing
+ * the inlined file to the underneath file without buffer
+ */
+public class InlineFileSystem extends FileSystem {
+  static final String SCHEME = "inlinefs";
+  private Configuration conf = null;
+  @Override
+  public void initialize(URI name, Configuration conf) throws IOException {
+    super.initialize(name, conf);
+    this.conf = conf;
+  }
+  @Override
+  public URI getUri() {
+    return URI.create(getScheme());
+  }
+  public String getScheme() {
+    return SCHEME;
+  }
+  @Override
+  public FSDataInputStream open(Path inlinePath, int bufferSize) throws IOException {
+    Path outerPath = InLineFSUtils.getOuterfilePathFromInlinePath(inlinePath, getScheme());
 Review comment:
   Within InlineFileSystem, we need to use Path in most places. So even if we introduce a
POJO, I feel it may not be of much use. 1: all arguments to this class is Path. So, we have
to convert to P
   OJO before we do anything. We can't store it as instance variable as well 2: Introducing
a POJO might help in fetching start offset and length which is done only once in this class.
 Not sure how much of value it adds to define a POJO. But open to making change if you feel

This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:

With regards,
Apache Git Services

View raw message