批量注入数据

虽然将数据注入到 Manufacturing Data Engine (MDE) 的主要方式是使用 Manufacturing Connect edge (MCe) 进行流式传输或 向 Pub/Sub 发送消息,但也可以批量注入文件。 这对于重新处理数据或从外部系统导入数据非常有用。

批量加载的工作原理是使用 Web 界面或 API 创建 IngestionSpecification,然后将一个或多个文件上传到 MDE 设置的 Cloud Storage 存储桶中的文件夹,该文件夹默认名称为 <project-id>-batch-ingestion。当新文件上传到此存储桶时,Cloud Storage Reader Dataflow 作业会检测到该文件,该作业会将文件拆分为每条单独的消息,并将每条消息发送到 input-messages Pub/Sub 主题。

支持的格式

批量加载支持以下数据格式:

  • JSON:以换行符分隔。每行都将作为一条新消息发送。
  • CSV:带或不带标题(可定义),支持跳过行和 不同的分隔符。系统会使用每个标题列作为键,并使用相应的行作为值,将消息转换为 JSON。
  • AVRO:将 AVRO 中的每一行映射到 JSON。
  • AVRO_RAW_WRITER:读取由 Cloud Storage Writer 写入的未处理消息,并写回每条消息,同时保留 Pub/Sub 消息 ID。

配置

为了让 Cloud Storage Reader 处理文件,它需要一个 File Ingestion Specification,用于定义它应期望的文件类型、其选项以及要上传到的文件夹。

所有格式都需要以下参数:

  • nameFile Ingestion Specification 的名称。
  • folderName:此 File Ingestion Specification 的文件将上传到的文件夹。
  • source:要使用的格式(JSON/CSV/AVRO/AVRO_RAW_WRITER)。

此外,CSV 来源还支持以下内容:

  • separator:要使用的分隔符(如果未提供,则使用 ,)。
  • skip_rows:是否在开始读取 CSV 文件之前跳过任何行。
  • headers
    • infer_headers:是否应根据读取的第一行推断标题。
    • headerNames:提供要使用的标题名称的有序列表。
  • insert_metadata:是否包含与注入的文件相关的元数据(filePathfileNameingestionName)。这些元数据将作为额外的键值对添加到发送的消息中。

配置示例

本部分包含一些批量加载的配置示例。

注入以换行符分隔的 JSON 文件

REST

POST configuration/v1/ingestions

{
  "name": "json-simple",
  "source": "JSON",
  "folderName": "jsonFiles"
}

控制台

  1. 访问文件注入规范 的配置。
  2. 打开 “云端管理” 部分的顶部菜单中的文件注入 部分。

    文件注入 - 列出文件注入规范

  3. 现有的文件注入规范 列在文件注入 部分中。您可以使用每个注入规范旁边的“操作” 图标修改、启用、停用或删除它们。

    文件注入 - 注入规范中可用的操作

  4. 如需创建新的文件注入规范 ,请点击 “添加新的注入规范”。屏幕右侧会显示一个新的侧边菜单,其中包含定义新的 文件注入规范所需的所有参数:

    文件提取 - 新的文件提取规范

  5. 如需创建新的以换行符分隔的 JSON 文件注入规范 ,请从“来源类型”菜单中选择JSON,并提供两个必需的 参数,在本示例中:

    • name:文件注入规范的名称。
    • folderName:此文件注入规范的文件 将上传到的文件夹。

    文件提取 - 新的 JSON 文件提取规范

  6. 填写完参数后,点击“创建”。如果新的文件注入规范已成功创建,系统会显示一条确认消息。

注入 AVRO 文件

REST

POST configuration/v1/ingestions

{
  "name": "avro-simple",
  "source": "AVRO",
  "folderName": "avroFiles"
}

