核心概念

理解 Kafka 数据流

Kafka 是分布式流平台,用于高吞吐量消息传递。在 ETL 过程中,Kafka 作为数据消息队列或流处理来源。

维度表设计

维度表包含业务实体详细信息,如产品名称、客户信息、时间维度等。每个维度表有唯一主键标识记录。

核心代码实现

TableObject 样例类

case class TableObject(database: String, tableName: String, typeInfo: String, dataInfo: String) extends Serializable

AreaInfo 维度数据

case class AreaInfo(id: String, name: String, pid: String, sname: String, level: String, citycode: String, yzcode: String, mername: String, Lng: String, Lat: String, pinyin: String)

DataInfo 业务数据

case class DataInfo(modifiedTime: String, orderNo: String, isPay: String, orderId: String, tradeSrc: String, payTime: String, productMoney: String, totalMoney: String, dataFlag: String, userId: String, areaId: String, createTime: String, payMethod: String, isRefund: String, tradeType: String, status: String)

HBase 连接与写入

ConnHBase

创建 HBase 连接,配置 ZooKeeper 集群地址

SinkHBase

实现 RichSinkFunction,将数据写入 HBase,包含 insertArea、insertTradeOrders、deleteArea 等方法

Kafka 数据源

SourceKafka

创建 FlinkKafkaConsumer,配置 bootstrap.servers、序列化器、消费者组等

主程序流程

KafkaToHBase

  1. 创建执行环境
  2. 获取 Kafka 数据源
  3. 解析 JSON 数据
  4. 根据数据库和表名分发处理
  5. 写入 HBase 对应表

维度表更新方式

  • 全量更新:每次获取新数据时覆盖写入
  • 增量更新:根据时间戳或版本号更新已有记录,确保数据一致性