How to get table names from SQL query?

前端 未结 6 1533
太阳男子
太阳男子 2020-12-18 04:48

I want to get all the tables names from a sql query in Spark using Scala.

Lets say user sends a SQL query which looks like:

select * from table_1 as         


        
6条回答
  •  情书的邮戳
    2020-12-18 04:58

    I had some complicated sql queries with nested queries and iterated on @Jacek Laskowski's answer to get this

      def getTables(spark: SparkSession, query: String): Seq[String] = {
        val logicalPlan = spark.sessionState.sqlParser.parsePlan(query)
        var tables = new ListBuffer[String]()
        var i: Int = 0
    
        while (logicalPlan(i) != null) {
          logicalPlan(i) match {
            case t: UnresolvedRelation => tables += t.tableName
            case _ => 
          }
          i += 1
        }
    
        tables.toList
      }
    

提交回复
热议问题