kafka_fdw
Kafka外部数据源包装器
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
kafka_fdw | 0.0.3 | FDW | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 8730 | kafka_fdw | 否 | 是 | 否 | 是 | 否 | 是 | - |
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 0.0.3 | 1817161514 | kafka_fdw | - |
| RPM | PIGSTY | 0.0.3 | 1817161514 | kafka_fdw_$v | - |
| DEB | PIGSTY | 0.0.3 | 1817161514 | postgresql-$v-kafka-fdw | - |
构建
您可以使用 pig build 命令构建 kafka_fdw 扩展的 RPM / DEB 包:
BASH
安装
您可以直接安装 kafka_fdw 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
BASH
使用 pig 或者是 apt/yum/dnf 安装扩展:
安装
BASH
pig
BASH
dnf
BASH
apt
BASH
创建扩展:
SQL
用法
kafka_fdw 是一个将 Kafka 消息暴露为 PostgreSQL 外部表的外部数据包装器。上游 README 明确提醒,这个项目尚未达到生产级就绪状态。
服务器与映射
先定义带 Kafka broker 列表的外部服务器,再创建用户映射:
SQL
外部表
Kafka 外部表必须包含两个元数据列,一个标记为 partition 'true',另一个标记为 offset 'true'。其余列用于描述消息负载。
CSV 消息
SQL
对于 CSV,列按位置映射。上游说明,字段校验强度取决于消息写入方,因此在数据质量不稳定时,严格解析和 junk 处理选项很重要。
JSON 消息
SQL
对于 JSON,每个列都可以通过 json 选项映射到对象键。当前实现支持 JSON 对象,不支持顶层 JSON 数组。
查询与写入
偏移量列和分区列是特殊列,上游 README 建议在查询中尽可能显式指定它们:
SQL
也可以通过 INSERT 发送消息。如果指定了分区值,就使用该分区;否则由 Kafka 内置分区器决定:
SQL
错误处理
默认行为较为宽松:
- 缺失尾部列会视为
NULL - 多余字段会被忽略
- 但无法解析的值默认仍会报错
相关表选项和辅助列包括:
strict 'true',拒绝列数不匹配ignore_junk 'true',将格式错误的值设为NULL- 标记为
junk 'true'的列,用于捕获原始负载 - 标记为
junk_error 'true'的列,用于捕获解析错误
构建说明
该扩展使用 librdkafka,上游构建步骤很标准:
BASH
测试环境假定 Kafka 运行在 localhost:9092,ZooKeeper 运行在 localhost:2181。