问题描述
我想列出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")
但是我不太能得到结果。
解决方法
有一个from pygame import *
import random as rd
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
NUMBER_OF_DOTS = 300
class Dot():
SIZE = 5
def __init__(self,x,y):
self.x = x
self.y = y
self.color = random_color()
def draw(self):
draw.circle(screen,self.color,(self.x,self.y),Dot.SIZE)
def random_color():
r = rd.randint(0,255)
g = rd.randint(0,255)
b = rd.randint(0,255)
return (r,g,b)
init()
screen = display.set_mode((SCREEN_WIDTH,SCREEN_HEIGHT))
dots = []
# generate random dots all over the screen
for i in range(NUMBER_OF_DOTS):
x = rd.randint(100,700)
y = rd.randint(100,500)
dots.append(Dot(x,y))
# main while loop
while True:
screen.fill((255,255,255))
for dot in dots:
dot.draw()
display.update()
time.delay(1) # Speed down
属性可以激发会话,可能是您想要的内容:
catalog
spark.catalog.listDatabases()
spark.catalog.listTables("database_name")
返回您拥有的数据库列表。listDatabases
返回特定数据库名称的表列表。
例如,您可以执行以下操作:
listTables
获取数据库和表的列表。