A API Spark JDBC parece bifurcar para carregar todos os dados da tabela MySQL para a memória sem. Então, quando você tenta carregar uma tabela grande, o que você deve fazer é usar os dados clonados da API Spark para o HDFS primeiro (o JSON deve ser usado para manter a estrutura do esquema), assim:
spark.read.jdbc(jdbcUrl, tableName, prop)
.write()
.json("/fileName.json");
Então você pode trabalhar no HDFS normalmente.
spark.read().json("/fileName.json")
.createOrReplaceTempView(tableName);