PutBigQuery

文档中心 › 组件索引 › PutBigQuery

PutBigQuery Processor

类型全限定名:cn.org.acal.lynxus.processors.gcp.bigquery.PutBigQuery

所属 Bundle:cn.org.acal.lynxus:lynxus-gcp-nar:2.11.8

描述

将 FlowFile 的内容写入 Google BigQuery 表。 处理器是基于记录的,因此使用的模式由 RecordReader 驱动。 与目标模式不匹配的属性将被跳过。 通过流偏移实现恰好一次传递语义。

标签

googlegoogle cloudbqbigquery

属性

下表中,加粗的属性为必填项;其余为可选项。表格同时标注默认值、是否支持表达式语言,以及是否为敏感属性(值会被加密)。

名称默认值可选值描述
GCP Credentials Provider Service控制器服务 API:
GCPCredentialsService
cn.org.acal.lynxus-lynxus-gcp-services-api-nar-2.11.8
用于获取 Google Cloud Platform 凭据的Controller Service。
Project ID谷歌云项目 ID
支持表达式语言:是(仅使用环境/系统变量求值)
BigQuery API 端点bigquerystorage.googleapis.com:443可用于覆盖默认的 BigQuery 端点。默认为 bigquerystorage.googleapis.com:443。格式必须为主机名:端口。
支持表达式语言:是(仅使用环境/系统变量求值)
Dataset${Dataset}BigQuery 数据集名称(注意 - 数据集必须存在于 GCP 中)
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
Table Name${Table Name}BigQuery 表名称
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
Record Reader控制器服务 API:
RecordReaderFactory
cn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8
指定用于解析传入数据的Controller Service。
Transfer TypeSTREAM
  • STREAM — 使用流式记录处理策略
  • BATCH — 使用批处理记录处理策略
定义首选的传输类型:流式传输或批处理
Append Record Count20一次追加到写入流的记录数。适用于批处理和流类型
Number of Retries6在路由到失败关系之前应进行多少次重试。
Skip Invalid Rowsfalse设置是否插入请求的所有有效行,即使存在无效行。如果未设置,整个插入请求将在包含无效行时失败。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
Unmatched Field BehaviorIgnore Unmatched Fields
  • Ignore Unmatched Fields — 任何未映射到 BigQuery 表列的记录字段都将被静默忽略。
  • Warn on Unmatched Fields — 任何未映射到 BigQuery 表列的记录字段都将被忽略,但会为每条受影响的记录记录一条警告。
  • Fail on Unmatched Fields — 如果记录包含未映射到 BigQuery 表列的字段,则 FlowFile 将路由到 failure 关系。此决定独立于 Skip Invalid Rows,后者仅管理行级序列化失败。
指定如何处理传入记录中目标 BigQuery 表架构中不存在的字段。
Proxy Configuration Service控制器服务 API:
ProxyConfigurationService
cn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8
指定代理配置 Controller Service 来代理网络请求。

关系 (Relationships)

名称描述自动终止
failure如果 Google BigQuery 操作失败,FlowFiles 将路由到此关系。否
success在成功执行 Google BigQuery 操作后,FlowFiles 将路由到此关系。否

写入的 FlowFile 属性

名称描述
bq.records.count成功插入的记录数

状态管理

该组件不存储状态。

受限 (Restricted)

该组件不受限。

输入要求

该组件要求有传入连接。

详细说明

PutBigQuery

流式写入与批量写入

PutBigQuery 基于记录,依赖使用 protocol buffers 的基于 gRPC 的 Write API。底层流同时支持流式和批量两种方式。

流式(Streaming)

流式写入时,追加到流中的数据会立即可在 BigQuery 中读取。一次追加 多少条记录(行)是可配置的。每个 FlowFile 只建立一个流,因此 FlowFile 处理结束时,所用的流会被关闭,并为下一个 FlowFile 打开 新的流。通过流偏移量(stream offsets)支持精确一次(exactly once) 投递语义。

批量(Batching)

与流式方式类似,每个 FlowFile 打开一个流,记录追加到流中。 但数据在 Processor 于 FlowFile 处理结束时提交之前,在 BigQuery 中不可用。

可改进之处

  • 表必须已存在于 BigQuery 中,不会自动创建
  • Write API 支持多个流并行执行以及跨流事务。目前未使用该能力, 因为这属于 Lynxus 框架层面的职责。

官方 Google Write API 文档 提供了更多细节。