<!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_102) on Mon Oct 03 08:48:22 EDT 2016 -->
<title>L-Index</title>
<meta name="date" content="2016-10-03">
<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="L-Index";
        }
    }
    catch(err) {
    }
//-->
</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>Package</li>
<li>Class</li>
<li>Use</li>
<li><a href="../overview-tree.html">Tree</a></li>
<li><a href="../deprecated-list.html">Deprecated</a></li>
<li class="navBarCell1Rev">Index</li>
<li><a href="../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="index-11.html">Prev Letter</a></li>
<li><a href="index-13.html">Next Letter</a></li>
</ul>
<ul class="navList">
<li><a href="../index.html?index-files/index-12.html" target="_top">Frames</a></li>
<li><a href="index-12.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>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="contentContainer"><a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">Q</a>&nbsp;<a href="index-18.html">R</a>&nbsp;<a href="index-19.html">S</a>&nbsp;<a href="index-20.html">T</a>&nbsp;<a href="index-21.html">U</a>&nbsp;<a href="index-22.html">V</a>&nbsp;<a href="index-23.html">W</a>&nbsp;<a name="I:L">
<!--   -->
</a>
<h2 class="title">L</h2>
<dl>
<dt><span class="memberNameLink"><a href="../org/apache/pirk/responder/wideskies/storm/OutputBolt.html#latch">latch</a></span> - Static variable in class org.apache.pirk.responder.wideskies.storm.<a href="../org/apache/pirk/responder/wideskies/storm/OutputBolt.html" title="class in org.apache.pirk.responder.wideskies.storm">OutputBolt</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="../org/apache/pirk/responder/wideskies/ResponderProps.html#LIMITHITSPERSELECTOR">LIMITHITSPERSELECTOR</a></span> - Static variable in class org.apache.pirk.responder.wideskies.<a href="../org/apache/pirk/responder/wideskies/ResponderProps.html" title="class in org.apache.pirk.responder.wideskies">ResponderProps</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="../org/apache/pirk/responder/wideskies/common/ComputeEncryptedRow.html#loadCacheFromHDFS-org.apache.hadoop.fs.FileSystem-java.lang.String-org.apache.pirk.query.wideskies.Query-">loadCacheFromHDFS(FileSystem, String, Query)</a></span> - Static method in class org.apache.pirk.responder.wideskies.common.<a href="../org/apache/pirk/responder/wideskies/common/ComputeEncryptedRow.html" title="class in org.apache.pirk.responder.wideskies.common">ComputeEncryptedRow</a></dt>
<dd>
<div class="block">Populate the cache based on the pre-generated exp table in hdfs</div>
</dd>
<dt><a href="../org/apache/pirk/schema/data/LoadDataSchemaTest.html" title="class in org.apache.pirk.schema.data"><span class="typeNameLink">LoadDataSchemaTest</span></a> - Class in <a href="../org/apache/pirk/schema/data/package-summary.html">org.apache.pirk.schema.data</a></dt>
<dd>
<div class="block">Test suite for LoadDataSchema and DataSchema</div>
</dd>
<dt><span class="memberNameLink"><a href="../org/apache/pirk/schema/data/LoadDataSchemaTest.html#LoadDataSchemaTest--">LoadDataSchemaTest()</a></span> - Constructor for class org.apache.pirk.schema.data.<a href="../org/apache/pirk/schema/data/LoadDataSchemaTest.html" title="class in org.apache.pirk.schema.data">LoadDataSchemaTest</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="../org/apache/pirk/utils/SystemConfiguration.html#loadProperties-java.io.InputStream-">loadProperties(InputStream)</a></span> - Static method in class org.apache.pirk.utils.<a href="../org/apache/pirk/utils/SystemConfiguration.html" title="class in org.apache.pirk.utils">SystemConfiguration</a></dt>
<dd>
<div class="block">Load the properties in the Properties object and then trim any whitespace</div>
</dd>
<dt><span class="memberNameLink"><a href="../org/apache/pirk/utils/SystemConfiguration.html#loadPropsFromDir-java.lang.String-">loadPropsFromDir(String)</a></span> - Static method in class org.apache.pirk.utils.<a href="../org/apache/pirk/utils/SystemConfiguration.html" title="class in org.apache.pirk.utils">SystemConfiguration</a></dt>
<dd>
<div class="block">Loads the properties from local properties file in the specified directory.</div>
</dd>
<dt><span class="memberNameLink"><a href="../org/apache/pirk/utils/SystemConfiguration.html#loadPropsFromFile-java.io.File-">loadPropsFromFile(File)</a></span> - Static method in class org.apache.pirk.utils.<a href="../org/apache/pirk/utils/SystemConfiguration.html" title="class in org.apache.pirk.utils">SystemConfiguration</a></dt>
<dd>
<div class="block">Loads the properties from the specified file.</div>
</dd>
<dt><span class="memberNameLink"><a href="../org/apache/pirk/utils/SystemConfiguration.html#loadPropsFromFile-java.lang.String-org.apache.hadoop.fs.FileSystem-">loadPropsFromFile(String, FileSystem)</a></span> - Static method in class org.apache.pirk.utils.<a href="../org/apache/pirk/utils/SystemConfiguration.html" title="class in org.apache.pirk.utils">SystemConfiguration</a></dt>
<dd>
<div class="block">Loads the properties from the specified file in hdfs</div>
</dd>
<dt><span class="memberNameLink"><a href="../org/apache/pirk/utils/SystemConfiguration.html#loadPropsFromFile-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.FileSystem-">loadPropsFromFile(Path, FileSystem)</a></span> - Static method in class org.apache.pirk.utils.<a href="../org/apache/pirk/utils/SystemConfiguration.html" title="class in org.apache.pirk.utils">SystemConfiguration</a></dt>
<dd>
<div class="block">Loads the properties from the specified file in hdfs</div>
</dd>
<dt><span class="memberNameLink"><a href="../org/apache/pirk/utils/SystemConfiguration.html#loadPropsFromHDFSDir-java.lang.String-org.apache.hadoop.fs.FileSystem-">loadPropsFromHDFSDir(String, FileSystem)</a></span> - Static method in class org.apache.pirk.utils.<a href="../org/apache/pirk/utils/SystemConfiguration.html" title="class in org.apache.pirk.utils">SystemConfiguration</a></dt>
<dd>
<div class="block">Loads the properties from local properties file in the specified directory in hdfs.</div>
</dd>
<dt><span class="memberNameLink"><a href="../org/apache/pirk/utils/SystemConfiguration.html#loadPropsFromResource-java.lang.String-">loadPropsFromResource(String)</a></span> - Static method in class org.apache.pirk.utils.<a href="../org/apache/pirk/utils/SystemConfiguration.html" title="class in org.apache.pirk.utils">SystemConfiguration</a></dt>
<dd>
<div class="block">Loads the properties from the specified resource on the current classloader.</div>
</dd>
<dt><a href="../org/apache/pirk/schema/query/LoadQuerySchemaTest.html" title="class in org.apache.pirk.schema.query"><span class="typeNameLink">LoadQuerySchemaTest</span></a> - Class in <a href="../org/apache/pirk/schema/query/package-summary.html">org.apache.pirk.schema.query</a></dt>
<dd>
<div class="block">Test suite for LoadQuerySchema and QuerySchema</div>
</dd>
<dt><span class="memberNameLink"><a href="../org/apache/pirk/schema/query/LoadQuerySchemaTest.html#LoadQuerySchemaTest--">LoadQuerySchemaTest()</a></span> - Constructor for class org.apache.pirk.schema.query.<a href="../org/apache/pirk/schema/query/LoadQuerySchemaTest.html" title="class in org.apache.pirk.schema.query">LoadQuerySchemaTest</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="../org/apache/pirk/schema/data/DataSchemaLoader.html#loadSchema-java.io.InputStream-">loadSchema(InputStream)</a></span> - Method in class org.apache.pirk.schema.data.<a href="../org/apache/pirk/schema/data/DataSchemaLoader.html" title="class in org.apache.pirk.schema.data">DataSchemaLoader</a></dt>
<dd>
<div class="block">Returns the data schema as defined in XML format on the given stream.</div>
</dd>
<dt><span class="memberNameLink"><a href="../org/apache/pirk/schema/query/QuerySchemaLoader.html#loadSchema-java.io.InputStream-">loadSchema(InputStream)</a></span> - Method in class org.apache.pirk.schema.query.<a href="../org/apache/pirk/schema/query/QuerySchemaLoader.html" title="class in org.apache.pirk.schema.query">QuerySchemaLoader</a></dt>
<dd>
<div class="block">Returns the query schema as defined in XML format on the given stream.</div>
</dd>
<dt><a href="../org/apache/pirk/serialization/LocalFileSystemStore.html" title="class in org.apache.pirk.serialization"><span class="typeNameLink">LocalFileSystemStore</span></a> - Class in <a href="../org/apache/pirk/serialization/package-summary.html">org.apache.pirk.serialization</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="../org/apache/pirk/serialization/LocalFileSystemStore.html#LocalFileSystemStore--">LocalFileSystemStore()</a></span> - Constructor for class org.apache.pirk.serialization.<a href="../org/apache/pirk/serialization/LocalFileSystemStore.html" title="class in org.apache.pirk.serialization">LocalFileSystemStore</a></dt>
<dd>
<div class="block">Creates a new storage service on the local file system using default Java serialization.</div>
</dd>
<dt><span class="memberNameLink"><a href="../org/apache/pirk/serialization/LocalFileSystemStore.html#LocalFileSystemStore-org.apache.pirk.serialization.SerializationService-">LocalFileSystemStore(SerializationService)</a></span> - Constructor for class org.apache.pirk.serialization.<a href="../org/apache/pirk/serialization/LocalFileSystemStore.html" title="class in org.apache.pirk.serialization">LocalFileSystemStore</a></dt>
<dd>
<div class="block">Creates a new storage service on the local file system using the given serializer.</div>
</dd>
<dt><span class="memberNameLink"><a href="../org/apache/pirk/test/utils/Inputs.html#LOCALFS_QUERY_FILES">LOCALFS_QUERY_FILES</a></span> - Static variable in class org.apache.pirk.test.utils.<a href="../org/apache/pirk/test/utils/Inputs.html" title="class in org.apache.pirk.test.utils">Inputs</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="../org/apache/pirk/schema/data/partitioner/PrimitiveTypePartitioner.html#LONG">LONG</a></span> - Static variable in class org.apache.pirk.schema.data.partitioner.<a href="../org/apache/pirk/schema/data/partitioner/PrimitiveTypePartitioner.html" title="class in org.apache.pirk.schema.data.partitioner">PrimitiveTypePartitioner</a></dt>
<dd>&nbsp;</dd>
</dl>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">Q</a>&nbsp;<a href="index-18.html">R</a>&nbsp;<a href="index-19.html">S</a>&nbsp;<a href="index-20.html">T</a>&nbsp;<a href="index-21.html">U</a>&nbsp;<a href="index-22.html">V</a>&nbsp;<a href="index-23.html">W</a>&nbsp;</div>
<!-- ======= 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>Package</li>
<li>Class</li>
<li>Use</li>
<li><a href="../overview-tree.html">Tree</a></li>
<li><a href="../deprecated-list.html">Deprecated</a></li>
<li class="navBarCell1Rev">Index</li>
<li><a href="../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="index-11.html">Prev Letter</a></li>
<li><a href="index-13.html">Next Letter</a></li>
</ul>
<ul class="navList">
<li><a href="../index.html?index-files/index-12.html" target="_top">Frames</a></li>
<li><a href="index-12.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>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
