自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 在我们的大数据平台(XSailbaot)上进行企业级数据建模的思路

笔者所在的公司是差不多二十年前搞CIM(公共信息模型的)起家的。当时公司的前辈搞了基于的模型服务器、数据服务器、模式编辑器等,形成了一套基于公共信息模型建模的平台系统。其中可视化建模,建好了模式类以后,就有一套面向对象的接口,可以对数据进行增删改查的特性,让我记忆深刻,与使用JDBC或者JPA开发代码操纵数据形成鲜明的对比。在我看来,随着时代的发展,那一套产品已经显得有些不合时宜了,在此处不想去例举太多理由,但我始终觉得其思想仍然有非常多闪光的地方。

2024-06-30 21:59:54 682

原创 Properties配置加载(@PropertySource),额外不定的配置项单独存储到Map的一次歧路记录和正确解决思路

笔者的一个微服务的配置是ini文件中存储的。通过下面的方式加载。现在有一些必定数量的参数,它们都以固定的前缀开始,例如想把ai.models.*的配置都收集到一起。

2024-05-09 14:39:03 223 1

原创 Torch not compiled with CUDA enabled问题解决过程记录

运行大模型的时候,出现错误:Torch not compiled with CUDA enabled原因:并不是电脑安装了nvdia显卡驱动就可以的,还需要安装另外还需要确保安装的python是GPU版本的。通常是CPU版本的。

2024-04-11 10:20:13 1916 1

原创 Huggingface模型下载

huggingface的模型排行榜(需要翻墙):https://huggingface.co/spaces/mteb/leaderboard。

2024-03-30 15:44:08 336

原创 Python环境构建笔记

注:pip config命令配置的信息在机器重启后仍然会起作用。这是因为pip config命令是用来管理pip的配置信息的,它会把配置信息保存在配置文件中。这些配置文件通常是持久的,不会因为机器重启而丢失或改变。因此,即使机器重启,pip还是会根据这些配置文件中的信息来执行相应的操作。

2024-03-25 14:56:39 255

原创 Hive的UDF开发之向量化表达式(VectorizedExpressions)

笔者的的SailWorks模块包含离线分析功能。离线分析的后台实现,包含调度引擎、执行引擎、计算引擎和存储引擎。计算和存储引擎由Hive提供,调度引擎和执行引擎由我们自己实现。调度引擎根据DAG图和调度计划,安排执行顺序,监控执行过程。执行引擎接收调度引擎安排的任务,向Yarn申请容器,在容器中执行具体的任务。我们的离线分析支持编写Hive的UDF函数,打包上传,并声明使用函数。

2024-02-21 17:42:57 1137

原创 Python的类(Class)和描述器(Descriptor)

笔者的的SailWorks模块包含离线分析功能。离线分析的后台实现,包含调度引擎、执行引擎、计算引擎和存储引擎。计算和存储引擎由Hive提供,调度引擎和执行引擎由我们自己实现。调度引擎根据DAG图和调度计划,安排执行顺序,监控执行过程。执行引擎接收调度引擎安排的任务,向Yarn申请容器,在容器中执行具体的任务。在容器中执行的任务我们是用Python语言实现的。在实现这个组建时,笔者是对着python的基础语法教程,边学边写。

2024-01-30 10:29:53 881

原创 Jackson序列化Bean额外属性附加--@JsonAnyGetter、@JsonUnwrapped用户

有一项工作,需要将数据从一个服务S中读取出来(得到的是一个JSON),将数据解析转换以后构造成一个数组的类型A的对象,写入到一个服务T中。在发现需要增加一种类型A的字类型B,这个类型属性非常多(将近一百),在这种情形下,如果直接定义出类型B来,定义那么多属性,还得设置,将会有更大的工作量,所以考虑是不是这些额外的信息可以用一个Map来存储。

2024-01-24 16:03:25 559

原创 钉钉企业机器人单聊消息发送实践-大数据平台(XSailboat)消息中心消息推送

