“War of the Hadoop SQL engines. And the winner is …?” 这是个很好的问题。不过,无论答案如何,我们都值得花一点时间了解一下 Spark SQL 这个 Spark 家族里面的成员。 本来Apache Spark SQL 官网上的代码片断(Spark官网上的例子有个通病:不提供完整代码)已经写得算比较清楚,但如果用户完全把它的代码拷贝下来,可能会碰到编译不通过的问题。另外,Spark官网上的例子还有另外一个通病:不提供test data。因此,为了大家能不走弯路、快速体验Spark SQL API,本文将展示一个改写自官网例子的小程序,以及运行结果。
[A 程序]
[B 测试数据]
product.data:
[C 执行]
用 spark-submit 将程序提交到Yarn上执行。
[D 执行结果]
- Console:
- Yarn Web Console:
- Yarn App Log:
[E 小结]
- 注意需要把内部类 Product 定义在main方法外面,否则会引起编译错误
- 直接利用Spark SQL API定义一个“表对象”(SchemaRDD)还是比较简单的
- 下一步可以试一试和 HiveQL的集成