如何从数据库表 pyspark 中获取统计信息?
how to get stats from database tables pyspark?
spark.sql("""SHOW DATABASES""").show()
spark.sql("""SHOW TABLES IN Nbadb""").show()
+---------+
|namespace|
+---------+
| default|
| nbadb|
+---------+
+---------+------------+-----------+
|namespace| tableName|isTemporary|
+---------+------------+-----------+
| nbadb| games| false|
| nbadb|games_detail| false|
| nbadb| players| false|
| nbadb| ranking| false|
| nbadb| teams| false|
+---------+------------+-----------+
def show_catalog_stats():
spark.sql("""SHOW DATABASES""").show()
spark.sql("""SHOW TABLES IN Nbadb""").show()
这是我的代码,我尝试创建 return 表名和数据计数的函数(使用 spark.sql 命令)。
怎么做?
您可以将 pyspark 上的数据框摘要方法用于您的用例。跟着
Pyspark 3.x Dataframe summary methods or Pyspark 2.x summary methods 文档。
df = spark.table("database_name.table_name")
df.summary("count").show(truncate=False)
更新:
获取数据库中所有表的计数摘要
def get_table_counts(dbname):
table_names = spark.catalog.listTables(dbname)
table_values_extracted = [f"{table.database}.{table.name}" for table in table_names]
for table_name in table_values_extracted:
print(table_name)
spark.table(table_name).summary("count").show(truncate=False)
return 0
spark.sql("""SHOW DATABASES""").show()
spark.sql("""SHOW TABLES IN Nbadb""").show()
+---------+
|namespace|
+---------+
| default|
| nbadb|
+---------+
+---------+------------+-----------+
|namespace| tableName|isTemporary|
+---------+------------+-----------+
| nbadb| games| false|
| nbadb|games_detail| false|
| nbadb| players| false|
| nbadb| ranking| false|
| nbadb| teams| false|
+---------+------------+-----------+
def show_catalog_stats():
spark.sql("""SHOW DATABASES""").show()
spark.sql("""SHOW TABLES IN Nbadb""").show()
这是我的代码,我尝试创建 return 表名和数据计数的函数(使用 spark.sql 命令)。 怎么做?
您可以将 pyspark 上的数据框摘要方法用于您的用例。跟着 Pyspark 3.x Dataframe summary methods or Pyspark 2.x summary methods 文档。
df = spark.table("database_name.table_name")
df.summary("count").show(truncate=False)
更新:
获取数据库中所有表的计数摘要
def get_table_counts(dbname):
table_names = spark.catalog.listTables(dbname)
table_values_extracted = [f"{table.database}.{table.name}" for table in table_names]
for table_name in table_values_extracted:
print(table_name)
spark.table(table_name).summary("count").show(truncate=False)
return 0