1. A computer implemented method, comprising: calculating, by a plurality of concurrently executing execution threads, hash values for join columns of a first input table and a second input table; storing the calculated hash values in a set of disjoint thread-local hash maps for each of the first input table and the second input table as key—index pairs where each key of the key—index pairs that is distinct is mapped to a unique integer, the key of the key—index pairs being extracted from the partitions of the first and second input tables and the index of the key—index pairs comprising one of the unique integers, the storing including storing a row number of the join columns of the first or second input table corresponding to an associated value stored-for each of the key—index pairs hash map entry; merging the set of thread-local hash maps of the first input table, by a second plurality of execution threads operating concurrently, to produce a set of merged hash maps, each of the second plurality of execution threads responsible for a dedicated range of all of the thread-local hash maps; comparing each entry of the merged hash maps to each entry of the set of thread-local hash maps for the second input table to determine whether there is a match, according to a join type; and generating an output table including matches as determined by the comparing.