У нас есть несколько представлений, которые создаются поверх других представлений и так далее. Я хочу знать, найти все таблицы и их путь, который используется этими представлениями. Тем не менее, не в состоянии понять, как это сделать.
Изначально я думал разобрать 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: [], PressedFilters:
И следующее ничего не возвращает, оно просто печатается на консоли.
plan = spark.sql("select * from database.table").explain(true)