结构化数据的利器——Spark SQL 的 DataFrame 和 Dataset API 挺好用的,SQL 味儿浓,代码也灵活。你既能像写 SQL 那样操作数据,又能用强类型的方式规避低级错误,开发起来比较顺手。Catalyst 优化器也挺聪明,能帮你自动优化查询计划,少了多自己调参数的烦恼。

强类型的Dataset API在开发大型项目时管用,避免了不少运行时 Bug。配合 SQL 支持,你可以先注册一个临时视图,用熟悉的 SQL 语法去查数据,响应也快。像df.createOrReplaceTempView("userView")这种写法上手快。

另外,Spark SQL 和Hive打得火热,Hive 里的表、UDF 都能直接拿过来用,简直不要太方便。如果你以前就在 Hive 那一挂,用 Spark SQL 基本无缝切换。

列式存储格式Parquet也内建支持,读写效率高,尤其在几百 G 数据时,省时省力。还支持表分区,按字段分目录存数据,用来查最近一个月的数据,那效率简直飞起。

写数据的时候,支持AppendOverwrite这些模式,还有动态分区插入,不用你自己写太多逻辑,直接交给引擎自动,轻松不少。

外部数据源也对接得蛮好,HDFSAmazon S3Cassandra统统搞得定。加上UDF 注册和使用的灵活性,基本上你能想到的需求它都能覆盖。

如果你数据场景复杂,性能调优必不可少。并行度调整缓存策略这些可以大幅提升效率。开发时不妨打开spark.ui.showConsoleProgress看看进度和执行计划,有。

如果你是 SQL 老手,或是 Data Engineer,这篇指南值得一读。是 1.1.0 这个版本,挺多新特性,拿来直接用省了多踩坑时间。