控制台

  1. 访问文件注入规范 的配置。
  2. 打开 “云端管理” 部分的顶部菜单中的文件注入 部分。

    文件注入 - 列出文件注入规范

  3. 现有的文件注入规范 列在文件注入 部分中。您可以使用每个注入规范旁边的“操作” 图标修改、启用、停用或删除它们。

    文件注入 - 注入规范中可用的操作

  4. 如需创建新的文件注入规范 ,请点击“添加新的注入规范”

  5. 屏幕右侧会显示一个新的侧边菜单,其中包含定义新的 文件注入规范 所需的所有参数:

    文件提取 - 新的文件提取规范

  6. 如需创建新的 AVRO 文件 注入规范,请从 “来源类型” 菜单中选择 AVRO

  7. 提供两个必需的参数,在本示例中:

    • name:文件注入规范的名称。
    • folderName:此文件注入规范的文件 将上传到的文件夹。

    文件提取 - 新的 AVRO 文件提取规范

  8. 填写完参数后,点击“创建”。如果新的文件注入规范已成功创建,系统会显示一条确认消息。

注入 CSV 文件,并根据标题推断列名称

REST

POST configuration/v1/ingestions

{
  "name": "csv-simple",
  "source": "CSV",
  "folderName": "csv-simple",
  "separator": ",",
  "headers": {
    "inferHeaders": true
  }
}

控制台

  1. 前往 Manufacturing Connect 网页界面
  2. 访问文件注入规范 的配置。
  3. 打开 “云端管理” 部分的顶部菜单中的文件注入 部分。

    文件注入 - 列出文件注入规范

  4. 现有的文件注入规范 列在文件注入 部分中。您可以使用每个注入规范旁边的“操作” 图标修改、启用、停用或删除它们。

    文件注入 - 注入规范中可用的操作

  5. 如需创建新的文件注入规范 ,请点击“添加新的注入规范”

  6. 屏幕右侧会显示一个新的侧边菜单,其中包含定义新的 文件注入规范 所需的所有参数:

    文件提取 - 新的文件提取规范

  7. 如需创建新的文件注入规范 ,请点击 “添加新的注入规范”

  8. 屏幕右侧会显示一个新的侧边菜单,其中包含定义所需的所有参数。

    文件注入规范

    文件提取 - 新的文件提取规范

  9. 如需创建新的 注入 CSV 文件,并根据标题推断列名称 注入 规范,请从 “来源类型” 菜单中选择 CSV ,并提供 七个必需的参数,在本示例中:

    • name:文件注入规范的名称。
    • folderName:此文件注入规范的文件 将上传到的文件夹。
    • separator:要使用的分隔符(如果未提供,则使用 ,)。
    • skip_rows:是否在开始读取 CSV 文件之前跳过任何行。
    • headers
    • infer_headers:是否应根据读取的第一 行推断标题。选择“是” 以根据标题推断列名称。
    • insert_metadata:是否包含与注入的文件 文件相关的元数据(filePath、fileName、ingestionName)。

    文件提取 - 新的 CSV 文件提取规范

  10. 填写完参数后,点击“创建”

  11. 如果新的文件注入规范已成功创建,系统会显示一条确认消息。

注入 CSV 文件,提供列名称并添加注入元数据

REST

POST configuration/v1/ingestions

{
  "name": "csv-headers-metadata",
  "source": "CSV",
  "folderName": "csv-headers",
  "separator": ",",
  "insertMetadata": true,
  "headers": {
    "headerNames": {
      "names": ["one", "two", "three"]
    }
  }
}

控制台

  1. 访问文件注入规范 的配置。
  2. 打开 “云端管理” 部分的顶部菜单中的文件注入 部分。

    文件注入 - 列出文件注入规范

  3. 现有的文件注入规范 列在文件注入 部分中。您可以使用每个注入规范旁边的“操作” 图标修改、启用、停用或删除它们。

    文件注入 - 注入规范中可用的操作

  4. 如需创建新的文件注入规范 ,请点击“添加新的注入规范”

  5. 屏幕右侧会显示一个新的侧边菜单,其中包含定义新的 文件注入规范 所需的所有参数:

    文件提取 - 新的文件提取规范

  6. 如需创建新的 注入 CSV 文件,提供列名称并添加注入元数据 注入规范,请从 “来源类型” 中选择 CSV

  7. 提供八个必需的参数,在本示例中:

    • name:文件注入规范的名称。
    • folderName:此文件注入规范的文件 将上传到的文件夹。
    • separator:要使用的分隔符(如果未提供,则使用 ,)。
    • skip_rows:是否在开始读取 CSV 文件之前跳过任何行。
    • headers
      • infer_headers:是否应根据读取的第一 行推断标题。选择“否” 以不根据标题推断列名称。
      • headerNames:提供要使用的标题名称的有序列表。
    • insert_metadata:是否包含与注入的文件 文件相关的元数据(filePath、fileName、ingestionName)。

    文件提取 - 新的高级 CSV 文件提取规范

  8. 填写完参数后,点击“创建” 按钮。如果新的文件注入规范已成功创建,系统会显示一条确认消息。

