К сожалению, я не знаю ничего, что существует из коробки, чтобы сделать это.
Тривиально, вы можете реализовать это с помощью двух сканеров и выполнить объединенное чтение. Поскольку оба сканера возвращают отсортированные данные, если два значения ключа равны, вы продвигаете оба сканера. Если Ключ от Scanner1 сортируется перед Ключом от Scanner2, вы знаете, что Ключ не существует в таблице из Scanner2, и вы продвигаете Scanner1. Если Ключ от Сканера2 сортируется до Ключа от Сканера1, этот Ключ не существует в таблице от Сканера2, и вы продвигаете Сканер2.
Однако, как вы сказали, это будет довольно медленно, так как у вас есть один поток, читающий одну таблицу, и у вас, вероятно, есть несколько ядер для одновременной работы.
Чтобы сделать эту шкалу, вы можете "разбить" свою таблицу на сегменты (например, если ваши ключи таблицы - алфавит [A, B, C, ... Z], в этом случае каждый раздел может быть буквой), и вы можете распараллелить свой алгоритм. Используя пример с алфавитом, вы можете иметь 26 клиентов, одновременно читающих части таблиц. Это то, что может быть легко реализовано как работа по уменьшению карты.