<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Kudu C++ client API: kudu::client::KuduBloomFilterBuilder Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">Kudu C++ client API
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><b>kudu</b></li><li class="navelem"><b>client</b></li><li class="navelem"><a class="el" href="classkudu_1_1client_1_1KuduBloomFilterBuilder.html">KuduBloomFilterBuilder</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classkudu_1_1client_1_1KuduBloomFilterBuilder-members.html">List of all members</a>  </div>
  <div class="headertitle"><div class="title">kudu::client::KuduBloomFilterBuilder Class Reference</div></div>
</div><!--header-->
<div class="contents">

<p>Builder class to help build <code><a class="el" href="classkudu_1_1client_1_1KuduBloomFilter.html" title="Bloom filter to be used with IN Bloom filter predicate.">KuduBloomFilter</a></code> to be used with IN Bloom filter predicate.  
 <a href="classkudu_1_1client_1_1KuduBloomFilterBuilder.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="scan__predicate_8h_source.html">scan_predicate.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a4da74bd04dac54419fc0495cd25c70f4" id="r_a4da74bd04dac54419fc0495cd25c70f4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduBloomFilterBuilder.html#a4da74bd04dac54419fc0495cd25c70f4">KuduBloomFilterBuilder</a> (size_t num_keys)</td></tr>
<tr class="separator:a4da74bd04dac54419fc0495cd25c70f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c4f28749ac0619bd50fcadbf6b3dd64" id="r_a9c4f28749ac0619bd50fcadbf6b3dd64"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classkudu_1_1client_1_1KuduBloomFilterBuilder.html">KuduBloomFilterBuilder</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduBloomFilterBuilder.html#a9c4f28749ac0619bd50fcadbf6b3dd64">false_positive_probability</a> (double fpp)</td></tr>
<tr class="separator:a9c4f28749ac0619bd50fcadbf6b3dd64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f2fdf9b51516c69ef68c1daa1a423f8" id="r_a0f2fdf9b51516c69ef68c1daa1a423f8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classkudu_1_1client_1_1KuduBloomFilterBuilder.html">KuduBloomFilterBuilder</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduBloomFilterBuilder.html#a0f2fdf9b51516c69ef68c1daa1a423f8">hash_algorithm</a> (HashAlgorithm hash_algorithm)</td></tr>
<tr class="separator:a0f2fdf9b51516c69ef68c1daa1a423f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c56a009edaf35511bc3387eecb94392" id="r_a7c56a009edaf35511bc3387eecb94392"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classkudu_1_1client_1_1KuduBloomFilterBuilder.html">KuduBloomFilterBuilder</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduBloomFilterBuilder.html#a7c56a009edaf35511bc3387eecb94392">hash_seed</a> (uint32_t hash_seed)</td></tr>
<tr class="separator:a7c56a009edaf35511bc3387eecb94392"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a90bf3b2387dd08cbbeda59497ceeee6a" id="r_a90bf3b2387dd08cbbeda59497ceeee6a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classkudu_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduBloomFilterBuilder.html#a90bf3b2387dd08cbbeda59497ceeee6a">Build</a> (<a class="el" href="classkudu_1_1client_1_1KuduBloomFilter.html">KuduBloomFilter</a> **bloom_filter)</td></tr>
<tr class="separator:a90bf3b2387dd08cbbeda59497ceeee6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Builder class to help build <code><a class="el" href="classkudu_1_1client_1_1KuduBloomFilter.html" title="Bloom filter to be used with IN Bloom filter predicate.">KuduBloomFilter</a></code> to be used with IN Bloom filter predicate. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a4da74bd04dac54419fc0495cd25c70f4" name="a4da74bd04dac54419fc0495cd25c70f4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4da74bd04dac54419fc0495cd25c70f4">&#9670;&#160;</a></span>KuduBloomFilterBuilder()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">kudu::client::KuduBloomFilterBuilder::KuduBloomFilterBuilder </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>num_keys</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">num_keys</td><td>Expected number of elements to be inserted in the Bloom filter. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a90bf3b2387dd08cbbeda59497ceeee6a" name="a90bf3b2387dd08cbbeda59497ceeee6a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a90bf3b2387dd08cbbeda59497ceeee6a">&#9670;&#160;</a></span>Build()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classkudu_1_1Status.html">Status</a> kudu::client::KuduBloomFilterBuilder::Build </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classkudu_1_1client_1_1KuduBloomFilter.html">KuduBloomFilter</a> **&#160;</td>
          <td class="paramname"><em>bloom_filter</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Build a new Bloom filter to be used with IN Bloom filter predicate.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">bloom_filter</td><td>On success, the created Bloom filter raw pointer. Caller owns the Bloom filter until it's passed to <code><a class="el" href="classkudu_1_1client_1_1KuduTable.html#a2daf78f5f0596fa5bfd234e86e2c002a">KuduTable::NewInBloomFilterPredicate()</a></code>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>On success, <a class="el" href="classkudu_1_1Status.html#adaff3248b2f66041d0a7dd59f118b7ac">Status::OK()</a> with the created Bloom filter in <code>bloom_filter</code> output parameter. On failure to allocate memory or invalid arguments, corresponding error status. </dd></dl>

