Zeppelin的Spark SQL解释器和其他Spark解释器(PySpark、SparkR以及Spark解释器)共享SparkContext和SparkSession。这意味着使用其他Spark解释器注册的表可以使用Spark SQL解释器进行访问。

例如:

  1. %spark
  2. case class People(name: String, age: Int)
  3. var df = spark.createDataFrame(List(People("jeff", 23), People("andy", 20)))
  4. df.createOrReplaceTempView("people")
  1. %spark.sql
  2. 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语句以分号隔开。
image.png

支持SQL注释

你可以在SQL中穿插 comment,有2种comment

  • 以 — 开头的单行comment
  • / / 包围的多行comment

image.png

支持并发

目前默认SQL也是串行执行的,没有启用并发。
你可以在Spark解释器配置中将 zeppelin.spark.concurrentSQL 设为true即可启用SQL并发支持,另外还可以通过zeppelin.spark.concurrentSQL.max控制最大允许的并发数

公众号 钉钉群

image.png image.png