注入 CSV 文件,推断标题名称并在开始读取文件之前跳过 5 行

REST

POST configuration/v1/ingestions

{
  "name": "csv-skip-rows",
  "source": "CSV",
  "folderName": "csv-skip",
  "skipRows": 5,
  "separator": ",",
  "headers": {
    "inferHeaders": true
  }
}

控制台

  1. 访问文件注入规范 的配置。
  2. 打开 “云端管理” 部分的顶部菜单中的文件注入 部分。

    文件注入 - 列出文件注入规范

  3. 现有的文件注入规范 列在文件注入 部分中。您可以使用每个注入规范旁边的“操作” 图标修改、启用、停用或删除它们。

    文件注入 - 注入规范中可用的操作

  4. 如需创建新的文件注入规范 ,请点击“添加新的注入规范”

  5. 屏幕右侧会显示一个新的侧边菜单,其中包含定义新的 文件注入规范 所需的所有参数:

    文件提取 - 新的文件提取规范

  6. 如需创建新的 注入 CSV 文件,推断标题名称并跳过 5 行 注入规范,请从 “来源类型” 菜单中选择 CSV

  7. 提供七个必需的参数,在本示例中:

    • name:文件注入规范的名称。
    • folderName:此文件注入规范的文件 将上传到的文件夹。
    • separator:要使用的分隔符(如果未提供,则使用 ,)。
    • skip_rows:选择要跳过的行数,在本示例中为 5。
    • headers
      • infer_headers:是否应根据读取的第一 行推断标题。选择“是” 以根据标题推断列名称。
    • insert_metadata:是否包含与注入的文件 文件相关的元数据(filePath、fileName、ingestionName)。

    文件提取 - 新的跳过行 CSV 文件提取规范

  8. 填写完参数后,点击“创建”

  9. 如果新的文件注入规范已成功创建,系统会显示一条确认消息。

注入由 Cloud Storage Writer 原始路径生成的 AVRO 文件

REST

POST configuration/v1/ingestions

{
  "name": "avro-reprocess",
  "source": "AVRO_RAW_WRITER",
  "folderName": "avro-raw"
}

如果您需要重新处理文件,这尤其有用。您可以使用原始文件文件夹中的日期分区,仅复制所需时间范围内的文件。例如:

gcloud storage cp "gs://<project-id>-raw/v1/dt=2023-06-19/*" \
gs://<project-id>-batch-ingestion/avro-raw/

控制台

  1. 访问文件注入规范 的配置。
  2. 打开 “云端管理” 部分的顶部菜单中的文件注入 部分。

    文件注入 - 列出文件注入规范

  3. 现有的文件注入规范 列在文件注入 部分中。您可以使用每个注入规范旁边的“操作” 图标修改、启用、停用或删除它们。

    文件注入 - 注入规范中可用的操作

  4. 如需创建新的文件注入规范 ,请点击“添加新的注入规范”

  5. 屏幕右侧会显示一个新的侧边菜单,其中包含定义新的 文件注入规范 所需的所有参数:

    文件提取 - 新的文件提取规范

  6. 如需创建新的 注入由 Cloud Storage Writer 原始路径生成的 AVRO 文件 注入规范,请从 “来源类型” 菜单中选择 AVRO 原始 ,并提供两个必需的参数,在本示例中:

    • name:文件注入规范的名称。
    • folderName:此文件注入规范的文件 将上传到的文件夹。

    文件提取 - 新的 AVRO 原始文件提取规范

  7. 填写完参数后,点击“创建”

  8. 如果新的文件注入规范已成功创建,系统会显示一条确认消息。

如果您需要重新处理文件,这尤其有用。您可以使用原始文件文件夹中的日期分区,仅复制所需时间范围内的文件,例如:

  gcloud storage cp "gs://<project-id>-raw/v1/dt=2023-06-19/*" \
  gs://<project-id>-batch-ingestion/avro-raw/