您好,我正在使用 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 代码 你能指导我该怎么做吗?
我尝试过以下方法:
就我而言,我使用了 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”列作为模式名称。