Package 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
public abstract class LobRef<DATATYPE,CONTAINERTYPE,ACCESSORTYPE> extends java.lang.Object implements java.io.Closeable, org.apache.hadoop.io.WritableAbstract 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 Description protected static java.lang.ThreadLocal<java.util.regex.Matcher>EXTERNAL_MATCHERstatic org.apache.commons.logging.LogLOG
-
Constructor Summary
Constructors Modifier Constructor Description protectedLobRef()protectedLobRef(CONTAINERTYPE container)protectedLobRef(java.lang.String file, long offset, long length)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description java.lang.Objectclone()voidclose()protected abstract CONTAINERTYPEdeepCopyData(CONTAINERTYPE data)Make a copy of the materialized data.protected voidfinalize()DATATYPEgetData()protected CONTAINERTYPEgetDataObj()Internal API to retrieve the data object.ACCESSORTYPEgetDataStream(org.apache.hadoop.conf.Configuration conf, org.apache.hadoop.fs.Path basePath)Get access to the LOB data itself.ACCESSORTYPEgetDataStream(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 ACCESSORTYPEgetExternalSource(org.apache.sqoop.io.LobFile.Reader reader)Using the LobFile reader, get an accessor InputStream or Reader to the underlying data.protected abstract DATATYPEgetInternalData(CONTAINERTYPE data)protected abstract ACCESSORTYPEgetInternalSource(CONTAINERTYPE data)Wrap the materialized data in an InputStream or Reader.booleanisExternal()voidreadFields(java.io.DataInput in)protected abstract voidreadFieldsInternal(java.io.DataInput in)Perform the readFields() operation on a fully-materializable record.protected voidsetDataObj(CONTAINERTYPE data)Internal API to set the data object.java.lang.StringtoString()voidwrite(java.io.DataOutput out)protected abstract voidwriteInternal(java.io.DataOutput out)Perform the write() operation on a fully-materializable record.
-
-
-
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:
clonein classjava.lang.Object- Throws:
java.lang.CloneNotSupportedException
-
finalize
protected void finalize() throws java.lang.Throwable- Overrides:
finalizein classjava.lang.Object- Throws:
java.lang.Throwable
-
close
public void close() throws java.io.IOException- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.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 filesystembasePath- 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(org.apache.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:
toStringin classjava.lang.Object
-
readFields
public void readFields(java.io.DataInput in) throws java.io.IOException- Specified by:
readFieldsin interfaceorg.apache.hadoop.io.Writable- Throws:
java.io.IOException
-
readFieldsInternal
protected abstract void readFieldsInternal(java.io.DataInput in) throws java.io.IOExceptionPerform 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:
writein interfaceorg.apache.hadoop.io.Writable- Throws:
java.io.IOException
-
writeInternal
protected abstract void writeInternal(java.io.DataOutput out) throws java.io.IOExceptionPerform the write() operation on a fully-materializable record.- Parameters:
out- the DataOutput to deserialize to.- Throws:
java.io.IOException
-
-