PiflowX组件-ReadFromUpsertKafka

ReadFromUpsertKafka组件

组件说明

upsert方式从Kafka topic中读取数据。

计算引擎

flink

有界性

Unbounded

组件分组

kafka

端口

Inport:默认端口

outport:默认端口

组件属性

名称 展示名称 默认值 允许值 是否必填 描述 例子
kafka_host KAFKA_HOST "" 无 是 逗号分隔的Kafka broker列表。 127.0.0.1:9092
topic TOPIC "" 无 是 用于写入Kafka topic名称。 topic-1
tableDefinition TableDefinition "" 无 是 Flink table定义。
key_format keyFormat "" Set("json", "csv", "avro") 是 用于对Kafka消息中key部分反序列化的格式。key字段由PRIMARY KEY语法指定。 json
value_format ValueFormat "" Set("json", "csv", "avro") 是 用于对Kafka消息中value部分反序列化的格式 json
value_fields_include ValueFieldsInclude ALL Set("ALL", "EXCEPT_KEY") 是 控制哪些字段应该出现在 value 中。可取值:"ALL:消息的 value 部分将包含 schema 中所有的字段包括定义为主键的字段。"EXCEPT_KEY:记录的 value 部分包含 schema 的所有字段,定义为主键的字段除外。 ALL
key_fields_prefix KeyFieldsPrefix "" 无 否 为所有消息键(Key)格式字段指定自定义前缀,以避免与消息体(Value)格式字段重名。默认情况下前缀为空。 如果定义了前缀,表结构和配置项 'key.fields' 都需要使用带前缀的名称。当构建消息键格式字段时,前缀会被移除, 消息键格式将会使用无前缀的名称。请注意该配置项要求必须将 'value.fields-include' 配置为 'EXCEPT_KEY'。
properties PROPERTIES "" 无 否 该选项可以传递任意的 Kafka 参数。选项的后缀名必须匹配定义在 Kafka 参数文档中的参数名。 Flink 会自动移除 选项名中的 "properties." 前缀,并将转换后的键名以及值传入 KafkaClient。 例如,你可以通过 'properties.allow.auto.create.topics' = 'false' 来禁止自动创建 topic。 但是,某些选项,例如'key.deserializer' 和 'value.deserializer' 是不允许通过该方式传递参数,因为 Flink 会重写这些参数的值。

ReadFromUpsertKafka示例配置

演示实时统计网页pv和uv的总量。

json 复制代码
{
  "flow": {
    "name": "ReadFromUpsertKafkaTest",
    "uuid": "1234",
    "stops": [
      {
        "uuid": "5555",
        "name": "ReadFromUpsertKafka1",
        "bundle": "cn.piflow.bundle.flink.kafka.ReadFromUpsertKafka",
        "properties": {
          "kafka_host": "hadoop01:9092",
          "topic": "result_total_pv_uv_min",
          "key_format": "json",
          "value_format": "json",
          "value_fields_include": "ALL",
          "tableDefinition": "{\"ifNotExists\":true,\"physicalColumnDefinition\":[{\"columnName\":\"do_date\",\"columnType\":\"STRING\",\"nullable\":false,\"primaryKey\":true,\"partitionKey\":false,\"comment\":\"统计日期\"},{\"columnName\":\"do_min\",\"columnType\":\"STRING\",\"nullable\":false,\"primaryKey\":true,\"partitionKey\":false,\"comment\":\"统计分钟\"},{\"columnName\":\"pv\",\"columnType\":\"BIGINT\",\"nullable\":false,\"primaryKey\":false,\"partitionKey\":false,\"comment\":\"点击量\"},{\"columnName\":\"uv\",\"columnType\":\"BIGINT\",\"nullable\":false,\"primaryKey\":false,\"partitionKey\":false,\"comment\":\"一天内同个访客多次访问仅计算一个UV\"},{\"columnName\":\"currenttime\",\"columnType\":\"TIMESTAMP\",\"nullable\":false,\"primaryKey\":false,\"partitionKey\":false,\"comment\":\"当前时间\"}],\"metadataColumnDefinition\":null,\"computedColumnDefinition\":null}",
          "properties": "{\"value.json.fail-on-missing-field\": false,\"properties.group.id\": \"test\"}"
        }
      },
      {
        "uuid": "6666",
        "name": "ShowChangeLogData1",
        "bundle": "cn.piflow.bundle.flink.common.ShowChangeLogData",
        "properties": {
          "showNumber": "5000"
        }
      }
    ],
    "paths": [
      {
        "from": "ReadFromUpsertKafka1",
        "outport": "",
        "inport": "",
        "to": "ShowChangeLogData1"
      }
    ]
  }
}
示例说明
  1. 通过k.kafka.ReadFromUps从kafka的result_total_pv_uv_min topic中读取数据(使用WriteToUpsertKafka组件写入到result_total_pv_uv_min中的数据);

  2. 通过ShowChangeLogData组件将数据输出到控制台。

