trait RecordHeaderParser extends AnyRef
This trait represents a contract for record header parsers. Usually each record of a multi-segment mainframe file has a 4 byte record descriptor word (RDW) header specifying length of each record. If this RDW header is no-standard a custom header parser can be provided to Cobrix to extract such records.
To this you need to create a parser class that extends this trait and implement the header parser logic. Each concrete class inherited from this trait should be serializable because it need to be transferrable to executors when used from Spark framework.
So the usual way implementing a custom record header parser is
extends Serializable with RecordHeaderParser
A record header parser for RDW is implemented in RecordHeaderParserRDW. This is a good starting point
for implementing your own record header parser.
- Alphabetic
- By Inheritance
- RecordHeaderParser
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Abstract Value Members
-
abstract
def
getHeaderLength: Int
Returns the length of the header sufficient to determine record's validity and size.
Returns the length of the header sufficient to determine record's validity and size. Usually this is a constant number for a given record header flavor.
-
abstract
def
getRecordMetadata(header: Array[Byte], fileOffset: Long, maxOffset: Long, fileSize: Long, recordNum: Long): RecordMetadata
Given a raw values of a record header returns metadata sufficient to parse the record.
Given a raw values of a record header returns metadata sufficient to parse the record.
- header
A record header as an array of bytes
- fileOffset
An offset from the beginning of the underlying file
- maxOffset
A maximum offset allowed to read by the current index chunk
- fileSize
A size of the underlying file
- recordNum
A sequential record number
- returns
A parsed record metadata
-
abstract
def
isHeaderDefinedInCopybook: Boolean
If true the record parser will expect record headers to be defined in the copybook itself.
If true the record parser will expect record headers to be defined in the copybook itself. If false the headers are not expected to be defined in the copybook and the number of bytes returned by
getHeaderLengthwill be truncated before record bytes are passed to the parser.
Concrete Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
def
onReceiveAdditionalInfo(additionalInfo: String): Unit
Clients of 'spark-cobol' can pass additional information to custom record header parsers using
Clients of 'spark-cobol' can pass additional information to custom record header parsers using
.option("rhp_additional_info", "...anything as a string...")If a client provides any additional info the method will be executed just after constructing the record header parser.
Built-in record header parsers ignore the additional info. This info string is intended for custom record header parsers.
- additionalInfo
A string provided by a client for the record header parser.
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()