Impala
Impalaistheopensource,nativeanalyticdatabaseforApacheHadoop.
|
#include <hdfs-sequence-scanner.h>
Classes | |
struct | RecordLocation |
Struct for record locations and lens in compressed blocks. More... | |
struct | SeqFileHeader |
Data that is fixed across headers. This struct is shared between scan ranges. More... | |
Public Member Functions | |
HdfsSequenceScanner (HdfsScanNode *scan_node, RuntimeState *state) | |
virtual | ~HdfsSequenceScanner () |
virtual Status | Prepare (ScannerContext *context) |
Implementation of HdfsScanner interface. More... | |
virtual void | Close () |
virtual Status | ProcessSplit () |
Static Public Member Functions | |
static llvm::Function * | Codegen (HdfsScanNode *, const std::vector< ExprContext * > &conjunct_ctxs) |
Codegen writing tuples and evaluating predicates. More... | |
static Status | IssueInitialRanges (HdfsScanNode *scan_node, const std::vector< HdfsFileDesc * > &files) |
Issue the initial ranges for all sequence container files. More... | |
Static Public Attributes | |
static const uint8_t | SEQFILE_VERSION_HEADER [4] = {'S', 'E', 'Q', 6} |
static const int | FILE_BLOCK_SIZE = 4096 |
static const char * | LLVM_CLASS_NAME = "class.impala::HdfsScanner" |
Protected Types | |
typedef int(* | WriteTuplesFn )(HdfsScanner *, MemPool *, TupleRow *, int, FieldLocation *, int, int, int, int) |
Protected Member Functions | |
virtual FileHeader * | AllocateFileHeader () |
Implementation of sequence container super class methods. More... | |
virtual Status | ReadFileHeader () |
virtual Status | InitNewRange () |
Reset internal state for a new scan range. More... | |
virtual Status | ProcessRange () |
virtual THdfsFileFormat::type | file_format () const |
Returns type of scanner: e.g. rcfile, seqfile. More... | |
Status | ReadSync () |
Status | SkipToSync (const uint8_t *sync, int sync_size) |
bool | finished () |
Status | InitializeWriteTuplesFn (HdfsPartitionDescriptor *partition, THdfsFileFormat::type type, const std::string &scanner_name) |
void | StartNewRowBatch () |
Set batch_ to a new row batch and update tuple_mem_ accordingly. More... | |
int | GetMemory (MemPool **pool, Tuple **tuple_mem, TupleRow **tuple_row_mem) |
Status | CommitRows (int num_rows) |
void | AddFinalRowBatch () |
void | AttachPool (MemPool *pool, bool commit_batch) |
bool IR_ALWAYS_INLINE | EvalConjuncts (TupleRow *row) |
int | WriteEmptyTuples (RowBatch *row_batch, int num_tuples) |
int | WriteEmptyTuples (ScannerContext *context, TupleRow *tuple_row, int num_tuples) |
Write empty tuples and commit them to the context object. More... | |
int | WriteAlignedTuples (MemPool *pool, TupleRow *tuple_row_mem, int row_size, FieldLocation *fields, int num_tuples, int max_added_tuples, int slots_per_tuple, int row_start_indx) |
Status | UpdateDecompressor (const THdfsCompression::type &compression) |
Status | UpdateDecompressor (const std::string &codec) |
bool | ReportTupleParseError (FieldLocation *fields, uint8_t *errors, int row_idx) |
bool | WriteCompleteTuple (MemPool *pool, FieldLocation *fields, Tuple *tuple, TupleRow *tuple_row, Tuple *template_tuple, uint8_t *error_fields, uint8_t *error_in_row) |
void | ReportColumnParseError (const SlotDescriptor *desc, const char *data, int len) |
void | InitTuple (Tuple *template_tuple, Tuple *tuple) |
Tuple * | next_tuple (Tuple *t) const |
TupleRow * | next_row (TupleRow *r) const |
ExprContext * | GetConjunctCtx (int idx) const |
Static Protected Member Functions | |
static llvm::Function * | CodegenWriteCompleteTuple (HdfsScanNode *, LlvmCodeGen *, const std::vector< ExprContext * > &conjunct_ctxs) |
static llvm::Function * | CodegenWriteAlignedTuples (HdfsScanNode *, LlvmCodeGen *, llvm::Function *write_tuple_fn) |
Protected Attributes | |
FileHeader * | header_ |
File header for this scan range. This is not owned by the parent scan node. More... | |
bool | only_parsing_header_ |
If true, this scanner object is only for processing the header. More... | |
HdfsScanNode * | scan_node_ |
The scan node that started this scanner. More... | |
RuntimeState * | state_ |
RuntimeState for error reporting. More... | |
ScannerContext * | context_ |
Context for this scanner. More... | |
ScannerContext::Stream * | stream_ |
The first stream for context_. More... | |
std::vector< ExprContext * > | conjunct_ctxs_ |
Tuple * | template_tuple_ |
int | tuple_byte_size_ |
Fixed size of each tuple, in bytes. More... | |
Tuple * | tuple_ |
Current tuple pointer into tuple_mem_. More... | |
RowBatch * | batch_ |
uint8_t * | tuple_mem_ |
The tuple memory of batch_. More... | |
int | num_errors_in_file_ |
number of errors in current file More... | |
boost::scoped_ptr< TextConverter > | text_converter_ |
Helper class for converting text to other types;. More... | |
int32_t | num_null_bytes_ |
Number of null bytes in the tuple. More... | |
Status | parse_status_ |
boost::scoped_ptr< Codec > | decompressor_ |
Decompressor class to use, if any. More... | |
THdfsCompression::type | decompression_type_ |
The most recently used decompression type. More... | |
boost::scoped_ptr< MemPool > | data_buffer_pool_ |
RuntimeProfile::Counter * | decompress_timer_ |
Time spent decompressing bytes. More... | |
WriteTuplesFn | write_tuples_fn_ |
Jitted write tuples function pointer. Null if codegen is disabled. More... | |
Static Protected Attributes | |
static const int | SYNC_HASH_SIZE = 16 |
Size of the sync hash field. More... | |
static const int | HEADER_SIZE = 1024 |
static const int | SYNC_MARKER = -1 |
Sync indicator. More... | |
Private Member Functions | |
Status | ReadBlockHeader () |
Status | ProcessBlockCompressedScanRange () |
Status | ReadCompressedBlock () |
Status | ProcessDecompressedBlock () |
Status | GetRecord (uint8_t **record_ptr, int64_t *record_len) |
virtual void | LogRowParseError (int row_idx, std::stringstream *) |
Private Attributes | |
boost::scoped_ptr < DelimitedTextParser > | delimited_text_parser_ |
Helper class for picking fields and rows from delimited text. More... | |
std::vector< FieldLocation > | field_locations_ |
std::vector< RecordLocation > | record_locations_ |
int | current_block_length_ |
Length of the current sequence file block (or record). More... | |
int | current_key_length_ |
Length of the current key. This is specified as 4 bytes in the format description. More... | |
uint8_t * | unparsed_data_buffer_ |
Buffer for data read from HDFS or from decompressing the HDFS data. More... | |
int64_t | num_buffered_records_in_compressed_block_ |
Number of buffered records unparsed_data_buffer_ from block compressed data. More... | |
uint8_t * | next_record_in_compressed_block_ |
Next record from block compressed data. More... | |
Static Private Attributes | |
static const int | MAX_BLOCK_SIZE = (1024 * 1024 * 1024) |
static const char *const | SEQFILE_VALUE_CLASS_NAME |
Definition at line 156 of file hdfs-sequence-scanner.h.
|
protectedinherited |
Matching typedef for WriteAlignedTuples for codegen. Refer to comments for that function.
Definition at line 212 of file hdfs-scanner.h.
HdfsSequenceScanner::HdfsSequenceScanner | ( | HdfsScanNode * | scan_node, |
RuntimeState * | state | ||
) |
Definition at line 40 of file hdfs-sequence-scanner.cc.
|
virtual |
Definition at line 46 of file hdfs-sequence-scanner.cc.
|
protectedinherited |
Attach all remaining resources from context_ to batch_ and send batch_ to the scan node. This must be called after all rows have been committed and no further resources are needed from context_ (in practice this will happen in each scanner subclass's Close() implementation).
Definition at line 145 of file hdfs-scanner.cc.
References impala::HdfsScanNode::AddMaterializedRowBatch(), impala::HdfsScanner::batch_, impala::HdfsScanner::context_, impala::ScannerContext::ReleaseCompletedResources(), and impala::HdfsScanner::scan_node_.
Referenced by impala::HdfsTextScanner::Close(), impala::BaseSequenceScanner::Close(), and impala::HdfsParquetScanner::Close().
|
protectedvirtual |
Implementation of sequence container super class methods.
Implements impala::BaseSequenceScanner.
Definition at line 99 of file hdfs-sequence-scanner.cc.
Release all memory in 'pool' to batch_. If commit_batch is true, the row batch will be committed. commit_batch should be true if the attached pool is expected to be non-trivial (i.e. a decompression buffer) to minimize scanner mem usage.
Definition at line 256 of file hdfs-scanner.h.
References impala::MemPool::AcquireData(), impala::HdfsScanner::batch_, impala::HdfsScanner::CommitRows(), and impala::RowBatch::tuple_data_pool().
Referenced by impala::HdfsTextScanner::Close(), impala::BaseSequenceScanner::Close(), impala::HdfsParquetScanner::Close(), impala::HdfsTextScanner::FillByteBufferGzip(), impala::HdfsAvroScanner::ProcessRange(), ReadCompressedBlock(), impala::HdfsParquetScanner::BaseColumnReader::ReadDataPage(), and impala::HdfsRCFileScanner::ResetRowGroup().
|
virtualinherited |
Release all resources the scanner has allocated. This is the last chance for the scanner to attach any resources to the ScannerContext object.
Reimplemented from impala::HdfsScanner.
Definition at line 82 of file base-sequence-scanner.cc.
References impala::HdfsScanner::AddFinalRowBatch(), impala::HdfsScanner::AttachPool(), impala::ScannerContext::Stream::bytes_left(), impala::HdfsScanner::Close(), impala::BaseSequenceScanner::FileHeader::compression_type, impala::HdfsScanner::data_buffer_pool_, impala::HdfsScanner::decompressor_, impala::BaseSequenceScanner::file_format(), impala::BaseSequenceScanner::header_, impala::BaseSequenceScanner::num_syncs_, impala::BaseSequenceScanner::only_parsing_header_, impala::HdfsScanNode::RangeComplete(), impala::HdfsScanner::scan_node_, impala::HdfsScanner::stream_, impala::BaseSequenceScanner::total_block_size_, and VLOG_FILE.
|
static |
Codegen writing tuples and evaluating predicates.
Definition at line 50 of file hdfs-sequence-scanner.cc.
References impala::RuntimeState::codegen_enabled(), impala::HdfsScanner::CodegenWriteAlignedTuples(), impala::HdfsScanner::CodegenWriteCompleteTuple(), impala::RuntimeState::GetCodegen(), impala::Status::ok(), and impala::HdfsScanNode::runtime_state().
Referenced by impala::HdfsScanNode::Prepare().
|
staticprotectedinherited |
Codegen function to replace WriteAlignedTuples. WriteAlignedTuples is cross compiled to IR. This function loads the precompiled IR function, modifies it and returns the resulting function.
Definition at line 495 of file hdfs-scanner.cc.
References impala::LlvmCodeGen::codegen_timer(), impala::LlvmCodeGen::FinalizeFunction(), impala::LlvmCodeGen::GetFunction(), impala::LlvmCodeGen::ReplaceCallSites(), and SCOPED_TIMER.
Referenced by impala::HdfsTextScanner::Codegen(), and Codegen().
|
staticprotectedinherited |
Codegen function to replace WriteCompleteTuple. Should behave identically to WriteCompleteTuple.
Definition at line 296 of file hdfs-scanner.cc.
References impala::LlvmCodeGen::FnPrototype::AddArgument(), impala::TupleDescriptor::byte_size(), impala::LlvmCodeGen::codegen_timer(), impala::LlvmCodeGen::CodegenMemcpy(), impala::TextConverter::CodegenWriteSlot(), impala::HdfsScanNode::ComputeSlotMaterializationOrder(), impala::LlvmCodeGen::context(), impala::CodegenAnyVal::CreateCallWrapped(), impala::LlvmCodeGen::false_value(), impala::LlvmCodeGen::FinalizeFunction(), impala::TupleDescriptor::GenerateLlvmStruct(), impala::Status::GetDetail(), impala::LlvmCodeGen::GetFunction(), impala::LlvmCodeGen::GetIntConstant(), impala::LlvmCodeGen::GetType(), impala::CodegenAnyVal::GetVal(), impala::HdfsScanNode::hdfs_table(), impala::FieldLocation::LLVM_CLASS_NAME, impala::TupleRow::LLVM_CLASS_NAME, impala::Tuple::LLVM_CLASS_NAME, impala::HdfsScanner::LLVM_CLASS_NAME, impala::MemPool::LLVM_CLASS_NAME, impala::HdfsScanNode::materialized_slots(), impala::HdfsTableDescriptor::null_column_value(), impala::HdfsScanNode::num_materialized_partition_keys(), impala::TupleDescriptor::num_null_bytes(), impala::Status::ok(), impala::LlvmCodeGen::OptimizeFunctionWithExprs(), impala::HdfsScanNode::runtime_state(), SCOPED_TIMER, impala::LlvmCodeGen::true_value(), impala::HdfsScanNode::tuple_desc(), impala::HdfsScanNode::tuple_idx(), impala::ColumnType::type, impala::SlotDescriptor::type(), impala::TYPE_BOOLEAN, impala::TYPE_DECIMAL, impala::TYPE_INT, impala::TYPE_TIMESTAMP, and impala::TYPE_TINYINT.
Referenced by impala::HdfsTextScanner::Codegen(), and Codegen().
|
protectedinherited |
Commit num_rows to the current row batch. If this completes, the row batch is enqueued with the scan node and StartNewRowBatch() is called. Returns Status::OK if the query is not cancelled and hasn't exceeded any mem limits. Scanner can call this with 0 rows to flush any pending resources (attached pools and io buffers) to minimize memory consumption.
Definition at line 124 of file hdfs-scanner.cc.
References impala::HdfsScanNode::AddMaterializedRowBatch(), impala::RowBatch::AtCapacity(), impala::HdfsScanner::batch_, impala::TupleDescriptor::byte_size(), impala::Status::CANCELLED, impala::ScannerContext::cancelled(), impala::RowBatch::capacity(), impala::RuntimeState::CheckQueryState(), impala::RowBatch::CommitRows(), impala::HdfsScanner::conjunct_ctxs_, impala::HdfsScanner::context_, impala::ExprContext::FreeLocalAllocations(), impala::ScannerContext::num_completed_io_buffers(), impala::RowBatch::num_rows(), impala::Status::OK, impala::ScannerContext::ReleaseCompletedResources(), RETURN_IF_ERROR, impala::HdfsScanner::scan_node_, impala::HdfsScanner::StartNewRowBatch(), impala::HdfsScanner::state_, impala::HdfsScanNode::tuple_desc(), and impala::HdfsScanner::tuple_mem_.
Referenced by impala::HdfsParquetScanner::AssembleRows(), impala::HdfsScanner::AttachPool(), impala::HdfsTextScanner::FinishScanRange(), ProcessDecompressedBlock(), impala::HdfsParquetScanner::ProcessFooter(), impala::HdfsTextScanner::ProcessRange(), impala::HdfsAvroScanner::ProcessRange(), ProcessRange(), impala::HdfsRCFileScanner::ProcessRange(), and impala::HdfsParquetScanner::ProcessSplit().
|
inlineprotectedinherited |
Convenience function for evaluating conjuncts using this scanner's ExprContexts. This must always be inlined so we can correctly replace the call to ExecNode::EvalConjuncts() during codegen.
Definition at line 266 of file hdfs-scanner.h.
References impala::HdfsScanner::conjunct_ctxs_, and impala::ExecNode::EvalConjuncts().
Referenced by impala::HdfsParquetScanner::AssembleRows(), impala::HdfsAvroScanner::DecodeAvroData(), impala::HdfsRCFileScanner::ProcessRange(), impala::HdfsScanner::WriteCompleteTuple(), impala::HdfsScanner::WriteEmptyTuples(), and impala::HdfsTextScanner::WriteFields().
|
inlineprotectedvirtual |
Returns type of scanner: e.g. rcfile, seqfile.
Implements impala::BaseSequenceScanner.
Definition at line 180 of file hdfs-sequence-scanner.h.
|
inlineprotectedinherited |
Definition at line 117 of file base-sequence-scanner.h.
References impala::BaseSequenceScanner::finished_.
Referenced by ProcessBlockCompressedScanRange(), impala::HdfsAvroScanner::ProcessRange(), ProcessRange(), and impala::HdfsRCFileScanner::ProcessRange().
|
protectedinherited |
Simple wrapper around conjunct_ctxs_. Used in the codegen'd version of WriteCompleteTuple() because it's easier than writing IR to access conjunct_ctxs_.
Definition at line 79 of file hdfs-scanner-ir.cc.
References impala::HdfsScanner::conjunct_ctxs_, and gen_ir_descriptions::idx.
|
protectedinherited |
Gets memory for outputting tuples into batch_. *pool is the mem pool that should be used for memory allocated for those tuples. *tuple_mem should be the location to output tuples, and *tuple_row_mem for outputting tuple rows. Returns the maximum number of tuples/tuple rows that can be output (before the current row batch is complete and a new one is allocated). Memory returned from this call is invalidated after calling CommitRows. Callers must call GetMemory again after calling this function.
Definition at line 115 of file hdfs-scanner.cc.
References impala::RowBatch::AddRow(), impala::HdfsScanner::batch_, impala::RowBatch::capacity(), impala::RowBatch::GetRow(), impala::RowBatch::num_rows(), impala::RowBatch::tuple_data_pool(), and impala::HdfsScanner::tuple_mem_.
Referenced by impala::HdfsParquetScanner::AssembleRows(), impala::HdfsTextScanner::FinishScanRange(), ProcessDecompressedBlock(), impala::HdfsParquetScanner::ProcessFooter(), impala::HdfsTextScanner::ProcessRange(), impala::HdfsAvroScanner::ProcessRange(), ProcessRange(), and impala::HdfsRCFileScanner::ProcessRange().
|
inlineprivate |
Read compressed or uncompressed records from the byte stream into memory in unparsed_data_buffer_pool_. Not used for block compressed files. Output: record_ptr: ponter to the record. record_len: length of the record
Definition at line 103 of file hdfs-sequence-scanner.cc.
References current_block_length_, current_key_length_, impala::HdfsScanner::decompress_timer_, impala::HdfsScanner::decompressor_, impala::ReadWriteUtil::GetVLong(), impala::BaseSequenceScanner::header_, impala::BaseSequenceScanner::FileHeader::is_compressed, impala::Status::OK, impala::HdfsScanner::parse_status_, ReadBlockHeader(), impala::ScannerContext::Stream::ReadBytes(), impala::ScannerContext::Stream::ReadVLong(), RETURN_IF_ERROR, RETURN_IF_FALSE, SCOPED_TIMER, impala::ScannerContext::Stream::SkipBytes(), impala::HdfsScanner::stream_, unparsed_data_buffer_, and VLOG_FILE.
Referenced by ProcessRange().
|
protectedinherited |
Initializes write_tuples_fn_ to the jitted function if codegen is possible.
Definition at line 87 of file hdfs-scanner.cc.
References impala::HdfsPartitionDescriptor::escape_char(), impala::HdfsScanNode::GetCodegenFn(), impala::ExecNode::id(), impala::HdfsScanNode::IncNumScannersCodegenDisabled(), impala::HdfsScanNode::IncNumScannersCodegenEnabled(), impala::Status::OK, impala::HdfsScanner::scan_node_, impala::TupleDescriptor::string_slots(), impala::HdfsScanNode::tuple_desc(), and impala::HdfsScanner::write_tuples_fn_.
Referenced by InitNewRange(), and impala::HdfsTextScanner::ResetScanner().
|
protectedvirtual |
Reset internal state for a new scan range.
Implements impala::HdfsScanner.
Definition at line 61 of file hdfs-sequence-scanner.cc.
References impala::BaseSequenceScanner::FileHeader::codec, impala::HdfsPartitionDescriptor::collection_delim(), impala::HdfsScanner::context_, delimited_text_parser_, impala::HdfsPartitionDescriptor::escape_char(), impala::HdfsPartitionDescriptor::field_delim(), impala::HdfsScanNode::hdfs_table(), impala::BaseSequenceScanner::header_, impala::HdfsScanner::InitializeWriteTuplesFn(), impala::BaseSequenceScanner::FileHeader::is_compressed, impala::HdfsScanNode::is_materialized_col(), impala::HdfsTableDescriptor::null_column_value(), num_buffered_records_in_compressed_block_, impala::TableDescriptor::num_cols(), impala::HdfsScanNode::num_partition_keys(), impala::Status::OK, impala::BaseSequenceScanner::only_parsing_header_, impala::ScannerContext::partition_descriptor(), RETURN_IF_ERROR, impala::HdfsScanner::scan_node_, impala::HdfsScanner::text_converter_, and impala::HdfsScanner::UpdateDecompressor().
|
inlineprotectedinherited |
Initialize a tuple. TODO: only copy over non-null slots. TODO: InitTuple is called frequently, avoid the if, perhaps via templatization.
Definition at line 355 of file hdfs-scanner.h.
References impala::HdfsScanner::num_null_bytes_, and impala::HdfsScanner::tuple_byte_size_.
Referenced by impala::HdfsParquetScanner::AssembleRows(), impala::HdfsAvroScanner::DecodeAvroData(), impala::HdfsRCFileScanner::ProcessRange(), impala::HdfsScanner::WriteCompleteTuple(), and impala::HdfsTextScanner::WriteFields().
|
staticinherited |
Issue the initial ranges for all sequence container files.
Definition at line 40 of file base-sequence-scanner.cc.
References impala::HdfsScanNode::AddDiskIoRanges(), impala::HdfsScanNode::AllocateScanRange(), impala::BaseSequenceScanner::HEADER_SIZE, impala::Status::OK, impala::ScanRangeMetadata::partition_id, and RETURN_IF_ERROR.
Referenced by impala::HdfsScanNode::GetNext().
|
privatevirtual |
Appends the current file and line to the RuntimeState's error log. row_idx is 0-based (in current batch) where the parse error occurred.
Reimplemented from impala::HdfsScanner.
Definition at line 493 of file hdfs-sequence-scanner.cc.
References record_locations_.
Definition at line 368 of file hdfs-scanner.h.
References impala::HdfsScanner::batch_, and impala::RowBatch::row_byte_size().
Referenced by impala::HdfsParquetScanner::AssembleRows(), impala::HdfsAvroScanner::DecodeAvroData(), impala::HdfsRCFileScanner::ProcessRange(), impala::HdfsScanner::WriteEmptyTuples(), and impala::HdfsTextScanner::WriteFields().
Definition at line 363 of file hdfs-scanner.h.
References impala::HdfsScanner::tuple_byte_size_.
Referenced by impala::HdfsParquetScanner::AssembleRows(), impala::HdfsAvroScanner::DecodeAvroData(), impala::HdfsRCFileScanner::ProcessRange(), and impala::HdfsTextScanner::WriteFields().
|
virtual |
Implementation of HdfsScanner interface.
Reimplemented from impala::BaseSequenceScanner.
Definition at line 88 of file hdfs-sequence-scanner.cc.
References impala::RuntimeState::batch_size(), field_locations_, impala::HdfsScanNode::materialized_slots(), impala::Status::OK, impala::BaseSequenceScanner::Prepare(), record_locations_, RETURN_IF_ERROR, impala::HdfsScanner::scan_node_, and impala::HdfsScanner::state_.
|
private |
Process an entire block compressed scan range. Block compressed ranges are more common and can be parsed more efficiently in larger pieces.
Definition at line 161 of file hdfs-sequence-scanner.cc.
References impala::ScannerContext::Stream::eof(), impala::ScannerContext::Stream::file_offset(), impala::BaseSequenceScanner::finished(), impala::BaseSequenceScanner::header_, impala::BaseSequenceScanner::FileHeader::is_compressed, impala::RuntimeState::LogError(), impala::RuntimeState::LogHasSpace(), num_buffered_records_in_compressed_block_, impala::Status::OK, impala::HdfsScanner::parse_status_, ProcessDecompressedBlock(), impala::ExecNode::ReachedLimit(), ReadCompressedBlock(), impala::ScannerContext::Stream::ReadInt(), impala::BaseSequenceScanner::ReadSync(), RETURN_IF_ERROR, RETURN_IF_FALSE, impala::HdfsScanner::scan_node_, impala::HdfsScanner::state_, and impala::HdfsScanner::stream_.
Referenced by ProcessRange().
|
private |
Utility function for parsing next_record_in_compressed_block_. Called by ProcessBlockCompressedScanRange.
Definition at line 198 of file hdfs-sequence-scanner.cc.
References impala::HdfsScanner::batch_, impala::HdfsScanner::CommitRows(), impala::HdfsScanner::context_, COUNTER_ADD, delimited_text_parser_, field_locations_, impala::HdfsScanner::GetMemory(), impala::ReadWriteUtil::GetVLong(), impala::HdfsScanNode::limit(), impala::ScanNode::materialize_tuple_timer(), impala::HdfsScanNode::materialized_slots(), next_record_in_compressed_block_, num_buffered_records_in_compressed_block_, impala::Status::OK, impala::HdfsScanner::parse_status_, pool, record_locations_, RETURN_IF_ERROR, impala::RowBatch::row_byte_size(), impala::ScanNode::rows_read_counter(), impala::ExecNode::rows_returned(), impala::HdfsScanner::scan_node_, SCOPED_TIMER, impala::HdfsScanner::tuple_, UNLIKELY, impala::HdfsScanner::write_tuples_fn_, impala::HdfsScanner::WriteAlignedTuples(), and impala::HdfsScanner::WriteEmptyTuples().
Referenced by ProcessBlockCompressedScanRange().
|
protectedvirtual |
Process the current range until the end or an error occurred. Note this might be called multiple times if we skip over bad data. This function should read from the underlying ScannerContext materializing tuples to the context. When this function is called, it is guaranteed to be at the start of a data block (i.e. right after the sync marker).
Implements impala::BaseSequenceScanner.
Definition at line 271 of file hdfs-sequence-scanner.cc.
References impala::HdfsScanner::CommitRows(), impala::HdfsScanner::context_, COUNTER_ADD, delimited_text_parser_, impala::ScannerContext::Stream::eof(), field_locations_, impala::BaseSequenceScanner::finished(), impala::HdfsScanner::GetMemory(), GetRecord(), impala::BaseSequenceScanner::header_, impala::BaseSequenceScanner::FileHeader::is_compressed, impala::HdfsSequenceScanner::SeqFileHeader::is_row_compressed, impala::ScanNode::materialize_tuple_timer(), impala::HdfsScanNode::materialized_slots(), num_buffered_records_in_compressed_block_, impala::Status::OK, impala::HdfsScanner::parse_status_, pool, ProcessBlockCompressedScanRange(), impala::ExecNode::ReachedLimit(), impala::ScannerContext::Stream::ReadInt(), impala::BaseSequenceScanner::ReadSync(), record_locations_, impala::HdfsScanner::ReportTupleParseError(), RETURN_IF_ERROR, RETURN_IF_FALSE, impala::ScanNode::rows_read_counter(), impala::HdfsScanner::scan_node_, SCOPED_TIMER, impala::HdfsScanner::stream_, impala::BaseSequenceScanner::SYNC_MARKER, impala::HdfsScanner::template_tuple_, impala::HdfsScanner::tuple_, UNLIKELY, impala::HdfsScanner::WriteCompleteTuple(), and impala::HdfsScanner::WriteEmptyTuples().
|
virtualinherited |
Process an entire split, reading bytes from the context's streams. Context is initialized with the split data (e.g. template tuple, partition descriptor, etc). This function should only return on error or end of scan range.
Implements impala::HdfsScanner.
Definition at line 100 of file base-sequence-scanner.cc.
References impala::RuntimeState::abort_on_error(), impala::ObjectPool::Add(), impala::HdfsScanNode::AddDiskIoRanges(), impala::BaseSequenceScanner::AllocateFileHeader(), impala::BaseSequenceScanner::bytes_skipped_counter_, impala::BaseSequenceScanner::CloseFileRanges(), COUNTER_ADD, impala::ScannerContext::Stream::eof(), impala::ScannerContext::Stream::file_offset(), impala::ScannerContext::Stream::filename(), impala::BaseSequenceScanner::finished_, impala::HdfsScanNode::GetFileDesc(), impala::HdfsScanNode::GetFileMetadata(), impala::BaseSequenceScanner::header_, impala::BaseSequenceScanner::FileHeader::header_size, impala::HdfsScanner::InitNewRange(), impala::BaseSequenceScanner::FileHeader::is_compressed, impala::Status::IsCancelled(), impala::Status::IsMemLimitExceeded(), impala::RuntimeState::LogError(), impala::Status::msg(), impala::RuntimeState::obj_pool(), impala::Status::OK, impala::Status::ok(), impala::BaseSequenceScanner::only_parsing_header_, impala::HdfsScanner::parse_status_, impala::BaseSequenceScanner::ProcessRange(), impala::BaseSequenceScanner::ReadFileHeader(), RETURN_IF_ERROR, RETURN_IF_FALSE, impala::HdfsScanner::scan_node_, impala::ScannerContext::Stream::set_contains_tuple_data(), impala::HdfsScanNode::SetFileMetadata(), impala::ScannerContext::Stream::SkipBytes(), impala::BaseSequenceScanner::SkipToSync(), impala::HdfsScanner::state_, impala::HdfsScanner::stream_, impala::BaseSequenceScanner::FileHeader::sync, and impala::BaseSequenceScanner::SYNC_HASH_SIZE.
|
private |
Read the record header. Sets: current_block_length_
Definition at line 419 of file hdfs-sequence-scanner.cc.
References current_block_length_, current_key_length_, impala::ScannerContext::Stream::file_offset(), impala::Status::OK, impala::HdfsScanner::parse_status_, impala::ScannerContext::Stream::ReadInt(), RETURN_IF_FALSE, and impala::HdfsScanner::stream_.
Referenced by GetRecord().
|
private |
Read a compressed block. Does NOT read sync or -1 marker preceding sync. Decompress to unparsed_data_buffer_ allocated from unparsed_data_buffer_pool_.
Definition at line 441 of file hdfs-sequence-scanner.cc.
References impala::HdfsScanner::AttachPool(), impala::HdfsScanner::data_buffer_pool_, impala::HdfsScanner::decompress_timer_, impala::HdfsScanner::decompressor_, impala::RuntimeState::LogError(), impala::RuntimeState::LogHasSpace(), MAX_BLOCK_SIZE, next_record_in_compressed_block_, num_buffered_records_in_compressed_block_, impala::Status::OK, impala::HdfsScanner::parse_status_, impala::ScannerContext::Stream::ReadBytes(), impala::ScannerContext::Stream::ReadVLong(), RETURN_IF_ERROR, RETURN_IF_FALSE, SCOPED_TIMER, impala::ScannerContext::Stream::SkipText(), impala::HdfsScanner::state_, impala::HdfsScanner::stream_, unparsed_data_buffer_, and VLOG_FILE.
Referenced by ProcessBlockCompressedScanRange().
|
protectedvirtual |
Read the file header. The underlying ScannerContext is at the start of the file header. This function must read the file header (which advances context_ past it) and initialize header_.
Implements impala::BaseSequenceScanner.
Definition at line 345 of file hdfs-sequence-scanner.cc.
References impala::BaseSequenceScanner::FileHeader::codec, impala::Codec::CODEC_MAP, impala::BaseSequenceScanner::FileHeader::compression_type, impala::ScannerContext::Stream::filename(), impala::BaseSequenceScanner::header_, impala::BaseSequenceScanner::FileHeader::header_size, impala::ReadWriteUtil::HexDump(), impala::BaseSequenceScanner::FileHeader::is_compressed, impala::HdfsSequenceScanner::SeqFileHeader::is_row_compressed, impala::Status::OK, impala::HdfsScanner::parse_status_, impala::ScannerContext::Stream::ReadBoolean(), impala::ScannerContext::Stream::ReadBytes(), impala::ScannerContext::Stream::ReadInt(), impala::ScannerContext::Stream::ReadText(), RETURN_IF_FALSE, SEQFILE_VALUE_CLASS_NAME, SEQFILE_VERSION_HEADER, impala::ScannerContext::Stream::SkipText(), impala::HdfsScanner::stream_, impala::BaseSequenceScanner::FileHeader::sync, impala::BaseSequenceScanner::SYNC_HASH_SIZE, impala::ScannerContext::Stream::total_bytes_returned(), and VLOG_FILE.
|
protectedinherited |
Read and validate sync marker against header_->sync. Returns non-ok if the sync marker did not match. Scanners should always use this function to read sync markers, otherwise finished() might not be updated correctly. If finished() returns true after calling this function, scanners must not process any more records.
Definition at line 170 of file base-sequence-scanner.cc.
References impala::BaseSequenceScanner::block_start_, impala::ScannerContext::Stream::eof(), impala::ScannerContext::Stream::eosr(), impala::ScannerContext::Stream::file_offset(), impala::BaseSequenceScanner::finished_, impala::ScannerContext::Stream::GetBytes(), impala::hash, impala::BaseSequenceScanner::header_, impala::ReadWriteUtil::HexDump(), impala::BaseSequenceScanner::num_syncs_, impala::Status::OK, impala::HdfsScanner::parse_status_, RETURN_IF_FALSE, impala::HdfsScanner::stream_, impala::BaseSequenceScanner::FileHeader::sync, impala::BaseSequenceScanner::SYNC_HASH_SIZE, and impala::BaseSequenceScanner::total_block_size_.
Referenced by ProcessBlockCompressedScanRange(), impala::HdfsAvroScanner::ProcessRange(), ProcessRange(), and impala::HdfsRCFileScanner::ProcessRange().
|
protectedinherited |
Report parse error for column @ desc. If abort_on_error is true, sets parse_status_ to the error message.
Definition at line 577 of file hdfs-scanner.cc.
References impala::RuntimeState::abort_on_error(), impala::SlotDescriptor::col_pos(), impala::RuntimeState::LogError(), impala::RuntimeState::LogHasSpace(), impala::HdfsScanNode::num_partition_keys(), impala::Status::ok(), impala::HdfsScanner::parse_status_, impala::HdfsScanner::scan_node_, impala::HdfsScanner::state_, and impala::SlotDescriptor::type().
Referenced by impala::HdfsRCFileScanner::ProcessRange(), impala::HdfsScanner::ReportTupleParseError(), and impala::HdfsTextScanner::WritePartialTuple().
|
protectedinherited |
Utility function to report parse errors for each field. If errors[i] is nonzero, fields[i] had a parse error. row_idx is the idx of the row in the current batch that had the parse error Returns false if parsing should be aborted. In this case parse_status_ is set to the error. This is called from WriteAlignedTuples.
Definition at line 546 of file hdfs-scanner.cc.
References impala::RuntimeState::abort_on_error(), impala::ScannerContext::Stream::filename(), impala::RuntimeState::LogError(), impala::RuntimeState::LogHasSpace(), impala::HdfsScanner::LogRowParseError(), impala::HdfsScanNode::materialized_slots(), impala::HdfsScanner::num_errors_in_file_, impala::Status::ok(), impala::HdfsScanner::parse_status_, impala::HdfsScanner::ReportColumnParseError(), impala::RuntimeState::ReportFileErrors(), impala::HdfsScanner::scan_node_, impala::HdfsScanner::state_, and impala::HdfsScanner::stream_.
Referenced by ProcessRange(), and impala::HdfsScanner::WriteAlignedTuples().
|
protectedinherited |
Utility function to advance past the next sync marker, reading bytes from stream_. If no sync is found in the scan range, return Status::OK and sets finished_ to true. It is safe to call this function past eosr.
Definition at line 212 of file base-sequence-scanner.cc.
References impala::BaseSequenceScanner::block_start_, impala::ScannerContext::Stream::bytes_left(), impala::ScannerContext::Stream::eof(), impala::ScannerContext::Stream::eosr(), impala::ScannerContext::Stream::file_offset(), impala::ScannerContext::Stream::filename(), impala::BaseSequenceScanner::FindSyncBlock(), impala::BaseSequenceScanner::finished_, impala::ScannerContext::Stream::GetBuffer(), impala::ScannerContext::Stream::GetBytes(), impala::BaseSequenceScanner::num_syncs_, offset, impala::Status::OK, impala::HdfsScanner::parse_status_, RETURN_IF_ERROR, RETURN_IF_FALSE, impala::ScannerContext::Stream::SkipBytes(), impala::HdfsScanner::stream_, and VLOG_FILE.
Referenced by impala::BaseSequenceScanner::ProcessSplit().
|
protectedinherited |
Set batch_ to a new row batch and update tuple_mem_ accordingly.
Definition at line 108 of file hdfs-scanner.cc.
References impala::MemPool::Allocate(), impala::HdfsScanner::batch_, impala::RuntimeState::batch_size(), impala::ExecNode::mem_tracker(), impala::ExecNode::row_desc(), impala::HdfsScanner::scan_node_, impala::HdfsScanner::state_, impala::HdfsScanner::tuple_byte_size_, impala::RowBatch::tuple_data_pool(), and impala::HdfsScanner::tuple_mem_.
Referenced by impala::HdfsScanner::CommitRows(), and impala::HdfsScanner::Prepare().
|
protectedinherited |
Update the decompressor_ object given a compression type or codec name. Depending on the old compression type and the new one, it may close the old decompressor and/or create a new one of different type.
Definition at line 513 of file hdfs-scanner.cc.
References impala::Codec::CreateDecompressor(), impala::HdfsScanner::data_buffer_pool_, impala::HdfsScanner::decompression_type_, impala::HdfsScanner::decompressor_, impala::Status::OK, RETURN_IF_ERROR, impala::HdfsScanner::scan_node_, impala::TupleDescriptor::string_slots(), and impala::HdfsScanNode::tuple_desc().
Referenced by impala::HdfsAvroScanner::InitNewRange(), InitNewRange(), and impala::HdfsTextScanner::ProcessSplit().
|
protectedinherited |
|
protectedinherited |
Processes batches of fields and writes them out to tuple_row_mem.
Definition at line 33 of file hdfs-scanner-ir.cc.
References impala::HdfsScanner::ReportTupleParseError(), impala::HdfsScanner::template_tuple_, impala::HdfsScanner::tuple_, impala::HdfsScanner::tuple_byte_size_, UNLIKELY, and impala::HdfsScanner::WriteCompleteTuple().
Referenced by ProcessDecompressedBlock(), and impala::HdfsTextScanner::WriteFields().
|
protectedinherited |
Writes out all slots for 'tuple' from 'fields'. 'fields' must be aligned to the start of the tuple (e.g. fields[0] maps to slots[0]). After writing the tuple, it will be evaluated against the conjuncts.
Definition at line 217 of file hdfs-scanner.cc.
References impala::HdfsScanner::EvalConjuncts(), impala::HdfsScanner::InitTuple(), impala::FieldLocation::len, impala::HdfsScanNode::materialized_slots(), impala::HdfsScanner::scan_node_, impala::TupleRow::SetTuple(), impala::HdfsScanner::text_converter_, impala::HdfsScanNode::tuple_idx(), and UNLIKELY.
Referenced by ProcessRange(), and impala::HdfsScanner::WriteAlignedTuples().
|
protectedinherited |
Utility method to write out tuples when there are no materialized fields (e.g. select count(*) or only partition keys). num_tuples - Total number of tuples to write out. Returns the number of tuples added to the row batch.
Definition at line 157 of file hdfs-scanner.cc.
References impala::RowBatch::AddRow(), impala::RowBatch::AddRows(), impala::RowBatch::AtCapacity(), impala::RowBatch::capacity(), impala::RowBatch::CommitLastRow(), impala::RowBatch::CommitRows(), impala::HdfsScanner::EvalConjuncts(), impala::RowBatch::GetRow(), impala::RowBatch::INVALID_ROW_INDEX, impala::RowBatch::num_rows(), impala::HdfsScanner::scan_node_, impala::TupleRow::SetTuple(), impala::HdfsScanner::template_tuple_, and impala::HdfsScanNode::tuple_idx().
Referenced by ProcessDecompressedBlock(), impala::HdfsParquetScanner::ProcessFooter(), impala::HdfsTextScanner::ProcessRange(), impala::HdfsAvroScanner::ProcessRange(), ProcessRange(), and impala::HdfsRCFileScanner::ProcessRange().
|
protectedinherited |
Write empty tuples and commit them to the context object.
Definition at line 195 of file hdfs-scanner.cc.
References impala::HdfsScanner::EvalConjuncts(), impala::HdfsScanner::next_row(), impala::HdfsScanner::scan_node_, impala::TupleRow::SetTuple(), impala::HdfsScanner::template_tuple_, and impala::HdfsScanNode::tuple_idx().
|
protectedinherited |
The current row batch being populated. Creating new row batches, attaching context resources, and handing off to the scan node is handled by this class in CommitRows(), but AttachPool() must be called by scanner subclasses to attach any memory allocated by that subclass. All row batches created by this class are transferred to the scan node (i.e., all batches are ultimately owned by the scan node).
Definition at line 177 of file hdfs-scanner.h.
Referenced by impala::HdfsScanner::AddFinalRowBatch(), impala::HdfsScanner::AttachPool(), impala::HdfsScanner::CommitRows(), impala::HdfsScanner::GetMemory(), impala::HdfsScanner::next_row(), ProcessDecompressedBlock(), impala::HdfsParquetScanner::ProcessSplit(), impala::HdfsScanner::StartNewRowBatch(), impala::HdfsTextScanner::WriteFields(), and impala::HdfsScanner::~HdfsScanner().
|
protectedinherited |
ExprContext for each conjunct. Each scanner has its own ExprContexts so the conjuncts can be safely evaluated in parallel.
Definition at line 154 of file hdfs-scanner.h.
Referenced by impala::HdfsScanner::Close(), impala::HdfsScanner::CommitRows(), impala::HdfsScanner::EvalConjuncts(), impala::HdfsScanner::GetConjunctCtx(), and impala::HdfsScanner::Prepare().
|
protectedinherited |
Context for this scanner.
Definition at line 147 of file hdfs-scanner.h.
Referenced by impala::HdfsScanner::AddFinalRowBatch(), impala::HdfsParquetScanner::AssembleRows(), impala::HdfsScanner::CommitRows(), impala::HdfsTextScanner::FillByteBufferCompressedFile(), impala::HdfsTextScanner::FillByteBufferGzip(), impala::HdfsParquetScanner::InitColumns(), impala::HdfsTextScanner::InitNewRange(), InitNewRange(), impala::HdfsScanner::Prepare(), ProcessDecompressedBlock(), impala::HdfsParquetScanner::ProcessFooter(), impala::HdfsTextScanner::ProcessRange(), impala::HdfsAvroScanner::ProcessRange(), ProcessRange(), impala::HdfsRCFileScanner::ProcessRange(), impala::HdfsParquetScanner::ProcessSplit(), and impala::HdfsTextScanner::ResetScanner().
|
private |
Length of the current sequence file block (or record).
Definition at line 243 of file hdfs-sequence-scanner.h.
Referenced by GetRecord(), and ReadBlockHeader().
|
private |
Length of the current key. This is specified as 4 bytes in the format description.
Definition at line 246 of file hdfs-sequence-scanner.h.
Referenced by GetRecord(), and ReadBlockHeader().
|
protectedinherited |
Pool to allocate per data block memory. This should be used with the decompressor and any other per data block allocations.
Definition at line 205 of file hdfs-scanner.h.
Referenced by impala::HdfsTextScanner::Close(), impala::BaseSequenceScanner::Close(), impala::HdfsTextScanner::FillByteBufferGzip(), impala::HdfsAvroScanner::ProcessRange(), ReadCompressedBlock(), impala::HdfsRCFileScanner::ReadRowGroup(), impala::HdfsRCFileScanner::ResetRowGroup(), impala::HdfsScanner::UpdateDecompressor(), and impala::HdfsTextScanner::WritePartialTuple().
|
protectedinherited |
Time spent decompressing bytes.
Definition at line 208 of file hdfs-scanner.h.
Referenced by impala::HdfsTextScanner::FillByteBufferCompressedFile(), impala::HdfsTextScanner::FillByteBufferGzip(), GetRecord(), impala::HdfsScanner::Prepare(), impala::HdfsAvroScanner::ProcessRange(), impala::HdfsRCFileScanner::ReadColumnBuffers(), ReadCompressedBlock(), impala::HdfsParquetScanner::BaseColumnReader::ReadDataPage(), and impala::HdfsRCFileScanner::ReadKeyBuffers().
|
protectedinherited |
The most recently used decompression type.
Definition at line 201 of file hdfs-scanner.h.
Referenced by impala::HdfsTextScanner::FillByteBuffer(), impala::HdfsTextScanner::FillByteBufferCompressedFile(), and impala::HdfsScanner::UpdateDecompressor().
|
protectedinherited |
Decompressor class to use, if any.
Definition at line 198 of file hdfs-scanner.h.
Referenced by impala::HdfsTextScanner::Close(), impala::BaseSequenceScanner::Close(), impala::HdfsScanner::Close(), impala::HdfsTextScanner::FillByteBuffer(), impala::HdfsTextScanner::FillByteBufferCompressedFile(), impala::HdfsTextScanner::FillByteBufferGzip(), impala::HdfsTextScanner::FinishScanRange(), GetRecord(), impala::HdfsRCFileScanner::InitNewRange(), impala::HdfsAvroScanner::ProcessRange(), impala::HdfsRCFileScanner::ReadColumnBuffers(), ReadCompressedBlock(), impala::HdfsRCFileScanner::ReadKeyBuffers(), and impala::HdfsScanner::UpdateDecompressor().
|
private |
Helper class for picking fields and rows from delimited text.
Definition at line 222 of file hdfs-sequence-scanner.h.
Referenced by InitNewRange(), ProcessDecompressedBlock(), and ProcessRange().
|
private |
Definition at line 223 of file hdfs-sequence-scanner.h.
Referenced by Prepare(), ProcessDecompressedBlock(), and ProcessRange().
|
staticinherited |
Assumed size of an OS file block. Used mostly when reading file format headers, etc. This probably ought to be a derived number from the environment.
Definition at line 95 of file hdfs-scanner.h.
|
protectedinherited |
File header for this scan range. This is not owned by the parent scan node.
Definition at line 127 of file base-sequence-scanner.h.
Referenced by impala::BaseSequenceScanner::Close(), GetRecord(), impala::HdfsAvroScanner::InitNewRange(), InitNewRange(), impala::HdfsRCFileScanner::InitNewRange(), impala::HdfsAvroScanner::ParseMetadata(), ProcessBlockCompressedScanRange(), impala::HdfsAvroScanner::ProcessRange(), ProcessRange(), impala::BaseSequenceScanner::ProcessSplit(), impala::HdfsRCFileScanner::ReadColumnBuffers(), impala::HdfsAvroScanner::ReadFileHeader(), ReadFileHeader(), impala::HdfsRCFileScanner::ReadFileHeader(), impala::HdfsRCFileScanner::ReadKeyBuffers(), impala::HdfsRCFileScanner::ReadNumColumnsMetadata(), and impala::BaseSequenceScanner::ReadSync().
|
staticprotectedinherited |
Estimate of header size in bytes. This is initial number of bytes to issue per file. If the estimate is too low, more bytes will be read as necessary.
Definition at line 121 of file base-sequence-scanner.h.
Referenced by impala::BaseSequenceScanner::IssueInitialRanges().
|
staticinherited |
Scanner subclasses must implement these static functions as well. Unfortunately, c++ does not allow static virtual functions. Issue the initial ranges for 'files'. HdfsFileDesc groups all the splits assigned to this scan node by file. This is called before any of the scanner subclasses are created to process splits in 'files'. The strategy on how to parse the scan ranges depends on the file format.
Definition at line 137 of file hdfs-scanner.h.
Referenced by impala::HdfsScanner::CodegenWriteCompleteTuple().
|
staticprivate |
Maximum size of a compressed block. This is used to check for corrupted block size so we do not read the whole file before we detect the error.
Definition at line 187 of file hdfs-sequence-scanner.h.
Referenced by ReadCompressedBlock().
|
private |
Next record from block compressed data.
Definition at line 255 of file hdfs-sequence-scanner.h.
Referenced by ProcessDecompressedBlock(), and ReadCompressedBlock().
|
private |
Number of buffered records unparsed_data_buffer_ from block compressed data.
Definition at line 252 of file hdfs-sequence-scanner.h.
Referenced by InitNewRange(), ProcessBlockCompressedScanRange(), ProcessDecompressedBlock(), ProcessRange(), and ReadCompressedBlock().
|
protectedinherited |
number of errors in current file
Definition at line 183 of file hdfs-scanner.h.
Referenced by impala::HdfsScanner::ReportTupleParseError().
|
protectedinherited |
Number of null bytes in the tuple.
Definition at line 189 of file hdfs-scanner.h.
Referenced by impala::HdfsScanner::InitTuple().
|
protectedinherited |
If true, this scanner object is only for processing the header.
Definition at line 130 of file base-sequence-scanner.h.
Referenced by impala::BaseSequenceScanner::Close(), impala::BaseSequenceScanner::CloseFileRanges(), impala::HdfsAvroScanner::InitNewRange(), InitNewRange(), impala::HdfsRCFileScanner::InitNewRange(), and impala::BaseSequenceScanner::ProcessSplit().
|
protectedinherited |
Contains current parse status to minimize the number of Status objects returned. This significantly minimizes the cross compile dependencies for llvm since status objects inline a bunch of string functions. Also, status objects aren't extremely cheap to create and destroy.
Definition at line 195 of file hdfs-scanner.h.
Referenced by impala::HdfsTextScanner::FillByteBufferGzip(), GetRecord(), impala::HdfsAvroScanner::ParseMetadata(), ProcessBlockCompressedScanRange(), ProcessDecompressedBlock(), impala::HdfsTextScanner::ProcessRange(), impala::HdfsAvroScanner::ProcessRange(), ProcessRange(), impala::HdfsRCFileScanner::ProcessRange(), impala::BaseSequenceScanner::ProcessSplit(), ReadBlockHeader(), impala::HdfsRCFileScanner::ReadColumnBuffers(), ReadCompressedBlock(), impala::HdfsAvroScanner::ReadFileHeader(), ReadFileHeader(), impala::HdfsRCFileScanner::ReadFileHeader(), impala::HdfsRCFileScanner::ReadKeyBuffers(), impala::HdfsRCFileScanner::ReadNumColumnsMetadata(), impala::HdfsRCFileScanner::ReadRowGroupHeader(), impala::BaseSequenceScanner::ReadSync(), impala::HdfsScanner::ReportColumnParseError(), impala::HdfsScanner::ReportTupleParseError(), impala::BaseSequenceScanner::SkipToSync(), and impala::HdfsTextScanner::WriteFields().
|
private |
Records are processed in batches. This vector stores batches of record locations that are being processed. TODO: better perf not to use vector?
Definition at line 240 of file hdfs-sequence-scanner.h.
Referenced by LogRowParseError(), Prepare(), ProcessDecompressedBlock(), and ProcessRange().
|
protectedinherited |
The scan node that started this scanner.
Definition at line 141 of file hdfs-scanner.h.
Referenced by impala::HdfsScanner::AddFinalRowBatch(), impala::HdfsParquetScanner::AssembleRows(), impala::HdfsParquetScanner::BaseColumnReader::BaseColumnReader(), impala::HdfsTextScanner::Close(), impala::BaseSequenceScanner::Close(), impala::HdfsParquetScanner::Close(), impala::BaseSequenceScanner::CloseFileRanges(), impala::HdfsScanner::CommitRows(), impala::HdfsParquetScanner::CreateColumnReaders(), impala::HdfsParquetScanner::CreateReader(), impala::HdfsRCFileScanner::DebugString(), impala::HdfsAvroScanner::DecodeAvroData(), impala::HdfsTextScanner::FillByteBufferCompressedFile(), impala::HdfsTextScanner::FinishScanRange(), impala::HdfsParquetScanner::InitColumns(), impala::HdfsScanner::InitializeWriteTuplesFn(), impala::HdfsTextScanner::InitNewRange(), impala::HdfsAvroScanner::InitNewRange(), InitNewRange(), impala::HdfsRCFileScanner::InitNewRange(), impala::HdfsAvroScanner::ParseMetadata(), impala::HdfsTextScanner::Prepare(), impala::BaseSequenceScanner::Prepare(), impala::HdfsParquetScanner::Prepare(), impala::HdfsScanner::Prepare(), Prepare(), impala::HdfsRCFileScanner::Prepare(), ProcessBlockCompressedScanRange(), ProcessDecompressedBlock(), impala::HdfsParquetScanner::ProcessFooter(), impala::HdfsTextScanner::ProcessRange(), impala::HdfsAvroScanner::ProcessRange(), ProcessRange(), impala::HdfsRCFileScanner::ProcessRange(), impala::BaseSequenceScanner::ProcessSplit(), impala::HdfsParquetScanner::BaseColumnReader::ReadDataPage(), impala::HdfsRCFileScanner::ReadRowGroup(), impala::HdfsScanner::ReportColumnParseError(), impala::HdfsScanner::ReportTupleParseError(), impala::HdfsTextScanner::ResetScanner(), impala::HdfsAvroScanner::ResolveSchemas(), impala::HdfsScanner::StartNewRowBatch(), impala::HdfsScanner::UpdateDecompressor(), impala::HdfsAvroScanner::VerifyTypesMatch(), impala::HdfsScanner::WriteCompleteTuple(), impala::HdfsScanner::WriteEmptyTuples(), impala::HdfsTextScanner::WriteFields(), and impala::HdfsTextScanner::WritePartialTuple().
|
staticprivate |
The value class name located in the SeqFile Header. This is always "org.apache.hadoop.io.Text"
Definition at line 191 of file hdfs-sequence-scanner.h.
Referenced by ReadFileHeader().
|
static |
The four byte SeqFile version header present at the beginning of every SeqFile file: {'S', 'E', 'Q', 6}
Definition at line 160 of file hdfs-sequence-scanner.h.
Referenced by ReadFileHeader(), and impala::HdfsRCFileScanner::ReadFileHeader().
|
protectedinherited |
RuntimeState for error reporting.
Definition at line 144 of file hdfs-scanner.h.
Referenced by impala::HdfsScanner::Close(), impala::HdfsScanner::CommitRows(), impala::HdfsTextScanner::FillByteBufferGzip(), impala::HdfsTextScanner::FinishScanRange(), impala::HdfsTextScanner::Prepare(), impala::HdfsScanner::Prepare(), Prepare(), ProcessBlockCompressedScanRange(), impala::HdfsRCFileScanner::ProcessRange(), impala::BaseSequenceScanner::ProcessSplit(), ReadCompressedBlock(), impala::BaseSequenceScanner::ReadPastSize(), impala::HdfsRCFileScanner::ReadRowGroup(), impala::HdfsScanner::ReportColumnParseError(), impala::HdfsScanner::ReportTupleParseError(), impala::HdfsAvroScanner::ResolveSchemas(), impala::HdfsScanner::StartNewRowBatch(), impala::HdfsParquetScanner::ValidateColumn(), and impala::HdfsTextScanner::WriteFields().
|
protectedinherited |
The first stream for context_.
Definition at line 150 of file hdfs-scanner.h.
Referenced by impala::HdfsTextScanner::Close(), impala::BaseSequenceScanner::Close(), impala::HdfsParquetScanner::CreateColumnReaders(), impala::HdfsRCFileScanner::DebugString(), impala::HdfsTextScanner::FillByteBuffer(), impala::HdfsTextScanner::FillByteBufferCompressedFile(), impala::HdfsTextScanner::FillByteBufferGzip(), impala::HdfsTextScanner::FindFirstTuple(), impala::HdfsTextScanner::FinishScanRange(), GetRecord(), impala::HdfsTextScanner::InitNewRange(), impala::HdfsRCFileScanner::InitNewRange(), impala::HdfsRCFileScanner::NextField(), impala::HdfsAvroScanner::ParseMetadata(), impala::BaseSequenceScanner::Prepare(), impala::HdfsScanner::Prepare(), ProcessBlockCompressedScanRange(), impala::HdfsParquetScanner::ProcessFooter(), impala::HdfsTextScanner::ProcessRange(), impala::HdfsAvroScanner::ProcessRange(), ProcessRange(), impala::HdfsRCFileScanner::ProcessRange(), impala::HdfsTextScanner::ProcessSplit(), impala::BaseSequenceScanner::ProcessSplit(), impala::HdfsParquetScanner::ProcessSplit(), ReadBlockHeader(), impala::HdfsRCFileScanner::ReadColumnBuffers(), ReadCompressedBlock(), impala::HdfsAvroScanner::ReadFileHeader(), ReadFileHeader(), impala::HdfsRCFileScanner::ReadFileHeader(), impala::HdfsRCFileScanner::ReadKeyBuffers(), impala::HdfsRCFileScanner::ReadNumColumnsMetadata(), impala::HdfsRCFileScanner::ReadRowGroupHeader(), impala::BaseSequenceScanner::ReadSync(), impala::HdfsScanner::ReportTupleParseError(), impala::BaseSequenceScanner::SkipToSync(), impala::HdfsParquetScanner::ValidateFileMetadata(), impala::HdfsAvroScanner::VerifyTypesMatch(), and impala::HdfsTextScanner::WriteFields().
|
staticprotectedinherited |
Size of the sync hash field.
Definition at line 49 of file base-sequence-scanner.h.
Referenced by impala::BaseSequenceScanner::ProcessSplit(), impala::HdfsAvroScanner::ReadFileHeader(), ReadFileHeader(), impala::HdfsRCFileScanner::ReadFileHeader(), and impala::BaseSequenceScanner::ReadSync().
|
staticprotectedinherited |
Sync indicator.
Definition at line 124 of file base-sequence-scanner.h.
Referenced by ProcessRange(), and impala::HdfsRCFileScanner::ProcessRange().
|
protectedinherited |
A partially materialized tuple with only partition key slots set. The non-partition key slots are set to NULL. The template tuple must be copied into tuple_ before any of the other slots are materialized. Pointer is NULL if there are no partition key slots. This template tuple is computed once for each file and valid for the duration of that file. It is owned by the HDFS scan node.
Definition at line 164 of file hdfs-scanner.h.
Referenced by impala::HdfsAvroScanner::AllocateFileHeader(), impala::HdfsParquetScanner::AssembleRows(), impala::HdfsParquetScanner::CreateColumnReaders(), impala::HdfsAvroScanner::DecodeAvroData(), impala::HdfsAvroScanner::InitNewRange(), impala::HdfsScanner::Prepare(), ProcessRange(), impala::HdfsRCFileScanner::ProcessRange(), impala::HdfsAvroScanner::ResolveSchemas(), impala::HdfsScanner::WriteAlignedTuples(), impala::HdfsScanner::WriteEmptyTuples(), and impala::HdfsTextScanner::WriteFields().
|
protectedinherited |
Helper class for converting text to other types;.
Definition at line 186 of file hdfs-scanner.h.
Referenced by impala::HdfsTextScanner::InitNewRange(), InitNewRange(), impala::HdfsRCFileScanner::Prepare(), impala::HdfsRCFileScanner::ProcessRange(), impala::HdfsScanner::WriteCompleteTuple(), and impala::HdfsTextScanner::WritePartialTuple().
|
protectedinherited |
Current tuple pointer into tuple_mem_.
Definition at line 170 of file hdfs-scanner.h.
Referenced by impala::HdfsTextScanner::FinishScanRange(), ProcessDecompressedBlock(), impala::HdfsTextScanner::ProcessRange(), ProcessRange(), impala::HdfsScanner::WriteAlignedTuples(), and impala::HdfsTextScanner::WriteFields().
|
protectedinherited |
Fixed size of each tuple, in bytes.
Definition at line 167 of file hdfs-scanner.h.
Referenced by impala::HdfsParquetScanner::AssembleRows(), impala::HdfsScanner::InitTuple(), impala::HdfsScanner::next_tuple(), impala::HdfsScanner::StartNewRowBatch(), and impala::HdfsScanner::WriteAlignedTuples().
|
protectedinherited |
The tuple memory of batch_.
Definition at line 180 of file hdfs-scanner.h.
Referenced by impala::HdfsScanner::CommitRows(), impala::HdfsScanner::GetMemory(), and impala::HdfsScanner::StartNewRowBatch().
|
private |
Buffer for data read from HDFS or from decompressing the HDFS data.
Definition at line 249 of file hdfs-sequence-scanner.h.
Referenced by GetRecord(), and ReadCompressedBlock().
|
protectedinherited |
Jitted write tuples function pointer. Null if codegen is disabled.
Definition at line 215 of file hdfs-scanner.h.
Referenced by impala::HdfsScanner::InitializeWriteTuplesFn(), ProcessDecompressedBlock(), and impala::HdfsTextScanner::WriteFields().