在AWS EMR Studio中用saveAsTable保存的PySpark DataFrame存储位置查询
Spark saveAsTable生成表的存储路径查询方法
最直接的查询方式
两种方法可以精准拿到当前表的实际存储路径,不会受自定义配置影响:
- 方式1:运行SQL查询
直接在Spark SQL中执行如下命令,返回结果里的Location字段就是表的实际存储路径:DESCRIBE EXTENDED tableName - 方式2:通过Spark API获取
可以直接在代码中调用Catalog API直接拿到路径:# Python 示例 table_path = spark.catalog.getTable("tableName").location print(table_path)// Scala 示例 val tablePath = spark.catalog.getTable("tableName").location println(tablePath)
默认路径规则
如果你创建表的时候没有手动指定存储路径,表的存储路径遵循以下规则:
- 默认存储路径根目录是Spark配置项
spark.sql.warehouse.dir的取值,默认值为当前运行目录下的spark-warehouse文件夹 - 如果表在默认的default数据库下,路径为
${spark.sql.warehouse.dir}/表名 - 如果表在自定义数据库下,路径为
${spark.sql.warehouse.dir}/数据库名.db/表名
自定义路径场景
如果调用saveAsTable时主动通过path参数指定了存储路径,示例如下:
df.write.option("path", "/data/custom_table_path").saveAsTable("tableName")
这种情况下创建的是外部表,实际存储路径就是你指定的/data/custom_table_path,不会存到默认的warehouse目录下。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

