in emr-dynamodb-hive/src/main/java/org/apache/hadoop/hive/dynamodb/filter/DynamoDBFilterPushdown.java [360:387]
private List<DynamoDBFilter> getDynamoDBFiltersFromSchema(List<KeySchemaElement> schema,
Map<String, DynamoDBFilter> filterMap) {
List<DynamoDBFilter> dynamoDBFilters = new ArrayList<>();
boolean hashKeyFilterExists = false;
if (schema.size() > 0
&& DYNAMODB_KEY_TYPE_HASH.equals(schema.get(HASH_KEY_INDEX).getKeyType())) {
String hashKeyName = schema.get(HASH_KEY_INDEX).getAttributeName();
if (filterMap.containsKey(hashKeyName)) {
DynamoDBFilter hashKeyFilter = filterMap.get(hashKeyName);
if (DynamoDBFilterOperator.EQ.equals(hashKeyFilter.getOperator())) {
dynamoDBFilters.add(hashKeyFilter);
hashKeyFilterExists = true;
}
}
}
if (hashKeyFilterExists && schema.size() > 1) {
String rangeKeyName = schema.get(RANGE_KEY_INDEX).getAttributeName();
if (filterMap.containsKey(rangeKeyName)) {
DynamoDBFilter rangeKeyFilter = filterMap.get(rangeKeyName);
if (eligibleOperatorsForRange.contains(rangeKeyFilter.getOperator())) {
dynamoDBFilters.add(rangeKeyFilter);
}
}
}
return dynamoDBFilters;
}