Joining Massive High-Dimensional Datasets