You need to enable JavaScript to run this app.
导航
Kafka 流式数据导入实践:JSON 嵌套解析
最近更新时间:2022.04.05 11:01:00首次发布时间:2022.04.05 11:01:00

在使用 Kafka 导入数据导 ByteHouse 时,如果遇到源数据有嵌套 JSON 的情况,希望对源数据进行解析并导入时,可以借助虚拟列和解析函数进行导入。本文将针对这种场景,对导入方式进行详细说明。

Kafka 表有一个虚拟列(Virtual Column)_content (String)。_content的内容就是每一行的JSON字符串。解析思路就是用 JSONExtract 函数,从完整的_content字符串信息根据 JSON path 提取单独的列。

JSON 数据样例

{  
        "npc_info": {       
                "npc":  "bedok"
        },
        "case_info": {    
                "time_info": {  
                      "year":"2021"
                      },
								"offence":  "stealing",  
								"case_no":  123       
 				}
}

导入需求说明

计划将数据通过如下格式导入到目标表

ColumnTarget Type

Expression

Value
npcStringJSONExtract(_content, 'npc_info', 'npc', 'String')"bedok"
yearStringJSONExtract(_content, 'case_info', 'time_info', 'year', 'String')"2021"
offenceString

JSONExtract(_content, 'case_info', 'offence', 'String')

"stealing"

case_noInt64JSONExtract(_content, 'case_info', 'case_no', 'Int64')123

导入界面配置

  1. 数据加载 -> 新建导入任务 -> 选择 “Kafka 数据流”

alt

  1. 选择 Kafka 数据源,主题(topic),设置消费组,offset 配置。点击“下一步”

alt

  1. 左侧格式选择 "JSON_KAFKA",列名选择 “添加新列”。点击下一步。由于最终的列名和 JSON 第一层格式不一样,所以如果“从数据源分析”的话需要做一些变动。

alt

  1. 创建目标数据表。Expression 参考 “导入表格” Expression 内容。选择“创建数据表并执行下一步”。

alt

  1. 设置数据导入任务名称。选择“完成”。

alt

  1. 创建数据导入任务后,选择“开始”。

alt

  1. 等待任务运行后,查询目标数据表。

alt
alt

Kafka 数据导入和 JSON 解析完成。

关于 JSONExtract 函数

JSONExtract 函数的用法和社区 ClickHouse 一致。

JSONExtract(json[, indices_or_keys…], Return_type)
JSONExtractRaw(json[, indices_or_keys…])