普元数据开发平台 普元数据开发平台
产品介绍
安装部署
快速入门
操作指南
应用集成
运维指南
  • HBase查询示例
  • 准备数据
  • 新建批量作业
  • 画布中拖入关系型数据库输入图元、HBase查询图元、文本文件输出图元
  • 配置"关系型数据库输入"组件属性
  • 配置"HBase查询"组件属性
  • 配置"文本文件输出"组件属性
  • 通用配置
  • 保存草稿
  • 运行
  • 提交版本

# HBase查询示例

本示例主要介绍 HBase查询 的使用方法。

该场景Mysql中存入订单数据,HBase中存入订单快递数据,先读取Mysql数据,通过HBase查询组件将对应的快递数据添加到Mysql的数据后面,最后输出到文本文件中。主要步骤如下:

  • 准备数据
  • 新建批量作业
  • 画布中拖入关系型数据库输入图元、HBase查询图元、文本文件输出图元
  • 配置"关系型数据库输入"组件属性
  • 配置"HBase查询"组件属性
  • 配置"文本文件输出"组件属性
  • 通用配置
  • 保存草稿
  • 运行
  • 提交版本

# 准备数据

在Mysql上执行创建订单主表orders_info并插入数据:

-- 订单主表
CREATE TABLE `orders_info` (
    `order_id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '订单ID',
    `order_no` VARCHAR(32) NOT NULL COMMENT '订单编号',
    `user_id` BIGINT(20) NOT NULL COMMENT '用户ID',
    `user_name` VARCHAR(50) NOT NULL COMMENT '用户名',
    `total_amount` DECIMAL(10,2) NOT NULL COMMENT '订单总金额',
    `order_status` TINYINT(4) NOT NULL DEFAULT 0 COMMENT '订单状态:0-待付款 1-已付款 2-已发货 3-已完成 4-已取消',
    `pay_type` TINYINT(4) DEFAULT NULL COMMENT '支付方式:1-微信 2-支付宝 3-银行卡',
    `pay_time` DATETIME DEFAULT NULL COMMENT '支付时间'
    PRIMARY KEY (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单主表';

-- 插入订单主数据
INSERT INTO `orders_info` (`order_no`, `user_id`, `user_name`, `total_amount`, `order_status`, `pay_type`, `pay_time`) VALUES
('ORD202401010001', 1001, '张三', 299.00, 3, 1, '2024-01-01 10:30:00'),
('ORD202401010002', 1002, '李四', 1599.50, 2, 2, '2024-01-01 14:20:00'),
('ORD202401020001', 1003, '王五', 89.90, 1, 3, '2024-01-01 02:20:00'),
('ORD202401020002', 1001, '张三', 459.00, 3, 1, '2024-01-02 11:45:00'),
('ORD202401030001', 1004, '赵六', 2399.00, 0, 3, '2024-01-02 10:15:00');

在HBase上执行创建订单快递关联表order_extend并插入数据:

# 订单快递关联表
create 'order_extend','cf_detail','cf_logistics','cf_extra'

# 订单 ORD202401010001 的扩展信息
put 'order_extend', 'ORD202401010001', 'cf_detail:receiver_name', '张三'
put 'order_extend', 'ORD202401010001', 'cf_detail:receiver_phone', '13800138001'
put 'order_extend', 'ORD202401010001', 'cf_detail:receiver_address', '北京市朝阳区XX街道XX号'
put 'order_extend', 'ORD202401010001', 'cf_detail:invoice_type', '1'
put 'order_extend', 'ORD202401010001', 'cf_detail:invoice_title', '张三个人'
put 'order_extend', 'ORD202401010001', 'cf_detail:remark', '请尽快发货,急用'
put 'order_extend', 'ORD202401010001', 'cf_logistics:company', '顺丰速运'
put 'order_extend', 'ORD202401010001', 'cf_logistics:tracking_no', 'SF1234567890'
put 'order_extend', 'ORD202401010001', 'cf_logistics:delivery_man', '王师傅'
put 'order_extend', 'ORD202401010001', 'cf_extra:client_source', 'APP'
put 'order_extend', 'ORD202401010001', 'cf_extra:user_grade', 'VIP'

# 订单 ORD202401010002 的扩展信息
put 'order_extend', 'ORD202401010002', 'cf_detail:receiver_name', '李四'
put 'order_extend', 'ORD202401010002', 'cf_detail:receiver_phone', '13800138002'
put 'order_extend', 'ORD202401010002', 'cf_detail:receiver_address', '上海市浦东新区XX路XX号'
put 'order_extend', 'ORD202401010002', 'cf_detail:invoice_type', '2'
put 'order_extend', 'ORD202401010002', 'cf_detail:invoice_title', '上海科技有限公司'
put 'order_extend', 'ORD202401010002', 'cf_detail:invoice_tax_no', '91440101MA5XXXXXX'
put 'order_extend', 'ORD202401010002', 'cf_logistics:company', '中通快递'
put 'order_extend', 'ORD202401010002', 'cf_logistics:tracking_no', 'ZTO9876543210'
put 'order_extend', 'ORD202401010002', 'cf_extra:client_source', 'PC'
put 'order_extend', 'ORD202401010002', 'cf_extra:user_grade', 'NORMAL'

# 订单 ORD202401020001 的扩展信息
put 'order_extend', 'ORD202401020001', 'cf_detail:receiver_name', '王五'
put 'order_extend', 'ORD202401020001', 'cf_detail:receiver_phone', '13800138003'
put 'order_extend', 'ORD202401020001', 'cf_detail:receiver_address', '广州市天河区XX路XX号'
put 'order_extend', 'ORD202401020001', 'cf_detail:remark', '放在快递柜'
put 'order_extend', 'ORD202401020001', 'cf_extra:client_source', '小程序'

# 订单 ORD202401020002 的扩展信息
put 'order_extend', 'ORD202401020002', 'cf_detail:receiver_name', '张三'
put 'order_extend', 'ORD202401020002', 'cf_detail:receiver_phone', '13800138001'
put 'order_extend', 'ORD202401020002', 'cf_detail:receiver_address', '北京市朝阳区XX街道XX号'
put 'order_extend', 'ORD202401020002', 'cf_detail:invoice_type', '1'
put 'order_extend', 'ORD202401020002', 'cf_logistics:company', '京东快递'
put 'order_extend', 'ORD202401020002', 'cf_logistics:tracking_no', 'JD5555555555'
put 'order_extend', 'ORD202401020002', 'cf_extra:client_source', 'APP'
put 'order_extend', 'ORD202401020002', 'cf_extra:user_grade', 'VIP'

# 订单 ORD202401030001 的扩展信息
put 'order_extend', 'ORD202401030001', 'cf_detail:receiver_name', '赵六'
put 'order_extend', 'ORD202401030001', 'cf_detail:receiver_phone', '13800138004'
put 'order_extend', 'ORD202401030001', 'cf_detail:receiver_address', '深圳市南山区XX科技园XX栋'
put 'order_extend', 'ORD202401030001', 'cf_detail:invoice_type', '2'
put 'order_extend', 'ORD202401030001', 'cf_detail:invoice_title', '深圳科技有限公司'
put 'order_extend', 'ORD202401030001', 'cf_detail:invoice_tax_no', '91440300MA5XXXXXX'
put 'order_extend', 'ORD202401030001', 'cf_detail:remark', '企业采购,需要合同'
put 'order_extend', 'ORD202401030001', 'cf_extra:client_source', 'PC'
put 'order_extend', 'ORD202401030001', 'cf_extra:user_grade', 'ENTERPRISE'	   
说明:
Mysql表orders_info中的order_no字段(订单编号)和HBase表order_extend中的rowKey进行关联。

# 新建批量作业

点击资源树节点上的【...】,选择弹出菜单【新建批量作业】。作业名称为:"HBaseLookup",选择作业类型:"转换"。

# 画布中拖入关系型数据库输入图元、HBase查询图元、文本文件输出图元

依次拖拽输入中的关系型数据库输入组件、查询中的HBase查询组件、输出中的文本文件输出组件,依次连线。如下图所示:

# 配置"关系型数据库输入"组件属性

选择Mysql数据源,然后选择刚才执行“订单主表”sql语句的数据库,最后点击获取SQL查询。

在数据库浏览中输入“orders”进行筛选,并选择订单主表,最后点击确定。

关系型数据库输入最终配置如下:

# 配置"HBase查询"组件属性

选择HBase数据源,然后选择订单快递关联表order_entend,点击添加字段并配置HBase映射表。

配置HBase映射表后,输入映射名称为“order_extend_mapping”,点击“保存映射”后点击下一步。

HBase映射表配置如下:

别名 键 列名 列簇 类型 备注
order_no 是 String hbase的rowkey对应订单编号
receiver_name 否 receiver_name cf_detail String 接收人名称
receiver_phone 否 receiver_phone cf_detail String 接收人手机号
receiver_address 否 receiver_address cf_detail String 接收人地址
invoice_type 否 invoice_type cf_detail String 发票类型
invoice_title 否 invoice_title cf_detail String 发票抬头
remark 否 remark cf_detail String 备注
company 否 company cf_logistics String 公司
tracking_no 否 tracking_no cf_logistics String 快递单号
delivery_man 否 delivery_man cf_logistics String 快递员
client_source 否 client_source cf_extra String 客户来源
user_grade 否 user_grade cf_extra String 用户等级

配置查询关键字:

  1. 点击获取字段,目标字段为HBase映射表(order_extend_mapping)配置的字段。
  2. 删除其他字段,只保留目标字段中的order_no字段。
  3. 点击来源字段,来源字段为Mysql中订单主表(orders_info)的字段,选择来源字段中的order_no。

该配置主要设置了用Mysql订单主表orders_info中的order_no字段去HBase进行查询。查询条件为HBase表order_no字段值=Mysql表order_no字段值。

设置查询返回字段及值,这里设置的是从HBase中返回的字段有哪些,可以根据需要进行设置,本示例返回了6个字段,如下图所示:

点击确定,完成配置。

# 配置"文本文件输出"组件属性

选择HDFS数据源,输入文件路径为/bigdata/csv/hbase-lookuo-samples,并设置扩展名为csv,最后点击下一步。

设置分隔符为逗号",",点击获取字段,字段中包含Mysql表字段和HBase查询返回字段。最后点击确定。

# 通用配置

在通用配置中可以配置任务优先级、Worker 分组、命名参数、本地参数、超时告警。

可以参考示例关系型表数据同步示例 中的"通用配置"说明。

# 保存草稿

如果所有组件属性都已设置完毕,点击【保存】按钮,可以看到保存过的历史草稿,并可以随意切换草稿。(草稿只保存最近 10 个)

可以参考示例关系型表数据同步示例 中的"保存草稿"说明。

# 运行

点击【运行】按钮,可以运行已经开发完毕的场景,在日志栏可以看运行日志及运行结果。

查看HDFS系统的/bigdata/csv/hbase-lookuo-samples.csv文件,包含Mysql字段和HBase查询返回的字段。

# 提交版本

当草稿运行正常后,点击【提交】按钮可以将该版本提交到作业调度,每次修改提交都会生成新的版本,可以看到提交的历史版本,并可以随意切换版本。

提交后的版本,可以在作业调度中进行"定时"调度配置。

可以参考示例关系型表数据同步示例 中的"提交版本"说明。

← HDFS文件输入-输出示例 流查询示例 →