И даже если делать union на отдельных строках, если их больше тысячи, ждать бесполезно, проще .collect и преобразовать на драйвере как надо. Походу, там квадратичная сложность и на каждом шаге проверяются схемы всех предыдущих датафреймов. Впрочем, код я так и не посмотрел, так что это всего лишь предположение