Flink <-->HBase的使用介绍+with参数

本文介绍了Flink如何使用HbaseConnector与Hbase集群进行交互,支持读写操作。适用版本为hbase-1.4.x。示例展示了Hbase作为数据源和数据接收端的CREATE TABLE语句,详细列出了相关参数及其作用,如`connector`、`table-name`、`zookeeper.quorum`等。此外,还阐述了Flink与Hbase的数据类型映射规则,并强调了Hbase connector对于主键的使用要求。

介绍

Hbase Connector 提供了对 Hbase 集群的读写支持。Oceanus 已经提供了内置的flink-connector-hbase Connector 组件。

使用范围

仅适用于 hbase-1.4.x。

示例

用作数据源(Source)

CREATE TABLE dim_hbase (

  rowkey STRING,

  cf ROW < school_name STRING >,

  PRIMARY KEY (rowkey) NOT ENFORCED

WITH (

  'connector' 'hbase-1.4',                   -- 固定值为 hbase-1.4

  'table-name' 'dim_hbase',                   -- Hbase 表名

  'zookeeper.quorum' 'ip:port,ip:port,ip:port'  -- Hbase 的 zookeeper 地址

);

 

INSERT INTO  CustomSink SELECT dim_hbase.rowkey, dim_hbase.cf.school_name as school_name FROM dim_hbase;

用作数据目的(Sink)

CREATE TABLE random_source (

  rowkey STRING,

  school_name STRING

  WITH (

  'connector' 'datagen',

  'rows-per-second'='1',            -- 每秒产生的数据条数

  'fields.rowkey.length'='10',      -- 随机字符串的长度

  'fields.school_name.length'='10'  -- 随机字符串的长度

);

 

CREATE TABLE dim_hbase (

  rowkey STRING,

  cf ROW < school_name STRING >,

  PRIMARY KEY (rowkey) NOT ENFORCED

WITH (

  'connector' 'hbase-1.4',                          -- 固定值为 hbase-1.4

  'table-name' 'dim_hbase',                         -- Hbase 表名

  'zookeeper.quorum' 'ip:port,ip:port,ip:port',     -- Hbase 的 zookeeper 地址

  'sink.buffer-flush.max-size' '50KB',              -- 写入 Hbase 前,内存中缓存的数据条数。调大该值有利于提高 Hbase 写入性能,但会增加写入延迟和内存使用。

  'sink.buffer-flush.max-rows' '10'                 -- 将缓存数据周期性写入到 Hbase 的间隔,可以控制写入 Hbase 的延迟。

);

INSERT INTO dim_hbase SELECT rowkey, ROW(school_name) FROM random_source;

WITH 参数

参数

说明

是否必填

备注

connector表类型固定值为 hbase-1.4
table-nameHBase 表名-
zookeeper.quorumHBase 的 zookeeper 地址-
zookeeper.znode.parentHBase 在 zookeeper 中的根目录-
null-string-literalHBase 字段类型为字符串时,如果 Flink 字段数据为 null,则将该字段赋值为 null-string-literal,并写入 Hbase默认为 null
sink.buffer-flush.max-size写入 HBase 前,内存中缓存的数据量(字节)大小。调大该值有利于提高 HBase 写入性能,但会增加写入延迟和内存使用。仅作为 Sink 时使用默认值为2MB,支持字节单位 B、KB、MB 和 GB,不区分大小写。设置为0表示不进行缓存
sink.buffer-flush.max-rows写入 HBase 前,内存中缓存的数据条数。调大该值有利于提高 HBase 写入性能,但会增加写入延迟和内存使用。仅作为 Sink 时使用默认值为1000,设置为0表示不进行缓存
sink.buffer-flush.interval将缓存数据周期性写入到 HBase 的间隔,可以控制写入 HBase 的延迟。仅作为 Sink 时使用默认值为1秒,支持时间单位 ms、s、min、h 和 d。设置为0表示关闭定期写入

类型映射

HBase 将所有的数据存为字节数组。读写操作时需要将数据进行序列化和反序列化。Flink 与 HBase 的数据转换关系如下:

Flink SQL 类型

Hbase 转换

Flink SQL 类型

Hbase 转换

CHAR / VARCHAR / STRINGbyte[] toBytes(String s)
String toString(byte[] b)
BOOLEANbyte[] toBytes(boolean b)
boolean toBoolean(byte[] b)
BINARY / VARBINARYbyte[]
DECIMALbyte[] toBytes(BigDecimal v)
BigDecimal toBigDecimal(byte[] b)
TINYINTnew byte[] { val }
bytes[0]
SMALLINTbyte[] toBytes(short val)
short toShort(byte[] bytes)
INTbyte[] toBytes(int val)
int toInt(byte[] bytes)
BIGINTbyte[] toBytes(long val)
long toLong(byte[] bytes)
FLOATbyte[] toBytes(float val)
float toFloat(byte[] bytes)
DOUBLEbyte[] toBytes(double val)
double toDouble(byte[] bytes)
DATE将日期转换成自1970.01.01以来的天数,用 int 表示,并通过 byte[] toBytes(int val) 转换成字节数组
TIME将时间转换成自00:00:00以来的毫秒数,用 int 表示,并通过 byte[] toBytes(int val) 转换成字节数组
TIMESTAMP将时间戳转换成自1970-01-01 00:00:00以来的毫秒数,用 long 表示,并通过 byte[] toBytes(long val) 转换成字节数组
ARRAY不支持
MAP / MULTISET不支持
ROW不支持

注意事项

Hbase connector 一般会使用 DDL 语句中定义的主键,以 upsert 模式工作,与外部系统交换变更日志信息。因此,必须在 HBase 的 rowkey 字段上定义主键(必须声明 rowkey 字段)。如果未声明 PRIMARY KEY 子句,则 HBase 连接器默认将 rowkey 作为主键。

参考:HBase | Apache Flink

企业创新活动具有投入周期长、不确定性高和收益实现滞后等特征,持续稳定的资源支持是保障企业长期创新的重要基础。耐心资本作为一种强调长期价值创造、具备较高风险容忍度并积极参与企业治理的资本形态,能够通过缓解融资约束、优化公司治理结构以及增强企业风险承担能力,为企业持续开展创新活动提供长期稳定支持 本文基于2010—2024年中国A股上市公司样本数据,借鉴《耐心资本对企业持续性创新投入的影响研究》一文中的基准回归设计思路和研究方法,围绕“耐心资本是否能够促进企业持续性创新投入”这一问题展开基准回归实证检验,基准回归结果显示,耐心资本能显著促进企业持续性创新,数据集含原始数据、处理代码、基准回归实证结果 关键指标构建: 1.耐心资本:本文从稳定型股权和关系型债权两个维度刻画企业耐心资本水平,并采用熵权法对两个指标进行加权整合,构建综合耐心资本指数。其中,稳定型股权参考温磊和李思飞(2024)的研究,以长期机构投资者持股比例作为衡量指标;关系型债权参考吴旻佳(2022)、姜中裕(2024)的研究,采用上市公司长期负债占负债总额的比例衡量 2.企业持续性创新:基于研发投入三期动态变化构建,借鉴何郁冰(2017)、杨仁发(2025)的研究思路,计算第t-1至t年研发投入之和与第t-2至t-1年研发投入之和的比值,再将该比值乘以第t-1至t年研发投入之和,以此反映企业在创新投入上的持续性特征 相关数据:上市公司耐心资本数据,上市公司耐心资本投资数据,上市公司研发投入与专利数据 一、数据介绍 数据名称:耐心资本对企业持续性创新投入的影响研究 数据范围:上市公司企业 时间范围:2010-2024年 样本数量:31725条 数据来源:上市公司年报 数据说明:含原始数据、处理过程dofile文件、基准回归结果
内容概要:本文聚焦于语音增强领域的组稀疏信号去噪技术,深入研究了结合非凸正则化与凸优化的先进去噪方法,并提供了完整的Matlab代码实现方案。研究通过构建组稀疏信号模型,设计高效的非凸正则项以增强稀疏性表达能力,进而将其融入凸优化框架中求解,从而在复杂噪声环境下有效提升语音信号的清晰度与质量。文章不仅详述了算法的数学推导与优化求解流程,还突出了该方法在保留语音关键特征的同时抑制噪声的优越性能。此外,文档还列举了多个相关科研方向,展现出信号处理与优化理论在智能优化、机器学习、电力系统等多学科交叉应用中的广阔前景。; 适合人群:具备信号处理、优化理论或机器学习基础知识,从事语音增强、通信工程、电子信息、自动化等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:① 深入理解非凸正则化在稀疏信号恢复中的理论优势与实现机制;② 实践并复现组稀疏信号去噪算法,开展不同噪声条件下的性能对比实验;③ 利用Matlab平台完成语音增强相关的科研课题、课程设计或算法开发。; 阅读建议:建议读者结合文中的Matlab代码进行动手实践,重点关注目标函数的构造、优化算法的迭代过程及参数调优策略。初学者应先夯实稀疏表示与凸优化的基础知识,再循序渐进地掌握非凸正则化的核心思想与实现细节,以充分发挥该方法的技术潜力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值