</div>
</div>
<a id="a9c4f28749ac0619bd50fcadbf6b3dd64" name="a9c4f28749ac0619bd50fcadbf6b3dd64"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c4f28749ac0619bd50fcadbf6b3dd64">&#9670;&#160;</a></span>false_positive_probability()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classkudu_1_1client_1_1KuduBloomFilterBuilder.html">KuduBloomFilterBuilder</a> &amp; kudu::client::KuduBloomFilterBuilder::false_positive_probability </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>fpp</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">fpp</td><td>Desired false positive probability between 0.0 and 1.0. If not provided, defaults to 0.01. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Reference to the updated object. </dd></dl>

</div>
</div>
<a id="a0f2fdf9b51516c69ef68c1daa1a423f8" name="a0f2fdf9b51516c69ef68c1daa1a423f8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0f2fdf9b51516c69ef68c1daa1a423f8">&#9670;&#160;</a></span>hash_algorithm()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classkudu_1_1client_1_1KuduBloomFilterBuilder.html">KuduBloomFilterBuilder</a> &amp; kudu::client::KuduBloomFilterBuilder::hash_algorithm </td>
          <td>(</td>
          <td class="paramtype">HashAlgorithm&#160;</td>
          <td class="paramname"><em>hash_algorithm</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">hash_algorithm</td><td>Hash algorithm used to hash keys before inserting to the Bloom filter. If not provided, defaults to FAST_HASH. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>Currently only FAST_HASH is supported. </dd></dl>
<dl class="section return"><dt>Returns</dt><dd>Reference to the updated object. </dd></dl>

</div>
</div>
<a id="a7c56a009edaf35511bc3387eecb94392" name="a7c56a009edaf35511bc3387eecb94392"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7c56a009edaf35511bc3387eecb94392">&#9670;&#160;</a></span>hash_seed()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classkudu_1_1client_1_1KuduBloomFilterBuilder.html">KuduBloomFilterBuilder</a> &amp; kudu::client::KuduBloomFilterBuilder::hash_seed </td>
          <td>(</td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>hash_seed</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">hash_seed</td><td>Seed used with hash algorithm to hash the keys before inserting to the Bloom filter. If not provided, defaults to 0. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Reference to the updated object. </dd></dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/kudu/client/<a class="el" href="scan__predicate_8h_source.html">scan_predicate.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/>
<address class="footer">
  <small>Generated for Kudu version 1.17.0 on Mon Sep 4 2023 19:49:30 by Doxygen 1.9.8</small>
  <br>
  <small>Copyright © 2023 The Apache Software Foundation.</small>
</address>
</body>
</html>
