本文为您介绍如何接入 Kafka 来创建数据集,以支持产品实时数据分析场景。
Kafka 数据源仅支持私有化部署模式使用,如您使用的SaaS版本,想要使用 Kafka 数据源,可与贵公司的客户成功经理沟通,提出需求。
进入火山引擎,点击进入到某个具体项目下,点击数据准备,在下拉列表找到数据连接,点击数据连接。
在页面中选择 Kafka 。
填写所需的基本信息,并进行测试连接,连接成功后点击保存。
Kafka 提供四种鉴权方式,各鉴权方式的参数配置说明如下,用户需根据实际场景选择:
鉴权方式 | 说明 |
|---|---|
无鉴权 | 安全性极低,适用于开发测试或本地环境。
|
SASL_PLAINTEXT | 安全性低(仅认证),适用于内部可信网络、轻量级认证
|
集群内置Kerberos | 安全性高,适用于企业生产环境、多租户集群
|
自定义Kerberos | 安全性高(可扩展),适用于跨域认证、集成现有Kerberos架构
|
注意
配置支持嵌套 json,需使用 jsonpath 提取字段。 可参见嵌套字段提取规则说明。
示例:outter.inner.cnt表示获取{"outter": {"inner": {"cnt": 0}}}中的0。
注意
不支持下划线开头的字段名称,不支持字段中包含“-”字符。
Kafka 数据集数据类型对应。Kafka 分区键的规则说明可参见分区键的规则说明。
由于 Kafka 数据源接入的底层依赖 ClickHouse,因此在创建数据集时,需根据 Kafka 数据类型(JSON)选择对应的 ClickHouse 字段类型,以确保数据格式的兼容性和处理效率。
以下为两者的映射关系,可指导您在字段配置时正确选择映射后的字段类型:
JSON类型 | ClickHouse备选类型 |
|---|---|
long | Int64 |
string | String, Date, Datatime |
float | Float64 |
boolean | Int64 |
array | Array(Int64), Array(Float64), Array(String) |
map | Map(Int64, Int64), Map(Int64, Float64), Map(Int64, String) |
当存在多层嵌套时,可输入 json path 提取字段。
示例:
{ "body": { "cost": { "city": "Shanghai", "country": "China" } } }
若需要提取字段 city,则 json.path 为 body.cost.city。
注意
示例操作路径Ⅰ
①创建数据集时指定了字段 test 为非嵌套字段(无 json.path),类型为 Nullable(Int64)。
②若想修改 test 为嵌套字段(有 json.path),则需删除 test 字段并点击保存,然后再次编辑,添加 test 字段与 json.path,保存即可。
示例操作路径Ⅱ
①创建数据集时指定了字段 test 为非嵌套字段(无 json.path),类型为 Nullable(Int64)。
②若想修改 test 类型为 Nullable(String),直接修改并保存即可。
示例操作路径Ⅲ
①创建数据集时指定了字段 test 为嵌套字段(有 json.path),类型为 Nullable(Int64)。
②若想修改 test 为非嵌套字段(无 json.path),则需要删除 test 字段,点击保存,然后再次编辑,添加 test 字段并指定类型,保存即可。
Kafka 分区键需要能够被转换为日期(toDate)或日期时间(toDateTime)格式,以支持后续基于分区键做时间相关操作,比如按天分区、按时间范围查询等。
目前 Kafka 仅支持以下两种格式:
如果通过 JSON 建表,JSON 中分区键的值也需遵循上述规则:
Int64(如 1672531200000 表示 2023-01-01 00:00:00)。Date(如 '2020-01-01')。DateTime(如 '2020-01-01 00:00:00')。