Zeppelin的Spark SQL解释器和其他Spark解释器(PySpark、SparkR以及Spark解释器)共享SparkContext和SparkSession。这意味着使用其他Spark解释器注册的表可以使用Spark SQL解释器进行访问。
例如:
%spark
case class People(name: String, age: Int)
var df = spark.createDataFrame(List(People("jeff", 23), People("andy", 20)))
df.createOrReplaceTempView("people")
%spark.sql
select * from people
- 和Spark、PySpark、SparkR等解释器不同的是,Spark SQL解释器还支持并行运行,即支持同时运行多个SQL
- 只需在Spark解释器配置中将 zeppelin.spark.concurrentSQL 设为true即可启用SQL并发支持,另外还可以通过zeppelin.spark.concurrentSQL.max控制最大允许的并发数
- 另外,得益于Spark SQL本身的特性,SparkSQL Statement支持大多数Hive QL语法。Spark集成Hive后,大多数场景下,我们可以使用Spark SQL解释器访问Hive表来进行更高效的分析计算。
支持多语句
%spark.sql 支持多条Sql语句,每条Sql语句以分号隔开。
支持SQL注释
你可以在SQL中穿插 comment,有2种comment
- 以 — 开头的单行comment
- / / 包围的多行comment
支持并发
目前默认SQL也是串行执行的,没有启用并发。
你可以在Spark解释器配置中将 zeppelin.spark.concurrentSQL 设为true即可启用SQL并发支持,另外还可以通过zeppelin.spark.concurrentSQL.max控制最大允许的并发数
公众号 钉钉群