SparkSql sql风格操作DataFrame

391 阅读1分钟

Note:将DataFrame注册为一个临时视图view,然后将可以针对view直接执行各种sql.

视图视图有两种:session级别视图,global级别视图。

全局视图在application级别有效

注意使用全局表是需要全路径访问:global_temp.表名

    val df: DataFrame = spark.read.schema(schema).csv("data/stu.txt")
    df.createGlobalTempView("stu")
    df.createTempView("stu_tmp")
    spark.sql(
      """
        |select * from global_temp.stu
      """.stripMargin).show()

    spark.sql("select * from stu_tmp limit 2")
//    新开一个sparksession
    val sparkSession: SparkSession = spark.newSession()

    sparkSession.sql(
      """
        |select * from global_temp.stu limit 1
      """.stripMargin).show()
//报错 在新开的sparksession中不能使用 上一个session创建的临时表
    sparkSession.sql("select * from stu_tmp").show()