You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by si...@apache.org on 2022/09/09 21:21:21 UTC

[pinot] branch master updated: BloomFilterRule should only recommend for supported column type (#9364)

This is an automated email from the ASF dual-hosted git repository.

siddteotia pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new 2afd273c84 BloomFilterRule should only recommend for supported column type (#9364)
2afd273c84 is described below

commit 2afd273c84673fc321eb7f1b2dcb5c13d991b358
Author: Benson Yuan <yu...@gmail.com>
AuthorDate: Fri Sep 9 14:21:14 2022 -0700

    BloomFilterRule should only recommend for supported column type (#9364)
---
 .../controller/recommender/rules/impl/BloomFilterRule.java    | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/impl/BloomFilterRule.java b/pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/impl/BloomFilterRule.java
index a2e9f2d93e..5a9de70e5d 100644
--- a/pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/impl/BloomFilterRule.java
+++ b/pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/impl/BloomFilterRule.java
@@ -19,7 +19,10 @@
 package org.apache.pinot.controller.recommender.rules.impl;
 
 import com.google.common.util.concurrent.AtomicDouble;
+import java.util.Arrays;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 import org.apache.pinot.common.request.context.ExpressionContext;
 import org.apache.pinot.common.request.context.FilterContext;
 import org.apache.pinot.common.request.context.predicate.Predicate;
@@ -29,6 +32,7 @@ import org.apache.pinot.controller.recommender.rules.AbstractRule;
 import org.apache.pinot.controller.recommender.rules.io.params.BloomFilterRuleParams;
 import org.apache.pinot.controller.recommender.rules.utils.FixedLenBitset;
 import org.apache.pinot.core.query.request.context.QueryContext;
+import org.apache.pinot.spi.data.FieldSpec.DataType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -41,6 +45,9 @@ import org.slf4j.LoggerFactory;
 public class BloomFilterRule extends AbstractRule {
   private static final Logger LOGGER = LoggerFactory.getLogger(BloomFilterRule.class);
   private final BloomFilterRuleParams _params;
+  // Derived from BloomFilterHandler
+  private static final Set<DataType> COMPATIBLE_DATA_TYPES = new HashSet<>(
+      Arrays.asList(DataType.INT, DataType.LONG, DataType.FLOAT, DataType.DOUBLE, DataType.STRING, DataType.BYTES));
 
   public BloomFilterRule(InputManager input, ConfigManager output) {
     super(input, output);
@@ -68,7 +75,9 @@ public class BloomFilterRule extends AbstractRule {
 
     for (int i = 0; i < numCols; i++) {
       String dimName = _input.intToColName(i);
-      if (((weights[i] / totalWeight.get()) > _params._thresholdMinPercentEqBloomfilter)
+      DataType columnType = _input.getFieldType(dimName);
+      if (COMPATIBLE_DATA_TYPES.contains(columnType)
+          && ((weights[i] / totalWeight.get()) > _params._thresholdMinPercentEqBloomfilter)
           //The partitioned dimension should be frequently > P used
           && (_input.getCardinality(dimName)
           < _params._thresholdMaxCardinalityBloomfilter)) { //The Cardinality < C (1 million for 1MB size)


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org