>From Peeyush Gupta <[email protected]>:
Peeyush Gupta has uploaded this change for review. (
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/19807 )
Change subject: WIP: Reading gzip file with multiple gzip streams
......................................................................
WIP: Reading gzip file with multiple gzip streams
Change-Id: I47c2eb600dddba1198a92f5ff7dfc7f2da652c3e
---
M
asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/AwsS3InputStream.java
1 file changed, 46 insertions(+), 1 deletion(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/07/19807/1
diff --git
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/AwsS3InputStream.java
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/AwsS3InputStream.java
index 77897ea..1309578 100644
---
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/AwsS3InputStream.java
+++
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/AwsS3InputStream.java
@@ -21,6 +21,7 @@
import static org.apache.hyracks.api.util.ExceptionUtils.getMessageOrToString;
import java.io.IOException;
+import java.io.InputStream;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@@ -70,7 +71,7 @@
}
// Use gzip stream if needed
if (StringUtils.endsWithIgnoreCase(fileName, ".gz") ||
StringUtils.endsWithIgnoreCase(fileName, ".gzip")) {
- in = new GZIPInputStream(in,
ExternalDataConstants.DEFAULT_BUFFER_SIZE);
+ in = new GZIPInputStream(new AvailableInputStream(in),
ExternalDataConstants.DEFAULT_BUFFER_SIZE);
}
return true;
}
@@ -144,4 +145,39 @@
throw HyracksDataException.create(ex);
}
}
+
+ public class AvailableInputStream extends InputStream {
+ private InputStream is;
+
+ AvailableInputStream(InputStream inputstream) {
+ is = inputstream;
+ }
+
+ public int read() throws IOException {
+ return (is.read());
+ }
+
+ public int read(byte[] b) throws IOException {
+ return (is.read(b));
+ }
+
+ public int read(byte[] b, int off, int len) throws IOException {
+ return (is.read(b, off, len));
+ }
+
+ public void close() throws IOException {
+ is.close();
+ }
+
+ public int available() throws IOException {
+ // Always say that we have 1 more byte in the
+ // buffer, even when we don't
+ int a = is.available();
+ if (a == 0) {
+ return (1);
+ } else {
+ return (a);
+ }
+ }
+ }
}
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/19807
To unsubscribe, or for help writing mail filters, visit
https://asterix-gerrit.ics.uci.edu/settings
Gerrit-Project: asterixdb
Gerrit-Branch: trinity
Gerrit-Change-Id: I47c2eb600dddba1198a92f5ff7dfc7f2da652c3e
Gerrit-Change-Number: 19807
Gerrit-PatchSet: 1
Gerrit-Owner: Peeyush Gupta <[email protected]>
Gerrit-MessageType: newchange