U-SQL 模式发现

U-SQL Schema Discovery

数据湖方法(根据幻灯片 5 here)是:

  1. 摄取所有数据 - 无论要求如何
  2. 存储所有数据 - 以没有模式定义的原始格式
  3. 进行分析 - 使用像 Hadoop 这样的引擎

但是假设我们已经将许多数据集加载到我们的数据湖中,我该如何以自动化和可扩展的方式进行模式发现? U-SQL 是否支持动态模式发现或使用 ADLA 或其他工具集进行动态模式发现的好方法是什么?

这是一个很好的问题,但答案在某种程度上取决于您想要发现的模式。

让我解释一下:

如果您有 CSV 类型的数据,可以使用一些工具,包括最新版本的 ADL Tools for VisualStudio,它们会尝试从提供的数据中检测您的架构(这些工具实际上会为您生成 EXTRACT 语句)。

一些交互式语言可能还会为您提供尝试将模式推断为查询的一部分的提取器。我们目前在 U-SQL 中不支持这一点,因为您不希望批处理作业错误地推断模式并在可能花费大量资金 运行 作业后失败。在交互式设置中,它的成本更低,查询作者可以轻松 corrected/overwritten。

但是,如果您有图像或文本文档等数据,甚至 JSON 或 XML 等嵌套半结构化文档,通常必须提供您想要的架构。例如,如果你有一个 JPEG 文件,你想要 EXIF 属性吗?如果有的话是哪几个?或者一些特征提取?或者一些颜色分析?等等

所以我认为在设计数据湖时重要的一件事是将本机格式数据进行一些语义上有意义的组织到文件夹结构中,然后使用 Views/TVFs 提供模式化视图在元数据服务中使它们更容易被发现,或使用 Azure 数据目录等服务来描述数据。

如果您已经在湖的存储中有数据并且想要发现它,那么现在您必须使用 U-SQL 和 SDK 或一些违背商店的 WebHDFS API。