PutBigQuery Processor
描述
将 FlowFile 的内容写入 Google BigQuery 表。 处理器是基于记录的,因此使用的模式由 RecordReader 驱动。 与目标模式不匹配的属性将被跳过。 通过流偏移实现恰好一次传递语义。
标签
属性
| 名称 | 默认值 | 可选值 | 描述 |
|---|---|---|---|
| GCP Credentials Provider Service | | 控制器服务 API:GCPCredentialsServicecn.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:RecordReaderFactorycn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8 | 指定用于解析传入数据的Controller Service。 |
| Transfer Type | STREAM |
| 定义首选的传输类型:流式传输或批处理 |
| Append Record Count | 20 | 一次追加到写入流的记录数。适用于批处理和流类型 | |
| Number of Retries | 6 | 在路由到失败关系之前应进行多少次重试。 | |
| Skip Invalid Rows | false | 设置是否插入请求的所有有效行,即使存在无效行。如果未设置,整个插入请求将在包含无效行时失败。 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| Unmatched Field Behavior | Ignore Unmatched Fields |
| 指定如何处理传入记录中目标 BigQuery 表架构中不存在的字段。 |
| Proxy Configuration Service | | 控制器服务 API:ProxyConfigurationServicecn.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 文档 提供了更多细节。