如何判断Spark表是parquet格式还是delta格式
Spark表存储格式查询方法
你执行show tblproperties返回空是因为存储格式属性通常不会放在表的自定义属性列表中,需要通过以下方式查询:
- 方法1:使用
DESCRIBE EXTENDED语句
执行SQL:DESCRIBE EXTENDED <你的表名>;
在返回结果中找到Provider行,对应的值为delta就是Delta格式,值为parquet就是Parquet格式,该字段是Spark官方记录表存储格式的核心元数据,准确性最高。 - 方法2:查询information_schema系统表(适合批量查询场景)
执行如下SQL即可直接拿到目标表的存储格式:SELECT table_name, provider FROM information_schema.tables WHERE table_schema = '<你的库名>' AND table_name = '<你的表名>'; - 方法3:通过Spark Catalog API查询(适合代码中动态判断场景)
Scala示例:
PySpark示例:val tableMeta = spark.catalog.getTable("<你的库名>", "<你的表名>") val storageFormat = tableMeta.provider.getOrElse("parquet")table_meta = spark.catalog.getTable("<你的库名>", "<你的表名>") storage_format = table_meta.provider if table_meta.provider else "parquet"
补充说明:如果是外部表,也可以直接查看表存储路径下的文件结构,Delta格式的表会存在名为_delta_log的事务日志目录,Parquet格式的表无该目录,可作为辅助判断依据。
内容的提问来源于stack exchange,提问作者M.S.Visser
相关产品推荐
相关产品推荐

