【问题标题】:How to see all the databases and Tables in Databricks如何查看 Databricks 中的所有数据库和表
【发布时间】:2020-09-22 16:12:13
【问题描述】:

我想列出 Azure Databricks 中每个数据库中的所有表。

所以我希望输出看起来像这样:

Database | Table_name
Database1 | Table_1
Database1 | Table_2
Database1 | Table_3
Database2 | Table_1
etc..

这是我目前拥有的:

from pyspark.sql.types import *

DatabaseDF = spark.sql(f"show databases")
df = spark.sql(f"show Tables FROM {DatabaseDF}")
#df = df.select("databaseName")
#list = [x["databaseName"] for x in df.collect()]

print(DatabaseDF)
display(DatabaseDF)

df = spark.sql(f"show Tables FROM {schemaName}")
df = df.select("TableName")
list = [x["TableName"] for x in df.collect()]

## Iterate through list of schema
for x in list:
###  INPUT Required: Change for target table
    tempTable = x
    df2 = spark.sql(f"SELECT COUNT(*) FROM {schemaName}.{tempTable}").collect()
    for x in df2:
      rowCount = x[0]
      
    if rowCount == 0:
      print(schemaName + "." + tempTable + " has 0 rows")

但我并没有完全得到结果。

【问题讨论】:

  • 请提供你现在得到的输出

标签: python azure pyspark databricks azure-databricks


【解决方案1】:

有一个catalog 属性可以触发会话,这可能是您正在寻找的:

spark.catalog.listDatabases()
spark.catalog.listTables("database_name")

listDatabases 返回您拥有的数据库列表。
listTables 返回某个数据库名称的表列表。

例如,您可以这样做:

[
    (table.database, table.name)
    for database in spark.catalog.listDatabases()
    for table in spark.catalog.listTables(database.name)
]

获取数据库和表的列表。


编辑:(thx @Alex Ott) 即使这个解决方案运行良好,它也很慢。 直接使用show databases 或show tables in ... 等一些sql 命令应该可以更快地完成工作。

【讨论】:

  • 与show databases、show tables in ... 等相比,catalog API 慢得惊人。
猜你喜欢
  • 2010-10-10
  • 2020-12-19
  • 1970-01-01
  • 2012-11-07
  • 2014-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-05
相关资源
最近更新 更多