blob: dcf5c9eeb634efebd12c8c62e124df8f9b7ac250 [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 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>BloomFilterUtil (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)</title>
<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="BloomFilterUtil (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9,"i14":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static 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="class-use/BloomFilterUtil.html">Use</a></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/hadoop/hbase/util/BloomFilterFactory.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterWriter.html" title="interface in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/hadoop/hbase/util/BloomFilterUtil.html" target="_top">Frames</a></li>
<li><a href="BloomFilterUtil.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.hadoop.hbase.util</div>
<h2 title="Class BloomFilterUtil" class="title">Class BloomFilterUtil</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.hadoop.hbase.util.BloomFilterUtil</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>@InterfaceAudience.Private
public final class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.36">BloomFilterUtil</a>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
<div class="block">Utility methods related to BloomFilters</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>static byte[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#bitvals">bitvals</a></span></code>
<div class="block">Bit-value lookup array to prevent doing the same work over and over</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static double</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#LOG2_SQUARED">LOG2_SQUARED</a></span></code>
<div class="block">Used in computing the optimal Bloom filter size.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#PREFIX_LENGTH_KEY">PREFIX_LENGTH_KEY</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#randomGeneratorForTest">randomGeneratorForTest</a></span></code>
<div class="block">A random number generator to use for "fake lookups" when testing to
estimate the ideal false positive rate.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#STATS_RECORD_SEP">STATS_RECORD_SEP</a></span></code>
<div class="block">Record separator for the Bloom filter statistics human-readable string</div>
</td>
</tr>
</table>
</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="colFirst" scope="col">Modifier</th>
<th class="colLast" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#BloomFilterUtil--">BloomFilterUtil</a></span>()</code>
<div class="block">Private constructor to keep this class from being instantiated.</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="t1" class="tableTab"><span><a href="javascript:show(1);">Static 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>static double</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#actualErrorRate-long-long-int-">actualErrorRate</a></span>(long&nbsp;maxKeys,
long&nbsp;bitSize,
int&nbsp;functionCount)</code>
<div class="block">Computes the actual error rate for the given number of elements, number
of bits, and number of hash functions.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>(package private) static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#checkBit-int-org.apache.hadoop.hbase.nio.ByteBuff-int-">checkBit</a></span>(int&nbsp;pos,
<a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;bloomBuf,
int&nbsp;bloomOffset)</code>
<div class="block">Check if bit at specified index is 1.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#computeBitSize-long-double-">computeBitSize</a></span>(long&nbsp;maxKeys,
double&nbsp;errorRate)</code>&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#computeFoldableByteSize-long-int-">computeFoldableByteSize</a></span>(long&nbsp;bitSize,
int&nbsp;foldFactor)</code>
<div class="block">Increases the given byte size of a Bloom filter until it can be folded by
the given factor.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>static long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#computeMaxKeys-long-double-int-">computeMaxKeys</a></span>(long&nbsp;bitSize,
double&nbsp;errorRate,
int&nbsp;hashCount)</code>
<div class="block">The maximum number of keys we can put into a Bloom filter of a certain
size to get the given error rate, with the given number of hash functions.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#contains-byte:A-int-int-org.apache.hadoop.hbase.nio.ByteBuff-int-int-org.apache.hadoop.hbase.util.Hash-int-">contains</a></span>(byte[]&nbsp;buf,
int&nbsp;offset,
int&nbsp;length,
<a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;bloomBuf,
int&nbsp;bloomOffset,
int&nbsp;bloomSize,
<a href="../../../../../org/apache/hadoop/hbase/util/Hash.html" title="class in org.apache.hadoop.hbase.util">Hash</a>&nbsp;hash,
int&nbsp;hashCount)</code>&nbsp;</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>private static &lt;T&gt;&nbsp;boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#contains-org.apache.hadoop.hbase.nio.ByteBuff-int-int-org.apache.hadoop.hbase.util.Hash-int-org.apache.hadoop.hbase.util.HashKey-">contains</a></span>(<a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;bloomBuf,
int&nbsp;bloomOffset,
int&nbsp;bloomSize,
<a href="../../../../../org/apache/hadoop/hbase/util/Hash.html" title="class in org.apache.hadoop.hbase.util">Hash</a>&nbsp;hash,
int&nbsp;hashCount,
<a href="../../../../../org/apache/hadoop/hbase/util/HashKey.html" title="class in org.apache.hadoop.hbase.util">HashKey</a>&lt;T&gt;&nbsp;hashKey)</code>&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#contains-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.nio.ByteBuff-int-int-org.apache.hadoop.hbase.util.Hash-int-org.apache.hadoop.hbase.regionserver.BloomType-">contains</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
<a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;bloomBuf,
int&nbsp;bloomOffset,
int&nbsp;bloomSize,
<a href="../../../../../org/apache/hadoop/hbase/util/Hash.html" title="class in org.apache.hadoop.hbase.util">Hash</a>&nbsp;hash,
int&nbsp;hashCount,
<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a>&nbsp;type)</code>&nbsp;</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterChunk.html" title="class in org.apache.hadoop.hbase.util">BloomFilterChunk</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#createBySize-int-double-int-int-org.apache.hadoop.hbase.regionserver.BloomType-">createBySize</a></span>(int&nbsp;byteSizeHint,
double&nbsp;errorRate,
int&nbsp;hashType,
int&nbsp;foldFactor,
<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a>&nbsp;bloomType)</code>
<div class="block">Creates a Bloom filter chunk of the given size.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#formatStats-org.apache.hadoop.hbase.util.BloomFilterBase-">formatStats</a></span>(<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterBase.html" title="interface in org.apache.hadoop.hbase.util">BloomFilterBase</a>&nbsp;bloomFilter)</code>
<div class="block">A human-readable string with statistics for the given Bloom filter.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>static byte[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#getBloomFilterParam-org.apache.hadoop.hbase.regionserver.BloomType-org.apache.hadoop.conf.Configuration-">getBloomFilterParam</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a>&nbsp;bloomFilterType,
org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>static long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#idealMaxKeys-long-double-">idealMaxKeys</a></span>(long&nbsp;bitSize,
double&nbsp;errorRate)</code>
<div class="block">The maximum number of keys we can put into a Bloom filter of a certain
size to maintain the given error rate, assuming the number of hash
functions is chosen optimally and does not even have to be an integer
(hence the "ideal" in the function name).</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#optimalFunctionCount-int-long-">optimalFunctionCount</a></span>(int&nbsp;maxKeys,
long&nbsp;bitSize)</code>&nbsp;</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#setRandomGeneratorForTest-java.util.Random-">setRandomGeneratorForTest</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a>&nbsp;random)</code>
<div class="block">Sets a random generator to be used for look-ups instead of computing hashes.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#toString-org.apache.hadoop.hbase.util.BloomFilterChunk-">toString</a></span>(<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterChunk.html" title="class in org.apache.hadoop.hbase.util">BloomFilterChunk</a>&nbsp;bloomFilter)</code>&nbsp;</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.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></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="STATS_RECORD_SEP">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>STATS_RECORD_SEP</h4>
<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.39">STATS_RECORD_SEP</a></pre>
<div class="block">Record separator for the Bloom filter statistics human-readable string</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.BloomFilterUtil.STATS_RECORD_SEP">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="LOG2_SQUARED">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>LOG2_SQUARED</h4>
<pre>public static final&nbsp;double <a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.44">LOG2_SQUARED</a></pre>
<div class="block">Used in computing the optimal Bloom filter size. This approximately equals
0.480453.</div>
</li>
</ul>
<a name="randomGeneratorForTest">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>randomGeneratorForTest</h4>
<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.50">randomGeneratorForTest</a></pre>
<div class="block">A random number generator to use for "fake lookups" when testing to
estimate the ideal false positive rate.</div>
</li>
</ul>
<a name="PREFIX_LENGTH_KEY">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>PREFIX_LENGTH_KEY</h4>
<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.52">PREFIX_LENGTH_KEY</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.BloomFilterUtil.PREFIX_LENGTH_KEY">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="bitvals">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>bitvals</h4>
<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.55">bitvals</a></pre>
<div class="block">Bit-value lookup array to prevent doing the same work over and over</div>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="BloomFilterUtil--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>BloomFilterUtil</h4>
<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.69">BloomFilterUtil</a>()</pre>
<div class="block">Private constructor to keep this class from being instantiated.</div>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="computeBitSize-long-double-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>computeBitSize</h4>
<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.80">computeBitSize</a>(long&nbsp;maxKeys,
double&nbsp;errorRate)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>maxKeys</code> - </dd>
<dd><code>errorRate</code> - </dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the number of bits for a Bloom filter than can hold the given
number of keys and provide the given error rate, assuming that the
optimal number of hash functions is used and it does not have to
be an integer.</dd>
</dl>
</li>
</ul>
<a name="setRandomGeneratorForTest-java.util.Random-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setRandomGeneratorForTest</h4>
<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.92">setRandomGeneratorForTest</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a>&nbsp;random)</pre>
<div class="block">Sets a random generator to be used for look-ups instead of computing hashes. Can be used to
simulate uniformity of accesses better in a test environment. Should not be set in a real
environment where correctness matters!
<p>
This gets used in <a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#contains-org.apache.hadoop.hbase.nio.ByteBuff-int-int-org.apache.hadoop.hbase.util.Hash-int-org.apache.hadoop.hbase.util.HashKey-"><code>contains(ByteBuff, int, int, Hash, int, HashKey)</code></a></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>random</code> - The random number source to use, or null to compute actual hashes</dd>
</dl>
</li>
</ul>
<a name="idealMaxKeys-long-double-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>idealMaxKeys</h4>
<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.107">idealMaxKeys</a>(long&nbsp;bitSize,
double&nbsp;errorRate)</pre>
<div class="block">The maximum number of keys we can put into a Bloom filter of a certain
size to maintain the given error rate, assuming the number of hash
functions is chosen optimally and does not even have to be an integer
(hence the "ideal" in the function name).</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>bitSize</code> - </dd>
<dd><code>errorRate</code> - </dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>maximum number of keys that can be inserted into the Bloom filter</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#computeMaxKeys-long-double-int-"><code>for a more precise estimate</code></a></dd>
</dl>
</li>
</ul>
<a name="computeMaxKeys-long-double-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>computeMaxKeys</h4>
<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.124">computeMaxKeys</a>(long&nbsp;bitSize,
double&nbsp;errorRate,
int&nbsp;hashCount)</pre>
<div class="block">The maximum number of keys we can put into a Bloom filter of a certain
size to get the given error rate, with the given number of hash functions.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>bitSize</code> - </dd>
<dd><code>errorRate</code> - </dd>
<dd><code>hashCount</code> - </dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the maximum number of keys that can be inserted in a Bloom filter
to maintain the target error rate, if the number of hash functions
is provided.</dd>
</dl>
</li>
</ul>
<a name="actualErrorRate-long-long-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>actualErrorRate</h4>
<pre>public static&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.142">actualErrorRate</a>(long&nbsp;maxKeys,
long&nbsp;bitSize,
int&nbsp;functionCount)</pre>
<div class="block">Computes the actual error rate for the given number of elements, number
of bits, and number of hash functions. Taken directly from the
<a href=
"http://en.wikipedia.org/wiki/Bloom_filter#Probability_of_false_positives"
> Wikipedia Bloom filter article</a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>maxKeys</code> - </dd>
<dd><code>bitSize</code> - </dd>
<dd><code>functionCount</code> - </dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the actual error rate</dd>
</dl>
</li>
</ul>
<a name="computeFoldableByteSize-long-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>computeFoldableByteSize</h4>
<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.156">computeFoldableByteSize</a>(long&nbsp;bitSize,
int&nbsp;foldFactor)</pre>
<div class="block">Increases the given byte size of a Bloom filter until it can be folded by
the given factor.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>bitSize</code> - </dd>
<dd><code>foldFactor</code> - </dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Foldable byte size</dd>
</dl>
</li>
</ul>
<a name="optimalFunctionCount-int-long-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>optimalFunctionCount</h4>
<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.171">optimalFunctionCount</a>(int&nbsp;maxKeys,
long&nbsp;bitSize)</pre>
</li>
</ul>
<a name="createBySize-int-double-int-int-org.apache.hadoop.hbase.regionserver.BloomType-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createBySize</h4>
<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterChunk.html" title="class in org.apache.hadoop.hbase.util">BloomFilterChunk</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.191">createBySize</a>(int&nbsp;byteSizeHint,
double&nbsp;errorRate,
int&nbsp;hashType,
int&nbsp;foldFactor,
<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a>&nbsp;bloomType)</pre>
<div class="block">Creates a Bloom filter chunk of the given size.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>byteSizeHint</code> - the desired number of bytes for the Bloom filter bit
array. Will be increased so that folding is possible.</dd>
<dd><code>errorRate</code> - target false positive rate of the Bloom filter</dd>
<dd><code>hashType</code> - Bloom filter hash function type</dd>
<dd><code>foldFactor</code> - </dd>
<dd><code>bloomType</code> - </dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the new Bloom filter of the desired size</dd>
</dl>
</li>
</ul>
<a name="contains-byte:A-int-int-org.apache.hadoop.hbase.nio.ByteBuff-int-int-org.apache.hadoop.hbase.util.Hash-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>contains</h4>
<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.208">contains</a>(byte[]&nbsp;buf,
int&nbsp;offset,
int&nbsp;length,
<a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;bloomBuf,
int&nbsp;bloomOffset,
int&nbsp;bloomSize,
<a href="../../../../../org/apache/hadoop/hbase/util/Hash.html" title="class in org.apache.hadoop.hbase.util">Hash</a>&nbsp;hash,
int&nbsp;hashCount)</pre>
</li>
</ul>
<a name="contains-org.apache.hadoop.hbase.nio.ByteBuff-int-int-org.apache.hadoop.hbase.util.Hash-int-org.apache.hadoop.hbase.util.HashKey-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>contains</h4>
<pre>private static&nbsp;&lt;T&gt;&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.215">contains</a>(<a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;bloomBuf,
int&nbsp;bloomOffset,
int&nbsp;bloomSize,
<a href="../../../../../org/apache/hadoop/hbase/util/Hash.html" title="class in org.apache.hadoop.hbase.util">Hash</a>&nbsp;hash,
int&nbsp;hashCount,
<a href="../../../../../org/apache/hadoop/hbase/util/HashKey.html" title="class in org.apache.hadoop.hbase.util">HashKey</a>&lt;T&gt;&nbsp;hashKey)</pre>
</li>
</ul>
<a name="contains-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.nio.ByteBuff-int-int-org.apache.hadoop.hbase.util.Hash-int-org.apache.hadoop.hbase.regionserver.BloomType-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>contains</h4>
<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.243">contains</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
<a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;bloomBuf,
int&nbsp;bloomOffset,
int&nbsp;bloomSize,
<a href="../../../../../org/apache/hadoop/hbase/util/Hash.html" title="class in org.apache.hadoop.hbase.util">Hash</a>&nbsp;hash,
int&nbsp;hashCount,
<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a>&nbsp;type)</pre>
</li>
</ul>
<a name="checkBit-int-org.apache.hadoop.hbase.nio.ByteBuff-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>checkBit</h4>
<pre>static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.256">checkBit</a>(int&nbsp;pos,
<a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;bloomBuf,
int&nbsp;bloomOffset)</pre>
<div class="block">Check if bit at specified index is 1.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>pos</code> - index of bit</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if bit at specified index is 1, false if 0.</dd>
</dl>
</li>
</ul>
<a name="formatStats-org.apache.hadoop.hbase.util.BloomFilterBase-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>formatStats</h4>
<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.271">formatStats</a>(<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterBase.html" title="interface in org.apache.hadoop.hbase.util">BloomFilterBase</a>&nbsp;bloomFilter)</pre>
<div class="block">A human-readable string with statistics for the given Bloom filter.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>bloomFilter</code> - the Bloom filter to output statistics for;</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a string consisting of "&lt;key&gt;: &lt;value&gt;" parts
separated by <a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#STATS_RECORD_SEP"><code>STATS_RECORD_SEP</code></a>.</dd>
</dl>
</li>
</ul>
<a name="toString-org.apache.hadoop.hbase.util.BloomFilterChunk-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toString</h4>
<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.286">toString</a>(<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterChunk.html" title="class in org.apache.hadoop.hbase.util">BloomFilterChunk</a>&nbsp;bloomFilter)</pre>
</li>
</ul>
<a name="getBloomFilterParam-org.apache.hadoop.hbase.regionserver.BloomType-org.apache.hadoop.conf.Configuration-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getBloomFilterParam</h4>
<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.291">getBloomFilterParam</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a>&nbsp;bloomFilterType,
org.apache.hadoop.conf.Configuration&nbsp;conf)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code></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="class-use/BloomFilterUtil.html">Use</a></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/hadoop/hbase/util/BloomFilterFactory.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterWriter.html" title="interface in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/hadoop/hbase/util/BloomFilterUtil.html" target="_top">Frames</a></li>
<li><a href="BloomFilterUtil.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 ======= -->
<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2021 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>