在笔者开发的中有模块,用来全平台的消息收集,整理分拆、订阅发送等功能。消息推送方式支持钉钉群聊、钉钉单聊、短信通知。现记录一下企业机器人消息单聊推送的实现过程。

2024-01-22 09:29:38 1204

原创 Jackson标签的高阶使用样例--多继承/子类、对象id、JsonIdentityInfo、JsonTypeInfo、JsonSubTypes

最近笔者在开发的模块。它的其中一个功能是能定义并查看资产数据。我们支持的资产类型不仅有关系数据库表,也支持Kafka主题,hdfs上的文件等。对于Kafka主题,hdfs文件等,它们没有强模式约束和描述,但为了理解、查看和约束其中的结构化数据,我们支持在这类资产上附加上模式定义的功能。对于模式的描述/模型,我参考了JsonSchema,OpenAPI 3.0的Schema,最终决定自己定义模式结构。这种模式结构能扩展、能转换成那些标准模式,为后续扩展和适应性调整留余地。

2024-01-18 11:26:01 743

原创 增加Java对象序列化和反序列化灵活性、适应性的方法

笔者在进行SailFlink框架开发的时候,涉及大量需要序列化和反序列的类,尤其是各种算子的Function方法。随着SailFlink框架的演进,很多早已写好的Function类需要增、减、修改属性,这种修改从信息上是可以向后兼容的,但如何才能放序列化逻辑能兼容旧版本,使得现场能生成保存点并更新重启Flink任务?这需要在开发的时候,就采用具备这种灵活性和适应性的序列化数据结构和逻辑设计。下面描述本人的序列化和反序列化方案设计。

2024-01-16 17:40:14 463

原创 基于大数据平台(XSailboat)的计算管道实现MySQL数据源的CDC同步--flink CDC

笔者在先前的一篇文档提到了关于数据标签的模块,现已实现并应用于项目中。如果打标信息和业务数据是在一个数据库实例中,那么只需要连接两张表进行查询即可。但是数据标签作为大数据平台的模块,显然是不能将打标数据分散到各个业务系统数据库中的,所以我们就想到了使用CDC,将相关的打标数据同步到需要这些数据的业务库中。

2024-01-16 14:08:25 845

原创 Aviator表达式扩展--数组、列表负向序号索引以及自己的JSON库支持方括号([])赋值

