You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by sm...@apache.org on 2015/04/15 22:34:24 UTC
[3/4] drill git commit: DRILL-1512: Refactor AvroFormatPlugin
DRILL-1512: Refactor AvroFormatPlugin
Extend EasyFormatPlugin and remove AvroGroupScan and AvroSubScan
Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/bf3db318
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/bf3db318
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/bf3db318
Branch: refs/heads/master
Commit: bf3db3186ce633ac4a494bad888ae54542175ca4
Parents: 55a9a59
Author: Steven Phillips <sm...@apache.org>
Authored: Wed Apr 15 03:26:04 2015 -0700
Committer: Steven Phillips <sm...@apache.org>
Committed: Wed Apr 15 12:39:46 2015 -0700
----------------------------------------------------------------------
.../drill/exec/store/avro/AvroFormatPlugin.java | 92 ++------
.../drill/exec/store/avro/AvroGroupScan.java | 208 -------------------
.../drill/exec/store/avro/AvroRecordReader.java | 4 +-
.../exec/store/avro/AvroScanBatchCreator.java | 52 -----
.../drill/exec/store/avro/AvroSubScan.java | 142 -------------
5 files changed, 24 insertions(+), 474 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/drill/blob/bf3db318/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroFormatPlugin.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroFormatPlugin.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroFormatPlugin.java
index 4fe1f71..2f487d6 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroFormatPlugin.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroFormatPlugin.java
@@ -18,111 +18,61 @@
package org.apache.drill.exec.store.avro;
import com.google.common.collect.Lists;
-import com.google.common.collect.ImmutableSet;
+import org.apache.drill.common.exceptions.ExecutionSetupException;
import org.apache.drill.common.expression.SchemaPath;
import org.apache.drill.common.logical.StoragePluginConfig;
-import org.apache.drill.exec.physical.base.AbstractGroupScan;
-import org.apache.drill.exec.physical.base.AbstractWriter;
-import org.apache.drill.exec.physical.base.PhysicalOperator;
+import org.apache.drill.exec.ops.FragmentContext;
+import org.apache.drill.exec.proto.UserBitShared.CoreOperatorType;
import org.apache.drill.exec.server.DrillbitContext;
-import org.apache.drill.exec.store.StoragePluginOptimizerRule;
-import org.apache.drill.exec.store.dfs.BasicFormatMatcher;
-import org.apache.drill.exec.store.dfs.FileSelection;
-import org.apache.drill.exec.store.dfs.FormatMatcher;
-import org.apache.drill.exec.store.dfs.FormatPlugin;
-import org.apache.drill.exec.store.dfs.shim.DrillFileSystem;
+import org.apache.drill.exec.store.RecordReader;
+import org.apache.drill.exec.store.RecordWriter;
+import org.apache.drill.exec.store.dfs.DrillFileSystem;
+import org.apache.drill.exec.store.dfs.easy.EasyFormatPlugin;
+import org.apache.drill.exec.store.dfs.easy.EasyWriter;
+import org.apache.drill.exec.store.dfs.easy.FileWork;
import java.io.IOException;
import java.util.List;
-import java.util.Set;
/**
* Format plugin for Avro data files.
*/
-public class AvroFormatPlugin implements FormatPlugin {
-
- private final String name;
- private final DrillbitContext context;
- private final DrillFileSystem fs;
- private final StoragePluginConfig storagePluginConfig;
- private final AvroFormatConfig formatConfig;
- private final BasicFormatMatcher matcher;
+public class AvroFormatPlugin extends EasyFormatPlugin<AvroFormatConfig> {
public AvroFormatPlugin(String name, DrillbitContext context, DrillFileSystem fs,
StoragePluginConfig storagePluginConfig) {
this(name, context, fs, storagePluginConfig, new AvroFormatConfig());
}
- public AvroFormatPlugin(String name, DrillbitContext context, DrillFileSystem fs,
- StoragePluginConfig storagePluginConfig, AvroFormatConfig formatConfig) {
- this.name = name;
- this.context = context;
- this.fs = fs;
- this.storagePluginConfig = storagePluginConfig;
- this.formatConfig = formatConfig;
-
- // XXX - What does 'compressible' mean in this context?
- this.matcher = new BasicFormatMatcher(this, fs, Lists.newArrayList("avro"), false);
+ public AvroFormatPlugin(String name, DrillbitContext context, DrillFileSystem fs, StoragePluginConfig config, AvroFormatConfig formatPluginConfig) {
+ super(name, context, fs, config, formatPluginConfig, true, false, false, false, Lists.newArrayList("avro"), "avro");
}
@Override
- public boolean supportsRead() {
+ public boolean supportsPushDown() {
return true;
}
@Override
- public boolean supportsWrite() {
- return false;
- }
-
- @Override
- public FormatMatcher getMatcher() {
- return matcher;
- }
-
- @Override
- public AbstractWriter getWriter(final PhysicalOperator child, final String location) throws IOException {
- throw new UnsupportedOperationException("Unimplemented");
- }
-
- @Override
- public AbstractGroupScan getGroupScan(final FileSelection selection) throws IOException {
- return new AvroGroupScan(selection.getFileStatusList(fs), this, selection.selectionRoot, null);
- }
-
- @Override
- public AbstractGroupScan getGroupScan(final FileSelection selection, final List<SchemaPath> columns) throws IOException {
- return new AvroGroupScan(selection.getFileStatusList(fs), this, selection.selectionRoot, columns);
+ public RecordReader getRecordReader(FragmentContext context, DrillFileSystem dfs, FileWork fileWork, List<SchemaPath> columns) throws ExecutionSetupException {
+ return new AvroRecordReader(context, fileWork.getPath(), dfs, columns);
}
@Override
- public Set<StoragePluginOptimizerRule> getOptimizerRules() {
- return ImmutableSet.of();
+ public RecordWriter getRecordWriter(FragmentContext context, EasyWriter writer) throws IOException {
+ throw new UnsupportedOperationException("unimplemented");
}
@Override
- public AvroFormatConfig getConfig() {
- return formatConfig;
+ public int getReaderOperatorType() {
+ return CoreOperatorType.AVRO_SUB_SCAN_VALUE;
}
@Override
- public StoragePluginConfig getStorageConfig() {
- return storagePluginConfig;
+ public int getWriterOperatorType() {
+ throw new UnsupportedOperationException("unimplemented");
}
- @Override
- public DrillFileSystem getFileSystem() {
- return fs;
- }
- @Override
- public DrillbitContext getContext() {
- return context;
- }
-
- @Override
- public String getName() {
- return name;
- }
}
http://git-wip-us.apache.org/repos/asf/drill/blob/bf3db318/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroGroupScan.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroGroupScan.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroGroupScan.java
deleted file mode 100644
index fcc1f94..0000000
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroGroupScan.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/**
- * 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
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.drill.exec.store.avro;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonTypeName;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JacksonInject;
-import com.fasterxml.jackson.annotation.JsonCreator;
-
-import org.apache.drill.common.exceptions.ExecutionSetupException;
-import org.apache.drill.common.exceptions.PhysicalOperatorSetupException;
-import org.apache.drill.common.expression.SchemaPath;
-import org.apache.drill.common.logical.FormatPluginConfig;
-import org.apache.drill.common.logical.StoragePluginConfig;
-import org.apache.drill.exec.physical.EndpointAffinity;
-import org.apache.drill.exec.physical.base.GroupScan;
-import org.apache.drill.exec.physical.base.AbstractGroupScan;
-import org.apache.drill.exec.physical.base.ScanStats;
-import org.apache.drill.exec.physical.base.PhysicalOperator;
-import org.apache.drill.exec.proto.CoordinationProtos;
-import org.apache.drill.exec.store.StoragePluginRegistry;
-import org.apache.drill.exec.store.dfs.ReadEntryWithPath;
-//import org.apache.drill.exec.store.avro.AvroSubScan.AvroSubScanSpec;
-
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.fs.FileSystem;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.List;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-
-/**
- * Group scan implementation for Avro data files.
- */
-@JsonTypeName("avro-scan")
-public class AvroGroupScan extends AbstractGroupScan {
-
- static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(AvroGroupScan.class);
-
- private final AvroFormatPlugin formatPlugin;
- private final AvroFormatConfig formatConfig;
- private final List<SchemaPath> columns;
- private final FileSystem fs;
- private final List<ReadEntryWithPath> entries;
- private final String selectionRoot;
-
- //private Map<Integer, List<AvroSubScanSpec>> endpointMappings;
-
- private List<EndpointAffinity> endpointAffinities;
-
- @JsonCreator
- public AvroGroupScan(@JsonProperty("entries") final List<ReadEntryWithPath> entries,
- @JsonProperty("storage") final StoragePluginConfig storageConfig,
- @JsonProperty("format") final FormatPluginConfig formatConfig,
- @JacksonInject final StoragePluginRegistry engineRegistry,
- @JsonProperty("columns") final List<SchemaPath> columns,
- @JsonProperty("selectionRoot") final String selectionRoot) throws ExecutionSetupException {
-
- this.columns = columns;
- final AvroFormatConfig afc;
- if (formatConfig == null) {
- afc = new AvroFormatConfig();
- } else {
- afc = (AvroFormatConfig) formatConfig;
- }
- Preconditions.checkNotNull(storageConfig);
- Preconditions.checkNotNull(afc);
- this.formatPlugin = (AvroFormatPlugin) engineRegistry.getFormatPlugin(storageConfig, afc);
- Preconditions.checkNotNull(this.formatPlugin);
- this.fs = formatPlugin.getFileSystem().getUnderlying();
- this.formatConfig = formatPlugin.getConfig();
- this.entries = entries;
- this.selectionRoot = selectionRoot;
- }
-
- public AvroGroupScan(final List<FileStatus> files, final AvroFormatPlugin formatPlugin,
- final String selectionRoot, final List<SchemaPath> columns) throws IOException {
-
- this.formatPlugin = formatPlugin;
- this.columns = columns;
- this.formatConfig = formatPlugin.getConfig();
- this.fs = formatPlugin.getFileSystem().getUnderlying();
- this.selectionRoot = selectionRoot;
-
- this.entries = Lists.newArrayList();
- for (final FileStatus fs : files) {
- entries.add(new ReadEntryWithPath(fs.getPath().toString()));
- }
- }
-
- @JsonProperty("format")
- public AvroFormatConfig getFormatConfig() {
- return this.formatConfig;
- }
-
- @JsonProperty("storage")
- public StoragePluginConfig getEngineConfig() {
- return this.formatPlugin.getStorageConfig();
- }
-
- private AvroGroupScan(final AvroGroupScan that, final List<SchemaPath> columns) {
- this.columns = (columns == null) ? that.columns : columns;
- this.entries = that.entries;
- this.formatConfig = that.formatConfig;
- this.formatPlugin = that.formatPlugin;
- this.fs = that.fs;
- this.selectionRoot = that.selectionRoot;
-
- // XXX - DON'T FORGET TO ADD THESE AFTER WE'VE IMPLEMENTED AFFINITY
- //this.endpointAffinities = that.endpointAffinities;
- //this.mappings = that.mappings;
- //this.rowCount = that.rowCount;
- //this.rowGroupInfos = that.rowGroupInfos;
- //this.columnValueCounts = that.columnValueCounts;
- }
-
- @Override
- public void applyAssignments(final List<CoordinationProtos.DrillbitEndpoint> endpoints) throws PhysicalOperatorSetupException {
- // XXX - Unimplemented
- logger.warn("AvroGroupScan.applyAssignments() is not implemented");
- }
-
- @Override
- public AvroSubScan getSpecificScan(final int minorFragmentId) throws ExecutionSetupException {
-
- final AvroSubScan sub = new AvroSubScan(formatPlugin, columns, selectionRoot);
-
- // XXX - This is a temporary hack just to get something working. Need to revisit sub-scan specs
- // once we work out affinity and endpoints.
- sub.setEntry(entries.get(0));
- sub.setFileSystem(fs);
-
- return sub;
- }
-
- @Override
- public int getMaxParallelizationWidth() {
- // XXX - Finish
- return 1;
- }
-
- @Override
- public ScanStats getScanStats() {
- // XXX - Is 0 the correct value for second arg? What if I don't know the row count a priori?
- return new ScanStats(ScanStats.GroupScanProperty.NO_EXACT_ROW_COUNT, 0, 1, 1);
- }
-
- @Override
- public List<EndpointAffinity> getOperatorAffinity() {
- // XXX - Unimplemented
- if (endpointAffinities != null) {
- return endpointAffinities;
- }
- return Collections.emptyList();
- }
-
- @Override
- @JsonIgnore
- public PhysicalOperator getNewWithChildren(final List<PhysicalOperator> children) throws ExecutionSetupException {
- Preconditions.checkArgument(children.isEmpty());
- return new AvroGroupScan(this, null);
- }
-
- @Override
- public String getDigest() {
- return toString();
- }
-
- @Override
- public String toString() {
- return "AvroGroupScan [entries=" + entries +
- ", selectionRoot=" + selectionRoot +
- ", columns=" + columns + "]";
- }
-
- @Override
- public GroupScan clone(final List<SchemaPath> columns) {
- return new AvroGroupScan(this, columns);
- }
-
- @JsonIgnore
- public boolean canPushdownProjects(final List<SchemaPath> columns) {
- return true;
- }
-
- public List<ReadEntryWithPath> getEntries() {
- return entries;
- }
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/bf3db318/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroRecordReader.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroRecordReader.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroRecordReader.java
index 3b7697d..489a989 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroRecordReader.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroRecordReader.java
@@ -73,6 +73,7 @@ public class AvroRecordReader extends AbstractRecordReader {
private DataFileReader<GenericContainer> reader = null;
private OperatorContext operatorContext;
+ private FileSystem fs;
private static final int DEFAULT_BATCH_SIZE = 1000;
@@ -91,6 +92,7 @@ public class AvroRecordReader extends AbstractRecordReader {
hadoop = new Path(inputPath);
buffer = fragmentContext.getManagedBuffer();
+ this.fs = fileSystem;
setColumns(projectedColumns);
}
@@ -101,7 +103,7 @@ public class AvroRecordReader extends AbstractRecordReader {
writer = new VectorContainerWriter(output);
try {
- reader = new DataFileReader<>(new FsInput(hadoop, new Configuration()), new GenericDatumReader<GenericContainer>());
+ reader = new DataFileReader<>(new FsInput(hadoop, fs.getConf()), new GenericDatumReader<GenericContainer>());
} catch (IOException e) {
throw new ExecutionSetupException(e);
}
http://git-wip-us.apache.org/repos/asf/drill/blob/bf3db318/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroScanBatchCreator.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroScanBatchCreator.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroScanBatchCreator.java
deleted file mode 100644
index 42c8e99..0000000
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroScanBatchCreator.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * 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
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.drill.exec.store.avro;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-
-import org.apache.drill.common.exceptions.ExecutionSetupException;
-import org.apache.drill.common.expression.SchemaPath;
-import org.apache.drill.exec.ops.FragmentContext;
-import org.apache.drill.exec.physical.impl.BatchCreator;
-import org.apache.drill.exec.physical.impl.ScanBatch;
-import org.apache.drill.exec.record.RecordBatch;
-import org.apache.drill.exec.store.RecordReader;
-
-import java.util.List;
-
-/**
- * Batch creator for Avro scans.
- */
-public class AvroScanBatchCreator implements BatchCreator<AvroSubScan> {
-
-
- @Override
- public RecordBatch getBatch(final FragmentContext context, final AvroSubScan subScan,
- final List<RecordBatch> children) throws ExecutionSetupException {
-
- Preconditions.checkArgument(children.isEmpty());
- List<SchemaPath> columns = subScan.getColumns();
- List<RecordReader> readers = Lists.newArrayList();
-
- readers.add(new AvroRecordReader(context, subScan.getEntry().getPath(), subScan.getFileSystem(), columns));
-
- return new ScanBatch(subScan, context, readers.iterator());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/drill/blob/bf3db318/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroSubScan.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroSubScan.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroSubScan.java
deleted file mode 100644
index 0a579aa..0000000
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroSubScan.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/**
- * 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
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.drill.exec.store.avro;
-
-import com.fasterxml.jackson.annotation.JacksonInject;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeName;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-import org.apache.drill.common.exceptions.ExecutionSetupException;
-import org.apache.drill.common.expression.SchemaPath;
-import org.apache.drill.common.logical.FormatPluginConfig;
-import org.apache.drill.common.logical.StoragePluginConfig;
-import org.apache.drill.exec.physical.base.AbstractBase;
-import org.apache.drill.exec.physical.base.PhysicalOperator;
-import org.apache.drill.exec.physical.base.PhysicalVisitor;
-import org.apache.drill.exec.physical.base.SubScan;
-import org.apache.drill.exec.proto.UserBitShared;
-import org.apache.drill.exec.store.StoragePluginRegistry;
-
-import com.google.common.collect.Iterators;
-import com.google.common.base.Preconditions;
-import org.apache.drill.exec.store.dfs.ReadEntryWithPath;
-import org.apache.hadoop.fs.FileSystem;
-
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Contains information for reading a single Avro row group from HDFS.
- */
-@JsonTypeName("avro-sub-scan")
-public class AvroSubScan extends AbstractBase implements SubScan {
-
- static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(AvroSubScan.class);
-
- private final AvroFormatPlugin formatPlugin;
- private final AvroFormatConfig formatConfig;
- private final List<SchemaPath> columns;
- private final String selectionRoot;
-
- private ReadEntryWithPath entry;
- private FileSystem fs;
-
- @JsonCreator
- public AvroSubScan(@JacksonInject final StoragePluginRegistry registry,
- @JsonProperty("storage") final StoragePluginConfig storageConfig,
- @JsonProperty("format") final FormatPluginConfig formatConfig,
- @JsonProperty("columns") final List<SchemaPath> columns,
- @JsonProperty("selectionRoot") final String selectionRoot) throws ExecutionSetupException {
- this((AvroFormatPlugin) registry.getFormatPlugin(Preconditions.checkNotNull(storageConfig),
- formatConfig == null ? new AvroFormatConfig() : formatConfig), columns, selectionRoot);
- }
-
- public AvroSubScan(final AvroFormatPlugin formatPlugin, final List<SchemaPath> columns,
- final String selectionRoot) {
- this.formatPlugin = Preconditions.checkNotNull(formatPlugin);
- this.formatConfig = formatPlugin.getConfig();
- this.columns = columns;
- this.selectionRoot = selectionRoot;
- }
-
- @JsonProperty("storage")
- public StoragePluginConfig getEngineConfig() {
- return formatPlugin.getStorageConfig();
- }
-
- @JsonProperty("format")
- public AvroFormatConfig getFormatConfig() {
- return formatConfig;
- }
-
- @Override
- public <T, X, E extends Throwable> T accept(final PhysicalVisitor<T, X, E> physicalVisitor, final X value) throws E {
- return physicalVisitor.visitSubScan(this, value);
- }
-
- @Override
- public PhysicalOperator getNewWithChildren(final List<PhysicalOperator> children) throws ExecutionSetupException {
- Preconditions.checkArgument(children.isEmpty());
- return new AvroSubScan(formatPlugin, columns, selectionRoot);
- }
-
- @Override
- public int getOperatorType() {
- return UserBitShared.CoreOperatorType.AVRO_ROW_GROUP_SCAN_VALUE;
- }
-
- @Override
- public Iterator<PhysicalOperator> iterator() {
- return Iterators.emptyIterator();
- }
-
- @JsonIgnore
- public List<SchemaPath> getColumns() {
- return columns;
- }
-
- /*
- public static class AvroSubScanSpec {
-
- }
- */
-
- /** XXX - temp hacks **/
-
- @JsonIgnore
- public void setEntry(ReadEntryWithPath entry) {
- this.entry = entry;
- }
-
- @JsonIgnore
- public ReadEntryWithPath getEntry() {
- return entry;
- }
-
- @JsonIgnore
- public void setFileSystem(FileSystem fs) {
- this.fs = fs;
- }
-
- @JsonIgnore
- public FileSystem getFileSystem() {
- return fs;
- }
-}