binlog数据清洗

33 篇文章 ¥49.90 ¥99.00
本文介绍了游戏数据清洗的过程,重点针对game_data和game_log_data进行分类。在清洗流程中,核心问题是如何处理二进制文件,如blob,转化为text存储到大数据仓库。此外,通过数据库+表名的hash操作实现数据分区,确保同一表的数据落在同一分区。文章还提及主线程代码中过滤二进制数据的环节。
数据分类

目前游戏中数据分为两类,一种是游戏数据,一种是游戏日志数据,即game_data和game_log_data。对于game_log数据主要做一些汇总分析,比如玩家参与某种玩法的参与度,以及一些行为的分析。对于游戏数据,主要就是玩家一些基础属性,比如战力,等级等等的存储,最重要的就是玩家的充值数据,这些会随着玩家的操作数据值会改变的,如玩家升级,充值由未完成到已完成。

清洗流程

在这里插入图片描述

核心问题以及解决
  • 数据对于二进制文件
    • 对于blob等二进制文件在存储到大数据仓库的时候,直接转换为text , 在目前来说这种数据,对于统计几乎没有统计意义。
  • 同一个表要落到一个分区中
    • 对数据库+表名做hash操作,然后%分区数,让同一个表数据落入同一分区。
主线程代码
String groupId = gameConfig
### StarRocks 据库中的数据清洗方法或工具 在实时的构建过程中,数据清洗是一个关键环节。StarRocks 作为一个高性能的分布式分析型据库,支持多种方式对据进行清洗和处理[^1]。以下是几种常见的数据清洗方法或工具: #### 1. **使用 SQL 查询进行数据清洗** - 在 StarRocks 中,可以通过编写复杂的 SQL 查询来实现数据清洗。例如,通过 `WHERE` 子句过滤无效或错误的据,或者使用 `CASE WHEN` 语句对据进行转换和修正。 - 示例代码: ```sql INSERT INTO clean_table SELECT id, CASE WHEN age < 0 THEN NULL ELSE age END AS age, CASE WHEN gender NOT IN ('M', 'F') THEN NULL ELSE gender END AS gender FROM raw_table; ``` 上述代码中,`CASE WHEN` 用于将不符合条件的据替换为 `NULL` 或其他默认值[^2]。 #### 2. **利用 ETL 工具进行数据清洗** - 在 StarRocks 的实际应用中,通常会结合外部的 ETL 工具(如 Apache Flink、Apache Spark 等)进行数据清洗。这些工具可以处理更复杂的据逻辑,并将清洗后的据写入 StarRocks。 - 示例:通过 Apache Flink 实现数据清洗并写入 StarRocks。 ```python from pyflink.table import TableEnvironment, EnvironmentSettings env_settings = EnvironmentSettings.new_instance().in_streaming_mode().build() t_env = TableEnvironment.create(env_settings) # 注册输入表和输出表 t_env.execute_sql(""" CREATE TABLE input_table ( id BIGINT, name STRING, age INT ) WITH ( 'connector' = 'kafka', 'topic' = 'raw_data_topic', 'properties.bootstrap.servers' = 'localhost:9092', 'format' = 'json' ) """) t_env.execute_sql(""" CREATE TABLE output_table ( id BIGINT, name STRING, age INT ) WITH ( 'connector' = 'starrocks', 'jdbc-url' = 'jdbc:mysql://localhost:9030/starrocks_db', 'load-url' = 'localhost:8030', 'table-name' = 'cleaned_data', 'username' = 'root', 'password' = '' ) """) # 数据清洗逻辑 t_env.from_path("input_table").filter("age > 0").execute_insert("output_table").wait() ``` #### 3. **基于 Binlog增量数据清洗** - 如果据源支持 Binlog(如 MySQL 或 Hologres),可以通过消费 Binlog 据来实现增量数据清洗。StarRocks 支持与 Kafka 集成,因此可以结合 Flink 消费 Kafka 中的 Binlog 据并进行清洗后写入 StarRocks[^3]。 - 示例:通过 Flink 消费 Kafka 中的 Binlog 据。 ```sql INSERT INTO starrocks_table SELECT id, updated_value, event_time FROM kafka_binlog_topic WHERE event_type = 'UPDATE'; ``` #### 4. **使用内置函进行数据清洗** - StarRocks 提供了丰富的内置函,可以直接在 SQL 查询中使用以实现数据清洗。例如,`TRIM()` 用于去除字符串两端的空格,`REPLACE()` 用于替换字符串中的特定字符等。 - 示例代码: ```sql INSERT INTO cleaned_table SELECT TRIM(name) AS name, REPLACE(address, ' ', '-') AS formatted_address FROM raw_table; ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

壬戌知秋

您的打赏将是我最大的鼓励感谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值