如何从数据库表 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