如何在databricks中查找某个模式下所有表的位置

问题描述 投票:0回答:1

您好,我正在使用 Azure databricks

11.3 LTS(include Apache Spark 3.3.0,scala 2.12)
。我有一个模式 mydata,在该模式下大约有 25 个表。我需要找到此模式下所有表的位置。我的示例输出将类似于这种格式

| Table Name | Location |
|____________|__________|
|.....       |....      |

尝试过sql命令

Describe detail mydata.table_name

但是这是一个耗时的过程,因为我需要编写 25 个表的 sql 代码 你能指导我该怎么做吗?

azure-databricks
1个回答
0
投票

我尝试过以下方法:

就我而言,我使用了 databricks 提供的默认架构。

import pandas as pd
tables = spark.sql("SHOW TABLES IN default").toPandas()
output_df = pd.DataFrame({'Table Name': tables['tableName'], 'Location': tables['database']})
display(output_df)

使用pyspark:

from pyspark.sql import SparkSession
tables = spark.sql("SHOW TABLES IN default")
output_df = tables.select("tableName", "database")
display(output_df)

结果:

Table Name  Location
dilip01 default
dilip010    default
dilip01_temp    default
dilip1  default
dilip_02    default
dilip_02_transformed    default
table1  default
table2  default

在上面的代码中,使用 Spark SQL 在默认模式下执行

SHOW TABLES
命令, 它返回一个 DataFrame,其中包含有关该架构中的表的信息

.toPandas()
将 Spark DataFrame 转换为 Pandas DataFrame

创建一个新的 Pandas DataFrame,其中包含两列:“Table Name”和“Location”。 它使用原始 DataFrame 中的“tableName”列作为表名称,使用“database”列作为模式名称。

© www.soinside.com 2019 - 2024. All rights reserved.