用Spark是因为它的计算在内存中,速度比MR快很多,而且提供了严格一次性语义和丰富的算子,但缺点就是没提供良好的SQL支持,要手写代码。相比之下Flink对SQL的支持就很好,速度也非常快,但它主要是做流式计算的(Flink有在向流批一体推进,具体我也不是很了解,可以自己查下)。Scala可以不用学,首先Flink通常使用SQL和Java开发;而Spark方面也有PySpark这个东西在,写起来简单方便,性能也不会差太多,毕竟Python只是一层皮,起个调API的作用,具体任务都是Spark再跑。