Databricks中Spark SQL无法从Volume数据源创建表的问题
问题解决:Spark SQL创建表时Volume路径报错"Missing cloud file system scheme"
问题原因
Spark SQL创建外部表时,无法直接识别/Volumes/xxx这种相对路径格式,必须显式指定文件系统scheme(如dbfs://),否则会触发UnityCatalogServiceException,提示缺少云文件系统scheme。而Spark API的load方法会自动解析/Volumes/路径为对应的DBFS路径,因此可以正常执行。
解决方案
修改Spark SQL语句,将Volume路径改为带scheme的完整URL格式,推荐使用dbfs:/Volumes/[catalog]/[schema]/[volume]/[path]格式,两种写法都可行:
写法1:在OPTIONS中指定完整路径
CREATE TABLE IF NOT EXISTS my_catalog.my_schema.my_table USING CSV OPTIONS ( path "dbfs:/Volumes/my_catalog/my_schema/landing_source/", header "true", inferSchema "true" )
写法2:使用LOCATION子句指定路径
CREATE TABLE IF NOT EXISTS my_catalog.my_schema.my_table USING CSV OPTIONS (header "true", inferSchema "true") LOCATION "dbfs:/Volumes/my_catalog/my_schema/landing_source/"
补充说明
如果你的Databricks部署在特定云厂商(如Azure、AWS),也可以使用对应云存储的scheme路径(比如Azure的abfss://xxx/Volumes/...,AWS的s3://xxx/Volumes/...),但dbfs:/格式在Databricks环境中是通用且最简便的选择。
内容的提问来源于stack exchange,提问作者Learn Hadoop
相关产品推荐
相关产品推荐

