blob: 74303c81aa9f79cb70e358209f67358ca49d6def [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_65) on Wed Apr 20 18:03:36 PDT 2016 -->
<title>HdfsAtomicDataAccessor</title>
<meta name="date" content="2016-04-20">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="HdfsAtomicDataAccessor";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/hawq/pxf/plugins/hdfs/ChunkWritable.html" title="class in org.apache.hawq.pxf.plugins.hdfs"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/hawq/pxf/plugins/hdfs/HdfsDataFragmenter.html" title="class in org.apache.hawq.pxf.plugins.hdfs"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/hawq/pxf/plugins/hdfs/HdfsAtomicDataAccessor.html" target="_top">Frames</a></li>
<li><a href="HdfsAtomicDataAccessor.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.hawq.pxf.plugins.hdfs</div>
<h2 title="Class HdfsAtomicDataAccessor" class="title">Class HdfsAtomicDataAccessor</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li><a href="../../../../../../org/apache/hawq/pxf/api/utilities/Plugin.html" title="class in org.apache.hawq.pxf.api.utilities">org.apache.hawq.pxf.api.utilities.Plugin</a></li>
<li>
<ul class="inheritance">
<li>org.apache.hawq.pxf.plugins.hdfs.HdfsAtomicDataAccessor</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../../../../org/apache/hawq/pxf/api/ReadAccessor.html" title="interface in org.apache.hawq.pxf.api">ReadAccessor</a></dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../../../../../org/apache/hawq/pxf/plugins/hdfs/QuotedLineBreakAccessor.html" title="class in org.apache.hawq.pxf.plugins.hdfs">QuotedLineBreakAccessor</a></dd>
</dl>
<hr>
<br>
<pre>public abstract class <span class="typeNameLabel">HdfsAtomicDataAccessor</span>
extends <a href="../../../../../../org/apache/hawq/pxf/api/utilities/Plugin.html" title="class in org.apache.hawq.pxf.api.utilities">Plugin</a>
implements <a href="../../../../../../org/apache/hawq/pxf/api/ReadAccessor.html" title="interface in org.apache.hawq.pxf.api">ReadAccessor</a></pre>
<div class="block">Base class for enforcing the complete access of a file in one accessor.
Since we are not accessing the file using the splittable API, but instead are
using the "simple" stream API, it means that we cannot fetch different parts
(splits) of the file in different segments. Instead each file access brings
the complete file. And, if several segments would access the same file, then
each one will return the whole file and we will observe in the query result,
each record appearing number_of_segments times. To avoid this we will only
have one segment (segment 0) working for this case - enforced with
isWorkingSegment() method. Naturally this is the less recommended working
mode since we are not making use of segment parallelism. HDFS accessors for
a specific file type should inherit from this class only if the file they are
reading does not support splitting: a protocol-buffer file, regular file, ...</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected java.io.InputStream</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hawq/pxf/plugins/hdfs/HdfsAtomicDataAccessor.html#inp">inp</a></span></code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.hawq.pxf.api.utilities.Plugin">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.hawq.pxf.api.utilities.<a href="../../../../../../org/apache/hawq/pxf/api/utilities/Plugin.html" title="class in org.apache.hawq.pxf.api.utilities">Plugin</a></h3>
<code><a href="../../../../../../org/apache/hawq/pxf/api/utilities/Plugin.html#inputData">inputData</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hawq/pxf/plugins/hdfs/HdfsAtomicDataAccessor.html#HdfsAtomicDataAccessor-org.apache.hawq.pxf.api.utilities.InputData-">HdfsAtomicDataAccessor</a></span>(<a href="../../../../../../org/apache/hawq/pxf/api/utilities/InputData.html" title="class in org.apache.hawq.pxf.api.utilities">InputData</a>&nbsp;input)</code>
<div class="block">Constructs a HdfsAtomicDataAccessor object.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hawq/pxf/plugins/hdfs/HdfsAtomicDataAccessor.html#closeForRead--">closeForRead</a></span>()</code>
<div class="block">Closes the access stream when finished reading the file</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hawq/pxf/plugins/hdfs/HdfsAtomicDataAccessor.html#isThreadSafe--">isThreadSafe</a></span>()</code>
<div class="block">Checks if the plugin is thread safe or not, based on inputData.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hawq/pxf/plugins/hdfs/HdfsAtomicDataAccessor.html#openForRead--">openForRead</a></span>()</code>
<div class="block">Opens the file using the non-splittable API for HADOOP HDFS file access
This means that instead of using a FileInputFormat for access, we use a
Java stream.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/hawq/pxf/api/OneRow.html" title="class in org.apache.hawq.pxf.api">OneRow</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hawq/pxf/plugins/hdfs/HdfsAtomicDataAccessor.html#readNextObject--">readNextObject</a></span>()</code>
<div class="block">Fetches one record from the file.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="inp">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>inp</h4>
<pre>protected&nbsp;java.io.InputStream inp</pre>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="HdfsAtomicDataAccessor-org.apache.hawq.pxf.api.utilities.InputData-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>HdfsAtomicDataAccessor</h4>
<pre>public&nbsp;HdfsAtomicDataAccessor(<a href="../../../../../../org/apache/hawq/pxf/api/utilities/InputData.html" title="class in org.apache.hawq.pxf.api.utilities">InputData</a>&nbsp;input)</pre>
<div class="block">Constructs a HdfsAtomicDataAccessor object.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>input</code> - all input parameters coming from the client</dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="openForRead--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>openForRead</h4>
<pre>public&nbsp;boolean&nbsp;openForRead()
throws java.lang.Exception</pre>
<div class="block">Opens the file using the non-splittable API for HADOOP HDFS file access
This means that instead of using a FileInputFormat for access, we use a
Java stream.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hawq/pxf/api/ReadAccessor.html#openForRead--">openForRead</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hawq/pxf/api/ReadAccessor.html" title="interface in org.apache.hawq.pxf.api">ReadAccessor</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true for successful file open, false otherwise</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - if opening the resource failed</dd>
</dl>
</li>
</ul>
<a name="readNextObject--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>readNextObject</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/hawq/pxf/api/OneRow.html" title="class in org.apache.hawq.pxf.api">OneRow</a>&nbsp;readNextObject()
throws java.io.IOException</pre>
<div class="block">Fetches one record from the file.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hawq/pxf/api/ReadAccessor.html#readNextObject--">readNextObject</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hawq/pxf/api/ReadAccessor.html" title="interface in org.apache.hawq.pxf.api">ReadAccessor</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <a href="../../../../../../org/apache/hawq/pxf/api/OneRow.html" title="class in org.apache.hawq.pxf.api"><code>OneRow</code></a> record as a Java object. Returns null if none.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd>
</dl>
</li>
</ul>
<a name="closeForRead--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>closeForRead</h4>
<pre>public&nbsp;void&nbsp;closeForRead()
throws java.lang.Exception</pre>
<div class="block">Closes the access stream when finished reading the file</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hawq/pxf/api/ReadAccessor.html#closeForRead--">closeForRead</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hawq/pxf/api/ReadAccessor.html" title="interface in org.apache.hawq.pxf.api">ReadAccessor</a></code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - if closing the resource failed</dd>
</dl>
</li>
</ul>
<a name="isThreadSafe--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>isThreadSafe</h4>
<pre>public&nbsp;boolean&nbsp;isThreadSafe()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hawq/pxf/api/utilities/Plugin.html#isThreadSafe--">Plugin</a></code></span></div>
<div class="block">Checks if the plugin is thread safe or not, based on inputData.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../../org/apache/hawq/pxf/api/utilities/Plugin.html#isThreadSafe--">isThreadSafe</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hawq/pxf/api/utilities/Plugin.html" title="class in org.apache.hawq.pxf.api.utilities">Plugin</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if plugin is thread safe</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/hawq/pxf/plugins/hdfs/ChunkWritable.html" title="class in org.apache.hawq.pxf.plugins.hdfs"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/hawq/pxf/plugins/hdfs/HdfsDataFragmenter.html" title="class in org.apache.hawq.pxf.plugins.hdfs"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/hawq/pxf/plugins/hdfs/HdfsAtomicDataAccessor.html" target="_top">Frames</a></li>
<li><a href="HdfsAtomicDataAccessor.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>