org.apache.sqoop.lib
Class LobRef<DATATYPE,CONTAINERTYPE,ACCESSORTYPE>

java.lang.Object
  extended by org.apache.sqoop.lib.LobRef<DATATYPE,CONTAINERTYPE,ACCESSORTYPE>
All Implemented Interfaces:
java.io.Closeable, 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
protected static java.lang.ThreadLocal<java.util.regex.Matcher> EXTERNAL_MATCHER
           
static org.apache.commons.logging.Log LOG
           
 
Constructor Summary
protected LobRef()
           
protected LobRef(CONTAINERTYPE container)
           
protected LobRef(java.lang.String file, long offset, long length)
           
 
Method Summary
 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
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 © 2011 The Apache Software Foundation