Pyspark - получить список всех таблиц для данного представления - PullRequest
1 голос
/ 04 октября 2019

У нас есть несколько представлений, которые создаются поверх других представлений и так далее. Я хочу знать, найти все таблицы и их путь, который используется этими представлениями. Тем не менее, не в состоянии понять, как это сделать.

Изначально я думал разобрать 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) 
...