kafka数据写入hologres

SQL 基础版

数据流通

-- ********************************************************************--
-- Author:         Write your name here
-- Created Time:   2023-09-11 17:17:13
-- Description:    Write your description here
-- Hints:          You can use SET statements to modify the configuration
--********************************************************************--
-- 创建kafka对应的source表
DROP TEMPORARY TABLE IF EXISTS source_kafka01;
CREATE TEMPORARY TABLE source_kafka01 (
  `user_id` STRING
  ,`uName` STRING
  ,`uId` BIGINT
  -- kafka元信息列(阿里云flink-kafka连接)
  -- https://help.aliyun.com/zh/flink/developer-reference/kafka-connector#section-5w6-fzc-ex2
  ,`ts` TIMESTAMP_LTZ(3) METADATA FROM 'timestamp' VIRTUAL
) WITH (
  'connector' = 'kafka',
  'topic' = 'sk_test_01',
  'properties.bootstrap.servers' = 'vpc:port',
  'scan.startup.mode' = 'earliest-offset',
  'key.fields' = 'user_id',
  'key.format' = 'raw'
  --从指定的毫秒时间戳1655395200000开始消费
--   'scan.startup.mode' = 'timestamp',
--   'scan.startup.timestamp-millis' = '1655395200000',
  ,'value.format' = 'json'
  ,'value.fields-include' = 'EXCEPT_KEY'
  -- ,'json.ignore-parse-errors' = 'true'
  -- ,'value.fields-include' = 'ALL'
)
;

-- 创建对应的holo sink表
DROP TEMPORARY TABLE IF EXISTS sink_hologres;
CREATE TEMPORARY TABLE sink_hologres (
  `user_id` STRING, 
  `uName` STRING,
  `uId` BIGINT,
  ts BIGINT
) WITH (
  'connector'='hologres',
  'dbname'='test_sk',
  'tablename'='test02',
  'username' = 'xxx',
  'password' = 'xxx',
  -- 使用指定vpc网络,经典网络使用失败
  'endpoint'='vpc:port',
  'field_delimiter'='|' --该参数可选。
);

INSERT INTO sink_hologres
SELECT 
  `user_id`
  ,`uName`
  ,`uId`
  -- 强制转换数据(flink官网查询)
  -- https://nightlies.apache.org/flink/flink-docs-release-1.17/docs/dev/table/functions/systemfunctions/#temporal-functions
  ,UNIX_TIMESTAMP(CAST(ts AS STRING)) AS `ts`
FROM source_kafka01
;

TopN基础版

TopN和离线版的理论上是差不多的,都是增加排序函数,分成两种形式
1、流动数据是一条条触发
2、窗口TopN是水位线触发

SELECT *
FROM (
  SELECT `user_id`
  ,`uName`
  , `uId`
  , ROW_NUMBER() OVER (PARTITION BY `user_id` ORDER BY `ts` DESC) AS row_num
  FROM source_kafka01)
WHERE row_num <= 5

运行结果

在这里插入图片描述

Kafka数据写入MySQL是指将从Kafka消息队列中获取的数据写入MySQL数据库中。在实际应用中,这种方式常用于数据的实时处理和持久化存储。 在将数据写入MySQL之前,我们需要先搭建好Kafka集群和MySQL数据库,并确保它们的连接和配置正确。接下来,可以采取以下几个步骤将数据Kafka写入MySQL: 1. 创建一个Kafka消费者来消费Kafka消息队列的数据。 2. 接收Kafka消息,将其转换为MySQL数据库所需的格式。这个格式一般是以表格的形式组织,并遵循MySQL的数据类型。 3. 连接MySQL数据库,并创建一个MySQL客户端。 4. 在MySQL客户端中执行插入操作,将从Kafka消息队列中获取的数据插入到MySQL数据库的对应表中。 5. 确认数据插入成功后,可以关闭与MySQL数据库的连接,释放资源。 在实际操作中,需要注意以下几点: 1. 数据写入MySQL时要保证数据一致性和正确性,可以对数据进行校验和去重,避免重复写入或丢失数据。 2. 可以按批次进行数据写入,提高效率,减少数据库连接和插入操作的次数。 3. 对于大规模的数据写入,可以考虑使用MySQL的批量插入功能,例如使用多值的INSERT语句或LOAD DATA INFILE命令。 4. 需要在代码中处理可能出现的异常情况,例如连接错误、插入失败等,并进行相应的处理和日志记录。 总之,通过合理配置和编程,将Kafka数据写入MySQL可以实现实时数据处理和持久化存储的需求,适用于很多场景,如日志分析、实时计算等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值