笔者开发的大数据中的DataStudio模块包含基于DAG图的实时计算可视化开发功能,实现了Flink计算任务的可视化开发(想要了解更多,可以查看我们都知道,原生的Flink任务开发适合在IDE中使用代码去开发调试,想要去做可视化是很难的。为此引入了“模式框架+Aviator表达式”的可视化思路,为的就是让Flink任务适合界面开发,又不过多失去原生Flink的表达能力。是一个非常优秀的表达式语言,适合应用在需要轻度编程的场景下。

2023-12-29 10:32:55 1017

原创 Flink的ListState在小规模场景下的缓存提速和接口优化丰富的实践

笔者的中包含以DAG方式可视化的离线分析和实时计算的开发、运维功能。实时计算功能,底层是基于Flink,我们在此基础上开发辅助插件和可视化开发运维套件,我们将其称之为SailFlink。原生的Flink算子适合在IDE代码环境下用代码开发,并不适合做可视化,所以必须在原生算子基础上做一定的抽象和限制。至于我们是怎么做的,可以参考。SailFlink对状态存储器也进行了包装,提供“单值”、“队列”(有界的)、“键值”三种状态存储器。有界队列型状态存储器,后台是ListState。

2023-12-23 14:47:18 1013

原创 关于Flink在一条计算管道中配置流和数据流通过广播方式合流的情形下,无保存点和检查点重跑时,让配置流先行,数据流等延迟几秒再进入合流节点的思考

1. 背景笔者带领的团队在自研的大数据平台XSailboat 上进行专家策略规则的计算管道开发时,遇到这样一种情形:计算管道中存在一条配置流和数据流通过广播方式合流的情形。配置流和数据流的输入源都是Kafka主题,但是是两个不同的Kafka主题。配置流的Kafka主题中存储的是规则配置,数据流中存储的是要分析的数据。在开发调试的时候,这两个主题中已有数据,一调试运行,数据流先到达被处理,配置流晚到,造成开发调试的时候,配置数据没有完全应用上。我们想要做到的目标是,配置流先到达合流节点,等配置数据都更

2023-12-20 19:20:06 966

原创 在线帮助中心对视频加载,过程优化,降低视频对服务端的负载

在中包含模块,提供在线的帮助文档和平台使用教程。在帮助中心,不仅支持普通的文字,图片,还希望支持视频。前端网页显示出视频数据,在大数据平台的软件架构下,会经历这样的数据链路:在用户点击目录,打开文档时,其实他不一定会去看视频,为了提升效率,希望在用户点击观看视频的时候,才去加载视频。在浏览器端,显示视频使用的是video字段。在默认情况下,当页面dom加载出来之后,会自动去加载视频数据。为了不让它自动加载,我们刚开始尝试了属性。它有auto、metadata、none三个属性可选。

2023-12-07 23:49:35 1071

原创 Flink的Reduce算子,Name-Position形式的Row数据在使用保存点/检查点重新启动的时候,变成了Position-Based形式的Row解决

大数据平台提供了基于Apache Flink的实时计算管道开发功能。DataStudio的实时计算管道开发功能中提供了分区规约节点(keyBy+reduce)。当使用保存点重新部署启动任务的时候,就会出现这样的异常:首先需要说明,XSailboat实时计算框架(SailFlink)中数据都是以NamePoisition格式的Row形式流转的。

2023-12-07 16:27:21 916

原创 SpringJPA语法样例汇集

【代码】SpringJPA语法样例汇集。

2023-12-06 14:04:17 409

原创 基于Flink的流式计算可视化开发实践关于Flink CEP的实践

为了流量卡,先凑个数。

2023-12-01 15:15:59 61

原创 大数据平台(XSailboat)中的数据服务实践

参数定义有点像代码开发的时候,声明变量并给变量赋值。应用参数和和API内部的参数定义变量的值均支持Aviator表达式或接口服务调用。接口服务(REST API)可以是工作空间内的API(无认证)调用,也可以是API网关上的API(有认证)调用。接口服务类型的参数支持设定缓存时间,以支持缓变数据避免频繁调用。这里是缓存是考虑这个服务调用的参数的,同一变量,不同调用,如果参数不同,是不会使用缓存值的。

2023-12-01 15:11:36 240

原创 Flink在YARN上部署,实例过于集中在一个主机,机器内存不够用,任务崩溃的解决

在我们的中的DataStudio中,提供了离线分析和实时计算的功能。实时计算功能的计算引擎是Flink,我们提供了基于YARN容器,一键部署计算管道的能力。一个工作空间在生产环境下,可以运行有多个Flink集群。工作空间中的一条计算管道,可以部署到各个集群得到多个FlinkJob实例。在我们的生产环境下,计算管道和集群数量都较多,在部署的时候,发现基本都在1两台机器上运行了Flink集群。而且这一两台机器还与另外一个运行XTask任务的YARN资源队列共享资源。

2023-11-25 18:17:29 198

原创 SpringJPA 自动设置创建时间、更新时间、创建人、更新人

涉及的开发技术面广了以后,很多东西掌握了,一段时间没接触、没配置,就又忘了,所以得靠“烂笔头”多记,多总结点。

2023-11-02 14:20:05 352

原创 数据标签设计 -- 大数据平台(XSailboat)的数据标签模块

近期手头的一个项目需要对数据进行大标签。原先就有在中增加“数据标签”模块的设想,现在有这样的需求,正好趁此机会将其实现。将平台内部的模块协作、配合起来,独立又相互支撑,一直是我设计大数据平台,引入模块的一个的原则。

2023-11-01 15:00:31 515

原创 Jackson输出List,元素多类型没有输出type分析及解决

在使用Jackson序列化一个List对象的时候,偶然发现输出的元素都不带表示类型的type字段。先前这个List作为一个JavaBean的字段,序列化整个Bean时,是带有类型的,但单独序列化List的时候,却不带type,造成反序列化无法找到对应的类型。构造下面的示例以说明问题。

2023-10-25 15:19:28 362 1

原创 大数据平台(XSailboat)/微服务集群的日志采集设计与实践

我们的大数据平台由众多的前端web服务和中台服务构成(模块多,总数目前有16个左右)。为了方便查看这些服务的日志信息,我们实现了对这些服务的日志采集、集中存储和查看。

2023-10-24 11:40:27 180

原创 LogBack动态添加Appender

通常情况下,对于SpringBoot微服务,会在logback-spring.xml中配置日志。但有的情况下,可能无法事前配置或者在logback-spring.xml中配置不是最有选择。例如以下情形:情形一:有一个Job调度服务其中运行不定数量的Job。运行多少个以及运行哪些Job,完全由用户配置。要求将这些Job的日志输出到不同的日志文件中。情形二:有一个应用,需要将其中某一模块的日志输出到Kafka。Kafka的联系信息存储在Zookeeper中。

2023-10-23 16:34:24 258 1

原创 数据资产目录(SailCatalog)和数据地图(SailMap)

笔者接下来准备开发大数据平台(XSailboat)中的数据资产目录(SailCatalog)和数据地图(SailMap)相关的功能,本文用以记录笔者关于此部分功能的概念梳理和主体功能设计。

2023-10-21 16:33:39 1070 1

原创 涛思(TDengine)类型的Flink Source实现及与Kafka的对比分析

基于上述的不同,可以发现实现TDengine源节点,应该通过SourceFunction实现,而不应该使用Source来实现。

2023-10-18 17:09:23 399 1

原创 计算管道节(Flink Job 算子)日志动态开启/关闭功能实现

笔者的开发大数据平台中包含基于Flink的可视化计算管道开发和运维功能。状态存储器中数据的查看和节点的日志查看功能是其重要的辅助支撑功能。它能使得在大数据平台上就能完全实现计算管道的开发、调试、部署,逐渐摆脱Flink的原生界面。此篇文档是继文档之后,进一步描述如何实现节点调试日志动态开启/关闭的文档。

2023-10-08 16:45:17 211 1

原创 集群启动部分参数-D后面加空格的原因记录--YarnApp运行Flink的JobManager

今天看到之前通过YarnApp方式运行Flink的JobManager启动命令代码,看到部分-D参数后面带空格很疑惑。相信之前这么做是有原因的,但想不起之前为什么这部分参数-D后面要带空格。

2023-09-28 11:26:19 113 1

原创 指标建模理论——指标、API与数据

指标建模工具是笔者大数据平台中的一个模块,它对于一个大数据分析平台来说有重要的意义。在大数据分析平台上进行数据开发的一项重要产物就是统计计算结果,这其中很大一部分数据可以称之为指标数据。指标建模就是定义、梳理指标的工具。

2023-09-09 22:44:58 253

原创 Flink日志采集、集中存储、可视化查询实践

笔者的开发大数据平台中包含基于Flink的可视化计算管道开发和运维功能。状态存储器中数据的查看和节点的日志查看功能是其重要的辅助支撑功能。它能使得在大数据平台上就能完全实现计算管道的开发、调试、部署,逐渐摆脱Flink的原生界面。Flink分JobManager和TaskManager,JobManager中的日志是总体性的,构建计算管道的过程,就是在JobManager中完成的,而Job的执行则是在TaskManager中。就可以从中找失败原因。

2023-08-28 11:34:35 933

原创 日志采集与处理 flume拦截器--使用Aviator扩展拦截器功能

在使用flume进行日志收集、处理的过程中,发现flume带的拦截器处理能力不够。笔者开发的大数据平台中广泛使用了,可以通过使用Aviator表达式提升拦截器的处理能力。

2023-08-28 10:56:41 81

原创 本地运行Flink退出时java.nio.file.DirectoryNotEmptyException、目录没有正常删除解决方法

在开发大数据平台中的查看Flink任务的状态数据工具时,用State Process API解析保存点数据,将其从HDFS上读取出来再将其解析过后下沉到HDFS以CSV格式保存,然后由其它接口提供对这个文件的分页加载功能。解析保存点和检查点中状态数据的功能代码是集成在SailWorks生产环境中台服务和DataStudio中台服务中的,状态数据解析出来以后Flink Job相关的资源销毁,服务进程并不会退出。

2023-08-18 08:29:57 815

原创 Hadoop YARN的ResourceManager报错TableNotFoundException:prod.timelineservice.flowactivity解决

1. 问题在resourcemanager.log中出现下面的异常:java.io.UncheckedIOException: org.apache.hadoop.hbase.TableNotFoundException: prod.timelineservice.flowactivity at org.apache.hadoop.hbase.client.ResultScanner$1.hasNext(ResultScanner.java:55) at org.apache.hadoop.yarn

2023-08-16 15:50:29 297

原创 Flink连接HDFS出现java.net.UnknownHostException解决办法

在开发大数据平台中的查看Flink任务的状态数据工具时,用State Process API解析保存点数据,将其从HDFS上读取出来再将其解析过后下沉到HDFS以CSV格式保存,然后由其它接口提供对这个文件的分页加载功能。以CSV格式下沉到HDFS,笔者直接使用了DataStream上已经废弃的writeAsCsv方法,因为这个方法的特性正好和此处的需求相符,没有使用FileSink,因为它的Bucket特性,在此处不适用。

2023-08-15 16:28:46 716 2

原创 Flink的DAG可视化开发实践

笔者早年间有很长一段时间都在阿里云DataWorks上带着团队进行数据开发,后来因为一个契机自己搞起了大数据平台。刚开始开发平台的主要的数据开发能力是基于DAG图的可视化离线分析开发和运维。后来手头有一个项目需要使用流式计算功能,所以就想把Flink也引入到。首先确立了以下2个主要目标:a. 像离线分析一样,支持基于DAG的可视化开发;b. 在平台里应该有开发和生产两套环境;平台要支持Flink基于DAG可视化开发,不像离线分析,有阿里云DataWorks的样板可以参考。

2023-08-10 11:30:24 871

原创 数据治理平台的思路

数据治理是为了让数据在形式上和质量上更好地达成某一数据应用目标而进行的数据集成、数据整理、数据分析、数据修缮、数据发布,数据应用的过程。

2023-08-09 11:35:58 288

原创 数仓分层实践

因为数据在通常情况下是不完美的,如果在构建数据引入层过程进行复杂数据过滤、类型转换等处理,很可能会丢失一部分意料之外的特殊数据,造成统计结果和用户预计的产生偏差。在通常的理论中,这一层会位于维度层之后。在此需要特别说明,在一个完整的数据开发过程中,可以多次出现构建明细数据层的过程,汇总层和明细层也不是绝对的,因为有的汇总过程并不是一步就能完成的,而需要阶梯式分步汇总,前一步的汇总会是下一步的明细。这一层是在明细的数据层的基础上,抽取每次执行计算所涉及的统计周期内的数据,附加上表示统计周期相关的字段。

2023-08-05 17:44:44 169

原创 指标建模概念和设计

笔者正在开发中的指标建模工具(SailIMS)。以此篇文档梳理一下其中一部分关键性的功能设计。内容重点不在解释各种理论和方法,而是描述一种将实际落地、可操作的指标建模功能设计方案。

2023-08-05 16:20:15 260

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除