Spark JDBC42驱动无法获取Databricks表部分元数据的配置咨询
所需额外配置及操作说明
JDBC连接参数新增配置
你需要在现有SparkJDBC42.jar的JDBC连接配置中新增两个专属参数:
- 新增
GetTableMetadataWithAdditionalProperties=1:这个参数是Databricks JDBC驱动的专属开关,开启后驱动拉取表元数据时会额外携带表级注释、TBLPROPERTIES两类信息,默认该参数为关闭状态 - 新增
PartitionMetadataEnabled=1:开启分区元数据拉取权限,默认关闭,开启后才能正常获取表的PARTITION BY配置信息
不同元数据的读取方式
开启上述参数后,你可以通过JDBC标准接口拿到三类缺失的元数据:
- 表级注释:调用
DatabaseMetaData.getTables()接口查询表信息时,返回结果集的REMARKS字段就会返回建表时设置的表级COMMENT内容,未开参数时该字段默认返回空值 - TBLPROPERTIES键值对:同样在
getTables()的返回结果集中,驱动会新增TABLE_PROPERTIES扩展列,所有TBLPROPERTIES的键值对会以JSON字符串的形式存储在该列,你只需解析该JSON即可拿到对应配置 - PARTITION BY分区配置:调用
DatabaseMetaData.getPartitions()接口即可获取分区字段、分区规则等配置信息,仅开启PartitionMetadataEnabled参数后该接口才会返回有效数据
注意事项
你需要确保使用的SparkJDBC42.jar版本不低于2.6.22,低于该版本的Databricks JDBC驱动不支持上述两个参数,无法正常拉取扩展元数据。
以下是完整的JDBC连接串示例供参考:
jdbc:spark://<你的Databricks工作区地址>:443/default;transportMode=http;ssl=1;httpPath=<集群HTTP路径>;AuthMech=3;UID=token;PWD=<你的个人访问令牌>;GetTableMetadataWithAdditionalProperties=1;PartitionMetadataEnabled=1
内容的提问来源于stack exchange,提问作者Noor Basha Shaik
相关产品推荐
相关产品推荐

