我们在其他一些视图之上创建了一些视图,依此类推。我想知道查找这些视图消耗的所有表及其路径。但是,无法弄清楚该怎么做。
最初,我想解析Query Plan
并获取此信息。但是,当我解析该计划时,我无法获得完整的路径。
plan = spark.sql("explain extended select * from database.table")
计划类型为pyspark.sql.dataframe.DataFrame = [plan: string]
然后我将其转换为字符串并解析位置。但是,位置不包含整个路径。
plan_str = df.select("plan").rdd.map(lambda r: r[0]).collect()[0]
loc = re.search(r'InMemoryFileIndex\[(.*)\]', plan_str, re.IGNORECASE)
if loc:
print(loc.group(1))
输出
adl://abc.azuredatalakestore.net/informationmart/database...,PartitionFilters:[],PushedFilters:
并且随后不返回任何内容,仅在控制台上打印。
plan = spark.sql("select * from database.table").explain(true)