如何在Microsoft Fabric的PySpark Notebook中查看Lakehouse各表大小?
在Microsoft Fabric的PySpark Notebook中查看Lakehouse表大小
方法一:用SQL查询系统视图(推荐,适合新手)
直接通过查询系统视图获取表的存储大小,代码简单直观:
# 执行SQL查询,获取表大小并转换为易读单位 result_df = spark.sql(""" SELECT table_name AS 表名, data_length AS 大小(字节), ROUND(data_length / (1024 * 1024), 2) AS 大小(MB), ROUND(data_length / (1024 * 1024 * 1024), 4) AS 大小(GB) FROM information_schema.tables WHERE table_schema = 'default' -- 若使用自定义schema,替换成你的schema名称 """) # 在Notebook中展示结果表格 display(result_df)
方法二:通过Spark Catalog遍历表(适合自定义逻辑场景)
如果需要对每个表做额外处理,可以遍历Lakehouse中的所有表,逐个获取大小:
from pyspark.sql.functions import col # 获取当前Lakehouse下的所有表 tables = spark.catalog.listTables() table_size_list = [] for table in tables: # 执行DESCRIBE EXTENDED获取表的详细信息,提取Size字段(字节数) size_bytes = spark.sql(f"DESCRIBE EXTENDED {table.name}") \ .filter(col("col_name") == "Size") \ .select("data_type") \ .first()[0] # 转换为MB、GB单位 size_mb = int(size_bytes) / (1024 * 1024) size_gb = size_mb / 1024 table_size_list.append((table.name, size_bytes, round(size_mb, 2), round(size_gb, 4))) # 转换为DataFrame并展示 result_df = spark.createDataFrame(table_size_list, ["表名", "大小(字节)", "大小(MB)", "大小(GB)"]) display(result_df)
注意事项
- 默认情况下,Lakehouse的表都存储在
defaultschema下,若使用自定义schema,需修改SQL中的table_schema值。 - 两种方法获取的大小均为表实际存储的字节数,已自动计算压缩后的大小(如果表启用了压缩)。
内容的提问来源于stack exchange,提问作者user18366639
相关产品推荐
相关产品推荐

