<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Thrift API 和過濾器語言 > 貢獻者:[xixici](https://github.com/xixici) Apache [Thrift](https://thrift.apache.org/) 是跨平臺跨語言的開發框架。HBase 包含了 Thrift API 和過濾語言。Thrift API 依賴于客戶端和服務器進程。 你可以在服務端和客戶端維 Thrift 設置安全身份驗證,參照 [Client-side Configuration for Secure Operation - Thrift Gateway](#security.client.thrift) 和 [Configure the Thrift Gateway to Authenticate on Behalf of the Client](#security.gateway.thrift). 接下來,討論 Thrift API 所提供的過濾器語言。 ## 103\. 過濾器語言 Thrift 過濾語言在 HBase 0.92 版本引入. 提供了通過在 HBase 上使用 Thrift 或使用 HBase Shell 來進行服務端過濾. 你可以在 Shell 中,使用`scan help`查看詳細信息. 將過濾器寫成字符串,在服務端解析成過濾器。 ### 103.1\. 常規過濾字符串語法 字符串形式過濾器: ``` “FilterName (argument, argument,... , argument)” ``` 記住以下語法規則: * 指定過濾器的名稱,后跟括號中以逗號分隔的參數列表。 * 如果參數是字符串,應該用單引號`'`包括。 * 布爾值, 整形, 比較符 ( <, >, !=)不需要用引號包括。 * 過濾器名稱必須是單個單詞。除空格,單引號和括號外,允許使用所有 ASCII 字符。 * 過濾器的參數可以包含任何 ASCII 字符。如果參數中存在單引號,則必須通過附加的前一個單引號對其進行轉義。 ### 103.2\. 復合過濾器和運算符 二元運算符 `AND` 使用 `AND` ,鍵值對必須滿足兩端過濾器 `OR` 使用 `OR`,鍵值對至少滿足一端過濾器 一元運算符 `SKIP` 對特定行,如果鍵值對不滿足過濾,則跳過此行 `WHILE` 對特定行, 鍵值將通過,直至過濾條件不滿足為止。 Example 29\. 復合運算符 你可以組合運算符來創建層次結構的過濾器如: ``` (Filter1 AND Filter2) OR (Filter3 AND Filter4) ``` ### 103.3\. 運算次序 1. 括號有著最高優先級 2. 然后是一元運算符 `SKIP` 和 `WHILE` ,優先級相同 3. 二元運算符 `AND` 最高, 其次 `OR` Example 30\. 優先級示例 ``` Filter1 AND Filter2 OR Filter is evaluated as (Filter1 AND Filter2) OR Filter3 ``` ``` Filter1 AND SKIP Filter2 OR Filter3 is evaluated as (Filter1 AND (SKIP Filter2)) OR Filter3 ``` 你可以使用括號精確控制運算順序 ### 103.4\. 比較運算符 以下比較運算符: 1. LESS (<) 2. LESS_OR_EQUAL (?) 3. EQUAL (=) 4. NOT_EQUAL (!=) 5. GREATER_OR_EQUAL (>=) 6. GREATER (>) 7. NO_OP (no operation) 客戶端應采用(<, ?, =, !=, >, >=) 表示比較 ### 103.5\. 比較器 比較器可以如下任一種: 1. _BinaryComparator_ - 按字典順序比較特定字節數組,使用 Bytes.compareTo(byte[], byte[]) 2. _BinaryPrefixComparator_ - 按字典順序比較特定字節數組,只比較字節數組長度. 3. _RegexStringComparator_ - 使用給定正則表達式,比較特定字節組。在這種比較器中,只有 EQUAL 和 NOT_EQUAL 有效 4. _SubStringComparator_ - 給定字符子串是否出現在特定字節組中。不區分大小寫。在這種比較器中,只有 EQUAL 和 NOT_EQUAL 有效 比較器一般語法規則: `ComparatorType:ComparatorValue` 不同比較器的不同比較類型: 1. _BinaryComparator_ - binary 二進制 2. _BinaryPrefixComparator_ - binaryprefix 二進制長度 3. _RegexStringComparator_ - regexstring 正則表達式 4. _SubStringComparator_ - substring 子字符串 ComparatorValue 可以任意值 比較示例: 1. `binary:abc` 匹配字典順序大于"abc" 2. `binaryprefix:abc` 匹配字典書序前 3 字符等于 "abc" 3. `regexstring:ab*yz` 匹配以 ab 開頭,已 yz 結尾的內容 4. `substring:abc123` 匹配所有以"abc123"開頭的內容 ### 103.6\. PHP 客戶端使用示例 ``` <? $_SERVER['PHP_ROOT'] = realpath(dirname(__FILE__).'/..'); require_once $_SERVER['PHP_ROOT'].'/flib/__flib.php'; flib_init(FLIB_CONTEXT_SCRIPT); require_module('storage/hbase'); $hbase = new HBase('<server_name_running_thrift_server>', <port on which thrift server is running>); $hbase->open(); $client = $hbase->getClient(); $result = $client->scannerOpenWithFilterString('table_name', "(PrefixFilter ('row2') AND (QualifierFilter (>=, 'binary:xyz'))) AND (TimestampsFilter ( 123, 456))"); $to_print = $client->scannerGetList($result,1); while ($to_print) { print_r($to_print); $to_print = $client->scannerGetList($result,1); } $client->scannerClose($result); ?> ``` ### 103.7\. 過濾器示例 * `"PrefixFilter ('Row') AND PageFilter (1) AND FirstKeyOnlyFilter ()"` 會返回符合下列條件的所有鍵值對 1. 鍵值對所在行有前綴 _Row_ 2. 鍵值對必須處于第一行 3. 鍵值對必須是第一個鍵值 * `"(RowFilter (=, 'binary:Row 1') AND TimeStampsFilter (74689, 89734)) OR ColumnRangeFilter ('abc', true, 'xyz', false))"` 會返回符合下列條件的所有鍵值對 * 鍵值對所在行有前綴 _Row 1_ * 鍵值必須具有時間戳 74689 或者 89734. * 或者滿足一下條件: * 鍵值對必須位于字典序 >= abc 和 < xyz 之間 * `"SKIP ValueFilter (0)"` 如果行中任何值部位 0, 則跳過 ### 103.8\. 單個過濾器語法 KeyOnlyFilter 此過濾器不帶任何參數。它僅返回每個鍵值的關鍵組件。 FirstKeyOnlyFilter 此過濾器不帶任何參數。它僅返回每行的第一個鍵值。 PrefixFilter 此過濾器采用一個參數 - 行鍵的前綴。它僅返回以指定行前綴開頭的行中存在的鍵值 ColumnPrefixFilter 此過濾器采用一個參數 - 列前綴。它僅返回以指定列前綴開頭的列中存在的鍵值。列前綴的格式必須為: `“qualifier”`. MultipleColumnPrefixFilter 此過濾器采用列前綴列表。它返回以任何指定列前綴開頭的列中存在的鍵值。每個列前綴必須采用以下形式:`“qualifier”`. ColumnCountGetFilter 此過濾器采用一個參數 - 一個限制。它返回表中的第一個限制列數。 PageFilter 此過濾器采用一個參數 - 頁面大小。它返回表中的頁面大小行數。 ColumnPaginationFilter 此過濾器有兩個參數 - 限制和偏移。它返回偏移列數后的列數限制。它為所有行執行此操作。 InclusiveStopFilter 此過濾器使用一個參數 - 要停止掃描的行鍵。它返回行中存在的所有鍵值,包括指定的行。 TimeStampsFilter 此過濾器采用時間戳列表。它返回時間戳與任何指定時間戳匹配的鍵值。 RowFilter 該過濾器采用比較運算符和比較器。它使用 compare 運算符將每個行鍵與比較器進行比較,如果比較返回 true,則返回該行中的所有鍵值。 Family Filter 該過濾器采用比較運算符和比較器。它使用比較運算符將每個列族名稱與比較器進行比較,如果比較返回 true,則返回該列族中的所有單元格。 QualifierFilter 該過濾器采用比較運算符和比較器。它使用 compare 運算符將每個限定符名稱與比較器進行比較,如果比較返回 true,則返回該列中的所有鍵值。 ValueFilter 該過濾器采用比較運算符和比較器。它使用比較運算符將每個值與比較器進行比較,如果比較返回 true,則返回該鍵值。 DependentColumnFilter 此過濾器有兩個參數 - 族和限定符。它嘗試在每一行中找到此列,并返回該行中具有相同時間戳的所有鍵值。如果該行不包含指定的列 - 將返回該行中的任何鍵值。 SingleColumnValueFilter 該過濾器采用列族,限定符,比較運算符和比較器。如果未找到指定的列 - 將發出該行的所有列。如果找到該列并且與比較器的比較返回 true,則將發出該行的所有列。如果條件失敗,則不會發出該行。 SingleColumnValueExcludeFilter 此過濾器采用相同的參數,其行為與 SingleColumnValueFilter 相同 - 但是,如果找到該列并且條件通過,則除了測試的列值之外,將發出該行的所有列。 ColumnRangeFilter 此過濾器僅用于選擇列在 minColumn 和 maxColumn 之間的鍵。它還需要兩個布爾變量來指示是否包含 minColumn 和 maxColumn。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看