kafka抽取json数据写入clickhouse

kafka抽取json数据写入clickhouse

  • 先贴图看成果:
    • 准备工作:clickhouse建表
    • 代码位置就放在gitee了,欢迎下载,小弟初学,请见谅

先贴图看成果:

日志打印
kafka抽取json数据写入clickhouse_第1张图片
clickhouse
kafka抽取json数据写入clickhouse_第2张图片
至于clickhouse的搭建就略过,这里仅作使用并应用

准备工作:clickhouse建表

由于是集群中的clickhouse,建表语句如下:

CREATE TABLE cluster_cjj.ods_d_PosSaleJ on cluster sskj_ch (
  `SDate` String,
  `ShopID` String,
  `PosID` String,
  `SheetID` String,
  `SNo` UInt32,
  `GoodsID` UInt32,
  `GroupID` UInt32,
  `Qty` Float32,
  `CostValue` Float32,
  `SaleValue` Float32,
  `OriSaleValue` Float32,
  `Price` Float32,
  `WaiterID` String,
  `insert_time` Date
) ENGINE = ReplicatedMergeTree(
  '/clickhouse/{cluster}/cluster_cjj/ods_d_PosSaleJ/{shard}',
  '{replica}'
) PARTITION BY insert_time
ORDER BY
  (SDate, ShopID, SheetID) SETTINGS index_granularity = 8192
  1. 至于kafka中的数据如何产生的,这里就不作展示了,默认当作kafka中有数据
kafak中json数据的格式为:
{
	"fieldA":"xxx",
	"fidleB":"xxx",
	"data":{
		"fieldC":"xxx",
		"fieldD":"xxx"
		....
	},
	....
}

2.根据配置文件配置kafka/clickhouse信息,如图(敏感信息做了处理):
kafka抽取json数据写入clickhouse_第3张图片
kafka抽取json数据写入clickhouse_第4张图片
关于以上的配置,如果clickhouse表中的字段不一定全部和kafka中的json数据不匹配(但是我们这里演示的是匹配的),所以做了一个字段匹配,刚才示例中的json是总共二级的json,如果表中的字段是匹配data中的数据的话,就再DIY.SECOND.JSON这里配置要匹配的二级json,比如data:{},如果你还想要一级json中的部分字段就在DIY.FIRST.JSON中配置上你想要的字段即可
如果是特定字段的匹配,需要在DIY.SECOND.FIELD中配置你指定的字段名

至于思路,详见代码吧!

代码位置就放在gitee了,欢迎下载,小弟初学,请见谅

git仓库
https://gitee.com/ccc-ju/kafkaToClickhouse
git 地址
git clone https://gitee.com/ccc-ju/kafkaToClickhouse.git
下载到本地

你可能感兴趣的:(kafka抽取json数据写入clickhouse)