如何将历史数据引入 Azure 数据资源管理器

加入 Azure 数据资源管理器时的常见方案是引入历史数据,有时称为回填。 此过程涉及将数据从现有存储系统引入表,该表是盘区的集合。

建议使用 creationTime 引入属性引入历史数据,将盘区创建时间设置为创建数据的时间。 通过将创建时间用作引入分区标准,数据可以按照缓存保留策略老化,并使时间筛选器更高效。

默认情况下,盘区创建时间设置为引入数据的时间,这可能不会产生预期的行为。 例如,假设你有一个表,其缓存期为 30 天,保留期为 2 年。 在正常流中,生成的数据会缓存 30 天,然后移动到冷存储。 两年后,根据创建时间,一天删除一次较旧的数据。 但是,如果你引入两年的历史数据,默认情况下,数据会以创建时间标记为引入数据的时间。 这可能不会产生所需的结果,因为:

  • 所有数据都进入缓存并保留 30 天,使用的缓存比预期的要多。
  • 较旧的数据不会一天移除一次;因此,数据在群集中保留的时间超过必要时间,并且在两年后一次性全部移除。
  • 以前在源系统中按日期分组的数据现在可能在同一盘区内一起批处理,从而导致查询效率低下。

该图显示使用默认创建时间引入历史数据的预期结果与实际结果。

在本文中,你将学习如何对历史数据进行分区:

  • 在引入期间使用 creationTime 引入属性(推荐)

    在可能的情况下,使用 creationTime 引入属性引入历史数据,让你可以通过从文件或 blob 路径中引入数据来设置盘区创建时间。 如果文件夹结构不使用创建日期模式,建议重构文件或 blob 路径以反映创建时间。 通过使用此方法,数据将引入到具有正确创建时间的表中,并正确应用缓存和保留期。

    注意

    默认情况下,分片按其创建(引入)时间进行分区,在大多数情况下,不需要设置数据分区策略。

  • 在引入后使用分区策略

    如果无法使用 creationTime 引入属性,例如,如果使用 Azure Cosmos DB 连接器引入数据但无法控制创建时间,或者无法重新构造文件夹结构,则可以重新分区引入表,以使用分区策略获得相同的效果。 但是,此方法可能需要进行一些试错来优化策略属性,并且效率比使用 creationTime 引入属性更低。 仅当无法使用 creationTime 引入属性时,我们才建议使用此方法。

先决条件

引入历史数据

我们强烈建议在引入期间使用 creationTime 引入属性对历史数据进行分区。 但是,如果你无法使用此方法,则可以使用分区策略在引入后对表重新分区。

LightIngest 适用于将历史数据从现有存储系统加载到 Azure 数据资源管理器。 尽管可以使用命令行参数列表生成自己的命令,但本文演示如何通过引入向导自动生成此命令。 除创建命令外,还可使用此过程创建新表和架构映射。 此工具从数据集推断架构映射。

目标

  1. 在 Azure 数据资源管理器 Web UI 的左侧菜单中,选择“查询”。

  2. 右键单击要在其中引入数据的数据库,然后选择“LightIngest”

    Azure 数据资源管理器 Web UI 的屏幕截图,其中显示了数据库更多菜单。

    “引入数据”窗口随即打开,其中的“目标”选项卡处于选中状态。 系统会自动填充“群集”和“数据库”字段。

  3. 选择目标表。 如果要将数据引入新表,请选择“新建表”然后输入表名称

    注意

    表名称最多可包含 1024 个字符,包括空格、字母数字、连字符和下划线。 不支持特殊字符。

    目标选项卡的屏幕截图,其中显示了目标数据库和表。

  4. 选择“下一步: 源”。

Source

  1. 在“选择源”下,选择“添加 URL”或“选择容器”。

    • 添加 URL 时,在“指向源的链接”下,指定容器的帐户密钥或 SAS URL。 可以手动自动创建 SAS URL。

    • 从存储帐户选择容器时,请从下拉菜单中选择“存储订阅”、“存储帐户”和“容器”。

      用于从存储订阅和帐户中选择容器的对话框的屏幕截图。

    注意

    引入支持的最大文件大小为 6 GB。 建议引入 100 MB 到 1 GB 的文件。

  2. 选择“高级设置”,以使用 LightIngest 为引入过程定义其他设置。

    为涉及 LightIngest 工具的引入处理选择高级设置的屏幕截图。

  3. 在“高级配置”面板中,根据下表定义 LightIngest 设置

    高级配置窗格的屏幕截图,其中显示了涉及工具 LightIngest 的引入处理的其他设置。

    properties 说明
    创建时间模式 指定后,可使用一种模式替代所创建盘区的引入时间属性,例如根据容器的文件夹结构应用日期。 另请参阅创建时间模式
    Blob 名称模式 指定用于标识要引入的文件的模式。 引入与给定容器中的 blob 名称模式匹配的所有文件。 支持通配符。 建议括在双引号中。
    标记 分配给引入数据的标记。 标记可以是任意字符串。
    限制文件数量 指定可引入的文件数。 引入与 blob 名称模式匹配的第一个 n 文件,直至指定的数量。
    不等待引入完成 如果设置此属性,则在不监视引入过程的情况下将 blob 排队引入。 如果未设置,LightIngest 将继续轮询引入状态,直到引入完成。
    仅显示所选项目 列出容器中的文件,但不引入这些文件。
  4. 选择“完成”,返回到“源”选项卡

    1. 根据需要,选择“文件筛选器”筛选数据,以仅引入特定文件夹路径中的文件或带有特定文件扩展名的文件。

      在“引入新数据”屏幕的源选项卡中筛选数据的屏幕截图。

      默认情况下,会随机选择容器中的其中一个文件,用于生成表的架构。

    2. (可选)在架构定义文件下,可以指定要使用的文件。

  5. 选择“下一步: 架构”以查看和编辑表列配置。

架构

“架构”选项卡提供数据的预览。

要生成 LightIngest 命令,请选择“下一步: 开始引入”

可选:

  • 通过从下拉菜单中选择所需格式来更改自动推断的数据格式
  • 更改自动推断的映射名称。 可以使用字母数字字符和下划线。 不支持空格、特殊字符和连字符。
  • 使用现有表时,如果表架构与所选格式匹配,可以保留当前表架构。
  • 选择“命令查看器”以查看和复制基于输入生成的自动命令
  • 编辑列。 在“部分数据预览”下,选择列下拉菜单以更改表的各个方面

以下参数决定了你可在表中进行的更改:

  • 表类型为“新”或“现有”
  • 映射类型为“新”或“现有”
表类型 映射类型 可用调整
新建表 新映射 更改数据类型,重命名列,新建列,删除列,更新列,升序排序,降序排序
现有表 新映射 新建列(你随后可在其上更改数据类型、进行重命名和更新),
更新列,升序排序,降序排序
现有映射 升序排序,降序排序

注意

添加新列或更新列时,可更改映射转换。

引入

  1. 当表、映射和 LightIngest 命令标有绿色复选标记后,选择“生成的命令”框右上角的“复制”图标以复制生成的 LightIngest 命令

    已生成命令的“摘要”选项卡的屏幕截图。可以使用生成的命令框上方的复制图标复制命令。

    注意

    如果需要,可以通过选择“下载 LightIngest”来下载 LightIngest 工具。

  2. 要完成引入过程,必须使用此复制的命令运行 LightIngest