org.apache.sqoop.lib

## Class LobRef<DATATYPE,CONTAINERTYPE,ACCESSORTYPE>

- java.lang.Object
- - org.apache.sqoop.lib.LobRef<DATATYPE,CONTAINERTYPE,ACCESSORTYPE>

- All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, org.apache.hadoop.io.Writable
  Direct Known Subclasses:
    LobRef

      public abstract class LobRef<DATATYPE,CONTAINERTYPE,ACCESSORTYPE>
      extends java.lang.Object
      implements java.io.Closeable, org.apache.hadoop.io.Writable

  Abstract base class that holds a reference to a Blob or a Clob. DATATYPE is the type being held (e.g., a byte array). CONTAINERTYPE is the type used to hold this data (e.g., BytesWritable). ACCESSORTYPE is the type used to access this data in a streaming fashion (either an InputStream or a Reader).

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static java.lang.ThreadLocal<java.util.regex.Matcher>` | `EXTERNAL_MATCHER`
    `static org.apache.commons.logging.Log` | `LOG`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `LobRef()`
    `protected` | `LobRef(CONTAINERTYPE container)`
    `protected` | `LobRef(java.lang.String file, long offset, long length)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.Object` | `clone()`
    `void` | `close()`
    `protected abstract CONTAINERTYPE` | `deepCopyData(CONTAINERTYPE data)` Make a copy of the materialized data.
    `protected void` | `finalize()`
    `DATATYPE` | `getData()`
    `protected CONTAINERTYPE` | `getDataObj()` Internal API to retrieve the data object.
    `ACCESSORTYPE` | `getDataStream(org.apache.hadoop.conf.Configuration conf, org.apache.hadoop.fs.Path basePath)` Get access to the LOB data itself.
    `ACCESSORTYPE` | `getDataStream(org.apache.hadoop.mapreduce.Mapper.Context mapContext)` Convenience method to access #getDataStream(Configuration, Path) from within a map task that read this LobRef from a file-based InputSplit.
    `protected abstract ACCESSORTYPE` | `getExternalSource(com.cloudera.sqoop.io.LobFile.Reader reader)` Using the LobFile reader, get an accessor InputStream or Reader to the underlying data.
    `protected abstract DATATYPE` | `getInternalData(CONTAINERTYPE data)`
    `protected abstract ACCESSORTYPE` | `getInternalSource(CONTAINERTYPE data)` Wrap the materialized data in an InputStream or Reader.
    `boolean` | `isExternal()`
    `void` | `readFields(java.io.DataInput in)`
    `protected abstract void` | `readFieldsInternal(java.io.DataInput in)` Perform the readFields() operation on a fully-materializable record.
    `protected void` | `setDataObj(CONTAINERTYPE data)` Internal API to set the data object.
    `java.lang.String` | `toString()`
    `void` | `write(java.io.DataOutput out)`
    `protected abstract void` | `writeInternal(java.io.DataOutput out)` Perform the write() operation on a fully-materializable record.

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### LOG

          public static final org.apache.commons.logging.Log LOG

    - #### EXTERNAL_MATCHER

          protected static final java.lang.ThreadLocal<java.util.regex.Matcher> EXTERNAL_MATCHER

  - ### Constructor Detail

    - #### LobRef

          protected LobRef()

    - #### LobRef

          protected LobRef(CONTAINERTYPE container)

    - #### LobRef

          protected LobRef(java.lang.String file,
                long offset,
                long length)

  - ### Method Detail

    - #### getDataObj

          protected CONTAINERTYPE getDataObj()

      Internal API to retrieve the data object.

    - #### setDataObj

          protected void setDataObj(CONTAINERTYPE data)

      Internal API to set the data object.

    - #### clone

          public java.lang.Object clone()
                                 throws java.lang.CloneNotSupportedException

      Overrides:
        `clone` in class `java.lang.Object`
      Throws:
        `java.lang.CloneNotSupportedException`

    - #### finalize

          protected void finalize()
                           throws java.lang.Throwable

      Overrides:
        `finalize` in class `java.lang.Object`
      Throws:
        `java.lang.Throwable`

    - #### close

          public void close()
                     throws java.io.IOException

      Specified by:
        `close` in interface `java.io.Closeable`
      Specified by:
        `close` in interface `java.lang.AutoCloseable`
      Throws:
        `java.io.IOException`

    - #### isExternal

          public boolean isExternal()

      Returns:
        true if the LOB data is in an external file; false if it materialized inline.

    - #### getDataStream

          public ACCESSORTYPE getDataStream(org.apache.hadoop.mapreduce.Mapper.Context mapContext)
                                     throws java.io.IOException

      Convenience method to access #getDataStream(Configuration, Path) from within a map task that read this LobRef from a file-based InputSplit.
      Parameters:
        `mapContext` - the Mapper.Context instance that encapsulates the current map task.
      Returns:
        an object that lazily streams the record to the client.
      Throws:
        `java.lang.IllegalArgumentException` - if it cannot find the source path for this LOB based on the MapContext.
        `java.io.IOException` - if it could not read the LOB from external storage.

    - #### getDataStream

          public ACCESSORTYPE getDataStream(org.apache.hadoop.conf.Configuration conf,
                                   org.apache.hadoop.fs.Path basePath)
                                     throws java.io.IOException

      Get access to the LOB data itself. This method returns a lazy reader of the LOB data, accessing the filesystem for external LOB storage as necessary.
      Parameters:
        `conf` - the Configuration used to access the filesystem
        `basePath` - the base directory where the table records are stored.
      Returns:
        an object that lazily streams the record to the client.
      Throws:
        `java.io.IOException` - if it could not read the LOB from external storage.

    - #### getExternalSource

          protected abstract ACCESSORTYPE getExternalSource(com.cloudera.sqoop.io.LobFile.Reader reader)
                                                     throws java.io.IOException

      Using the LobFile reader, get an accessor InputStream or Reader to the underlying data.
      Throws:
        `java.io.IOException`

    - #### getInternalSource

          protected abstract ACCESSORTYPE getInternalSource(CONTAINERTYPE data)

      Wrap the materialized data in an InputStream or Reader.

    - #### getInternalData

          protected abstract DATATYPE getInternalData(CONTAINERTYPE data)

      Returns:
        the materialized data itself.

    - #### deepCopyData

          protected abstract CONTAINERTYPE deepCopyData(CONTAINERTYPE data)

      Make a copy of the materialized data.

    - #### getData

          public DATATYPE getData()

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

    - #### readFields

          public void readFields(java.io.DataInput in)
                          throws java.io.IOException

      Specified by:
        `readFields` in interface `org.apache.hadoop.io.Writable`
      Throws:
        `java.io.IOException`

    - #### readFieldsInternal

          protected abstract void readFieldsInternal(java.io.DataInput in)
                                              throws java.io.IOException

      Perform the readFields() operation on a fully-materializable record.
      Parameters:
        `in` - the DataInput to deserialize from.
      Throws:
        `java.io.IOException`

    - #### write

          public void write(java.io.DataOutput out)
                     throws java.io.IOException

      Specified by:
        `write` in interface `org.apache.hadoop.io.Writable`
      Throws:
        `java.io.IOException`

    - #### writeInternal

          protected abstract void writeInternal(java.io.DataOutput out)
                                         throws java.io.IOException

      Perform the write() operation on a fully-materializable record.
      Parameters:
        `out` - the DataOutput to deserialize to.
      Throws:
        `java.io.IOException`

Copyright © 2015 The Apache Software Foundation