DataBricks (10.2) 未记录与特征存储相关的大小写敏感度 Database/Table 访问

DataBricks (10.2) Undocumented Case Sensitivity Related to Feature Store Database/Table Access

我创建了一个输入 table 用于提供 DataBricks Feature Store,安装它(在 Linux 中)并按照 DataBricks 文档(来自他们的“RawDatasets”代码示例)中的规定调用它:

SourceDataFrameName_df = spark \
  .read \
  .format('delta') \
  .load("dbfs:/mnt/path/dev/version/database_name.tablename_extension")

但是,此调用失败并显示与定位“database_name.tablename_extension”资源相关的“未找到”/“不存在”错误报告。这就是名称在 DataBricks GUI 中随处显示的方式 - 全部小写。

我在检查我的 DataBricks 系统设置时花了很多时间检查 DataBricks 文档和 SO,但找不到此错误的解决方案。请协助。

这是一个 as-yet 未记录的问题,与 DataBricks 特征存储操作的性质有关。由于 DataBricks 主要是 pass-through(使用注册视图而不是存储源数据),因此挂载是这里的关键问题。

这个问题在他们的文档中可能 documented/highlighted 不够充分,因为它实际上是一个 Linux-thing,因为该操作系统是 case-sensitive(而 DataBricks 似乎主要是 case-agnostic).在此示例中,最初的 database/Linux 工程师以这种方式创建了 table/mount:

database_name.TableName_Extension

由于挂载引用了 Linux 路径,因此路径也是 case-sensitive。因此,从这样的装载中加载此源数据集的正确方法是:

SourceDataFrameName_df = spark \
  .read \
  .format('delta') \
  .load("dbfs:/mnt/path/dev/version/database_name.TableName_Extension")

问题是如果 DataBricks developer/engineer 和 database/Linux developer/engineer 不是同一个人,这个 case-sensitive 命名法可能是未知的(并且不可知的)!例如,它可能被标记为“database_name.Tablename_extension”或“database_name.TableName_EXTENSION”或其任何其他组合。

显然,如果有需要的用户知道要查找这些信息,那么这些信息并不难找到。当心