tableDefinition属性结构
json 复制代码
{
    "ifNotExists": true,
    "physicalColumnDefinition": [{
        "columnName": "do_date",
        "columnType": "STRING",
        "nullable": false,
        "primaryKey": true,
        "partitionKey": false,
        "comment": "统计日期"
    }, {
        "columnName": "do_min",
        "columnType": "STRING",
        "nullable": false,
        "primaryKey": true,
        "partitionKey": false,
        "comment": "统计分钟"
    }, {
        "columnName": "pv",
        "columnType": "BIGINT",
        "nullable": false,
        "primaryKey": false,
        "partitionKey": false,
        "comment": "点击量"
    }, {
        "columnName": "uv",
        "columnType": "BIGINT",
        "nullable": false,
        "primaryKey": false,
        "partitionKey": false,
        "comment": "一天内同个访客多次访问仅计算一个UV"
    }, {
        "columnName": "currenttime",
        "columnType": "TIMESTAMP",
        "nullable": false,
        "primaryKey": false,
        "partitionKey": false,
        "comment": "当前时间"
    }],
    "metadataColumnDefinition": null,
    "computedColumnDefinition": null
}

演示DEMO

演示案例参考

实时数仓|以upsert的方式读写Kafka数据---Flink1.12为例_upsert-connect 时间周期-CSDN博客

相关推荐
KING-WU51234 分钟前
Git 版本控制器实战指南
大数据·git·elasticsearch
SelectDB技术团队35 分钟前
日志场景 Elasticsearch 替换实操:建表、索引、写入链路与查询改写的完整参数
大数据·数据库·数据仓库·elasticsearch·全文检索·日志分析·apache doris
大大大大晴天️39 分钟前
每天认识一个组件:Spark Catalyst
大数据·spark
百数平台42 分钟前
低代码安全技术实践:表单 / 流程 / 报表三级权限体系设计解析
java·大数据·数据库
一楼的猫1 小时前
第十一届中国教育后勤展览会杭州开幕 夏拾光影像为阿里、淘宝闪购提供云相册直播与视频服务 - 夏拾光影像
大数据·人工智能·音视频
程序 代码狂人1 小时前
金融数仓体系与核心业务知识详解
大数据·分布式·spark
shujudang2 小时前
金融行业数据分析平台选型:客户视图、转化诊断与权限管理
大数据·金融·数据挖掘·数据分析
Pin_Qing2 小时前
同一天,谷歌半价卖旗舰,阶跃翻倍收缓存
大数据·开发语言·人工智能·程序人生·缓存
Lalolander2 小时前
灵基Lingee怎么下载安装?Mac 与 Win 详细指南
大数据·人工智能·科技·macos·金蝶灵基
智圣新创012 小时前
从数据要素流通到服务体验升级 高校全域数据治理长效落地的行业实践参考
大数据·人工智能