private static List<KuduPredicate> leafToPredicates(PredicateLeaf leaf, boolean isNot, Schema schema) {
    ColumnSchema column = schema.getColumn(leaf.getColumnName());
    Object value = leaf.getLiteral();

    switch (leaf.getOperator()) {
    case EQUALS:
      if (isNot) {
        // Kudu doesn't support NOT EQUALS.
        return Collections.emptyList();
      } else {
        return Collections.singletonList(KuduPredicate.newComparisonPredicate(column,
            ComparisonOp.EQUAL, toKuduValue(value, column)));
      }
    case LESS_THAN:
      if (isNot) {
        return Collections.singletonList(KuduPredicate.newComparisonPredicate(column,
            ComparisonOp.GREATER_EQUAL, toKuduValue(value, column)));
      } else {
        return Collections.singletonList(KuduPredicate.newComparisonPredicate(column,
            ComparisonOp.LESS, toKuduValue(value, column)));
      }
    case LESS_THAN_EQUALS:
      if (isNot) {
        return Collections.singletonList(KuduPredicate.newComparisonPredicate(column,
            ComparisonOp.GREATER, toKuduValue(value, column)));
      } else {
        return Collections.singletonList(KuduPredicate.newComparisonPredicate(column,
            ComparisonOp.LESS_EQUAL, toKuduValue(value, column)));
      }
    case IS_NULL:
      if (isNot) {
        return Collections.singletonList(KuduPredicate.newIsNotNullPredicate(column));
      } else {
        return Collections.singletonList(KuduPredicate.newIsNullPredicate(column));
      }
    case IN:
      if (isNot) {
        // Kudu doesn't support NOT IN.
        return Collections.emptyList();
      } else {
        List<Object> values = leaf.getLiteralList().stream()
            .map((Object v) -> toKuduValue(v, column))
            .collect(Collectors.toList());
        return Collections.singletonList(KuduPredicate.newInListPredicate(column, values));
      }
    case BETWEEN:
      List<Object> values = leaf.getLiteralList();
      Object leftValue = toKuduValue(values.get(0), column);
      Object rightValue = toKuduValue(values.get(1), column);
      if (isNot) {
        return Arrays.asList(
            KuduPredicate.newComparisonPredicate(column, ComparisonOp.LESS, leftValue),
            KuduPredicate.newComparisonPredicate(column, ComparisonOp.GREATER, rightValue)
        );
      } else {
        return Arrays.asList(
            KuduPredicate.newComparisonPredicate(column, ComparisonOp.GREATER_EQUAL, leftValue),
            KuduPredicate.newComparisonPredicate(column, ComparisonOp.LESS_EQUAL, rightValue)
        );
      }
    case NULL_SAFE_EQUALS:
      // Kudu doesn't support null value predicates.
      return Collections.emptyList();
    default:
      throw new RuntimeException("Unhandled operator: " + leaf.getOperator());
    }
  }
Translate the search argument to the KuduPredicates.
kudu-handler/src/java/org/apache/hadoop/hive/kudu/KuduPredicateHandler.java