scala> spark.sql("select count(*) from(select distinct v1,v2 from graph_df)").show()
+--------+
|count(1)|
+--------+
| 1343124|
+--------+
scala> spark.sql("select count(*) from (select v1 from graph_df union select v2 from graph_df)").show()
+--------+
|count(1)|
+--------+
| 166061|
+--------+
Если есть массовые рассылки - то имеет смысл завести в базе табличку
и складывать письма туда и раз в час по cron рассылать не более 100 штук сообщений.
Вообще все что связано с рассылками - надо согласовывать с хостингом.
SMTP в наше время это уже что-то очень старое. В рамках предприятия разве что имеет смысл.