blob: 0a79e77a717a2dd076a9d6768ef00c3df05fc298 [file]
/**
* Copyright 2012 Twitter, Inc.
*
* Licensed 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 parquet.cascading;
import java.io.IOException;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapred.OutputCollector;
import org.apache.hadoop.mapred.RecordReader;
import org.apache.thrift.TBase;
import parquet.hadoop.ParquetInputFormat;
import parquet.hadoop.mapred.DeprecatedParquetInputFormat;
import parquet.hadoop.thrift.ThriftReadSupport;
import parquet.thrift.ThriftRecordConverter;
import cascading.flow.FlowProcess;
import cascading.scheme.SinkCall;
import cascading.tap.Tap;
public class ParquetTBaseScheme<T extends TBase> extends ParquetValueScheme<T> {
@SuppressWarnings("rawtypes")
@Override
public void sinkConfInit(FlowProcess<JobConf> arg0,
Tap<JobConf, RecordReader, OutputCollector> arg1, JobConf arg2) {
throw new UnsupportedOperationException("ParquetTBaseScheme does not support Sinks");
}
/**
* TODO: currently we cannot write Parquet files from TBase objects.
* All the underlying stuff exists, just need to link it.
*/
@Override
public boolean isSink() { return false; }
@SuppressWarnings("rawtypes")
@Override
public void sourceConfInit(FlowProcess<JobConf> fp,
Tap<JobConf, RecordReader, OutputCollector> tap, JobConf jobConf) {
jobConf.setInputFormat(DeprecatedParquetInputFormat.class);
ParquetInputFormat.setReadSupportClass(jobConf, ThriftReadSupport.class);
ThriftReadSupport.setRecordConverterClass(jobConf, ThriftRecordConverter.class);
}
@Override
public void sink(FlowProcess<JobConf> arg0, SinkCall<Object[], OutputCollector> arg1)
throws IOException {
throw new UnsupportedOperationException("ParquetTBaseScheme does not support Sinks");
}
}