批量注入数据
虽然将数据注入到 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,用于定义它应期望的文件类型、其选项以及要上传到的文件夹。
所有格式都需要以下参数:
- name:
File Ingestion Specification的名称。 - folderName:此
File Ingestion Specification的文件将上传到的文件夹。 - source:要使用的格式(
JSON/CSV/AVRO/AVRO_RAW_WRITER)。
此外,CSV 来源还支持以下内容:
- separator:要使用的分隔符(如果未提供,则使用
,)。 - skip_rows:是否在开始读取 CSV 文件之前跳过任何行。
- headers:
- infer_headers:是否应根据读取的第一行推断标题。
- headerNames:提供要使用的标题名称的有序列表。
- insert_metadata:是否包含与注入的文件相关的元数据(
filePath、fileName、ingestionName)。这些元数据将作为额外的键值对添加到发送的消息中。
配置示例
本部分包含一些批量加载的配置示例。
注入以换行符分隔的 JSON 文件
REST
POST configuration/v1/ingestions
{
"name": "json-simple",
"source": "JSON",
"folderName": "jsonFiles"
}
控制台
- 访问文件注入规范 的配置。
打开 “云端管理” 部分的顶部菜单中的文件注入 部分。

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

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

如需创建新的以换行符分隔的 JSON 文件注入规范 ,请从“来源类型”菜单中选择JSON,并提供两个必需的 参数,在本示例中:
- name:文件注入规范的名称。
- folderName:此文件注入规范的文件 将上传到的文件夹。

填写完参数后,点击“创建”。如果新的文件注入规范已成功创建,系统会显示一条确认消息。
注入 AVRO 文件
REST
POST configuration/v1/ingestions
{
"name": "avro-simple",
"source": "AVRO",
"folderName": "avroFiles"
}
控制台
- 访问文件注入规范 的配置。
打开 “云端管理” 部分的顶部菜单中的文件注入 部分。

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

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

如需创建新的 AVRO 文件 注入规范,请从 “来源类型” 菜单中选择 AVRO 。
提供两个必需的参数,在本示例中:
- name:文件注入规范的名称。
- folderName:此文件注入规范的文件 将上传到的文件夹。

填写完参数后,点击“创建”。如果新的文件注入规范已成功创建,系统会显示一条确认消息。
注入 CSV 文件,并根据标题推断列名称
REST
POST configuration/v1/ingestions
{
"name": "csv-simple",
"source": "CSV",
"folderName": "csv-simple",
"separator": ",",
"headers": {
"inferHeaders": true
}
}
控制台
- 前往 Manufacturing Connect 网页界面 。
- 访问文件注入规范 的配置。
打开 “云端管理” 部分的顶部菜单中的文件注入 部分。

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

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

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

如需创建新的 注入 CSV 文件,并根据标题推断列名称 注入 规范,请从 “来源类型” 菜单中选择 CSV ,并提供 七个必需的参数,在本示例中:
- name:文件注入规范的名称。
- folderName:此文件注入规范的文件 将上传到的文件夹。
- separator:要使用的分隔符(如果未提供,则使用
,)。 - skip_rows:是否在开始读取 CSV 文件之前跳过任何行。
- headers:
- infer_headers:是否应根据读取的第一 行推断标题。选择“是” 以根据标题推断列名称。
- insert_metadata:是否包含与注入的文件 文件相关的元数据(filePath、fileName、ingestionName)。

填写完参数后,点击“创建”。
如果新的文件注入规范已成功创建,系统会显示一条确认消息。
注入 CSV 文件,提供列名称并添加注入元数据
REST
POST configuration/v1/ingestions
{
"name": "csv-headers-metadata",
"source": "CSV",
"folderName": "csv-headers",
"separator": ",",
"insertMetadata": true,
"headers": {
"headerNames": {
"names": ["one", "two", "three"]
}
}
}
控制台
- 访问文件注入规范 的配置。
打开 “云端管理” 部分的顶部菜单中的文件注入 部分。

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

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

如需创建新的 注入 CSV 文件,提供列名称并添加注入元数据 注入规范,请从 “来源类型” 中选择 CSV 。
提供八个必需的参数,在本示例中:
- name:文件注入规范的名称。
- folderName:此文件注入规范的文件 将上传到的文件夹。
- separator:要使用的分隔符(如果未提供,则使用
,)。 - skip_rows:是否在开始读取 CSV 文件之前跳过任何行。
- headers:
- infer_headers:是否应根据读取的第一 行推断标题。选择“否” 以不根据标题推断列名称。
- headerNames:提供要使用的标题名称的有序列表。
- insert_metadata:是否包含与注入的文件 文件相关的元数据(filePath、fileName、ingestionName)。

填写完参数后,点击“创建” 按钮。如果新的文件注入规范已成功创建,系统会显示一条确认消息。
注入 CSV 文件,推断标题名称并在开始读取文件之前跳过 5 行
REST
POST configuration/v1/ingestions
{
"name": "csv-skip-rows",
"source": "CSV",
"folderName": "csv-skip",
"skipRows": 5,
"separator": ",",
"headers": {
"inferHeaders": true
}
}
控制台
- 访问文件注入规范 的配置。
打开 “云端管理” 部分的顶部菜单中的文件注入 部分。

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

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

如需创建新的 注入 CSV 文件,推断标题名称并跳过 5 行 注入规范,请从 “来源类型” 菜单中选择 CSV 。
提供七个必需的参数,在本示例中:
- name:文件注入规范的名称。
- folderName:此文件注入规范的文件 将上传到的文件夹。
- separator:要使用的分隔符(如果未提供,则使用
,)。 - skip_rows:选择要跳过的行数,在本示例中为 5。
- headers:
- infer_headers:是否应根据读取的第一 行推断标题。选择“是” 以根据标题推断列名称。
- insert_metadata:是否包含与注入的文件 文件相关的元数据(filePath、fileName、ingestionName)。

填写完参数后,点击“创建”。
如果新的文件注入规范已成功创建,系统会显示一条确认消息。
注入由 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/
控制台
- 访问文件注入规范 的配置。
打开 “云端管理” 部分的顶部菜单中的文件注入 部分。

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

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

如需创建新的 注入由 Cloud Storage Writer 原始路径生成的 AVRO 文件 注入规范,请从 “来源类型” 菜单中选择 AVRO 原始 ,并提供两个必需的参数,在本示例中:
- name:文件注入规范的名称。
- folderName:此文件注入规范的文件 将上传到的文件夹。

填写完参数后,点击“创建”。
如果新的文件注入规范已成功创建,系统会显示一条确认消息。
如果您需要重新处理文件,这尤其有用。您可以使用原始文件文件夹中的日期分区,仅复制所需时间范围内的文件,例如:
gcloud storage cp "gs://<project-id>-raw/v1/dt=2023-06-19/*" \
gs://<project-id>-batch-ingestion/avro-raw/