Flink CDC 自定义函数处理 SQLServer XML类型数据 映射 doris json字段方案
Flink CDC 自定义函数处理 SQLServer XML类型数据方案
1. 背景
因业务使用SQLServer数据库,CDC同步到doris 数仓。对于SQLServer xml类型,doris没有相应的字段对应,
可以使用json来存储xml数据。需要进行一步转换。从 flink 自定义函数入手。
2. 解决方案
- SQLServer xml 字段如下
<items><item lng="zh-CN" value="银行货到付款" /><item lng="en" value="Bank transfer on delivery" />
</items>
- doris 存储转换后的json内容
{"item": [{"lng": "zh-CN","value": "银行货到付款"},{"lng": "en","value": "Bank transfer on delivery"}]
}

- flink 自定义函数代码
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import org.apache.flink.table.functions.ScalarFunction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;/*** 将XML转换为JSON*/
public class XmlToJson extends ScalarFunction {private Logger log = LoggerFactory.getLogger(XmlToJson.class);/*** 创建XmlMapper对象用于解析XML*/private final XmlMapper xmlMapper = new XmlMapper();public String eval(String xml) {// 将XML字符串解析为JsonNode对象JsonNode jsonNode = null;try {jsonNode = xmlMapper.readTree(xml);} catch (JsonProcessingException e) {log.error("XML解析失败", e);}// 将JsonNode对象转换为JSON字符串return jsonNode.toString();}
}
- doris 表
-- GName 为json格式
CREATE TABLE `table1` (`ID` int(11) NOT NULL COMMENT '字典表统一ID',`Name` varchar(600) NULL COMMENT '统一进行字典命名',`GName` json NULL COMMENT '采用xml存储多语言',
) ENGINE=OLAP
UNIQUE KEY(`ID`)
COMMENT '测试表'
DISTRIBUTED BY HASH(`ID`) BUCKETS AUTO
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
"is_being_synced" = "false",
"storage_format" = "V2",
"enable_unique_key_merge_on_write" = "true",
"light_schema_change" = "true",
"disable_auto_compaction" = "false",
"enable_single_replica_compaction" = "false"
);
- 注册自定义函数 sql调用转换
create temporary function xml_to_json as 'com.zfb.flink.udf.XmlToJson';INSERT INTO flink_doris (`ID`,`Name`, `GName`)
SELECT
`ID`,`Name`, xml_to_json(`GName`), `TypeID`
FROM table1;
- doris json使用
selectjson_extract_string(GName, '$.item[0].value') as cn_name,*
fromtable1;
相关文章:
Flink CDC 自定义函数处理 SQLServer XML类型数据 映射 doris json字段方案
Flink CDC 自定义函数处理 SQLServer XML类型数据方案 1. 背景 因业务使用SQLServer数据库,CDC同步到doris 数仓。对于SQLServer xml类型,doris没有相应的字段对应, 可以使用json来存储xml数据。需要进行一步转换。从 flink 自定义函数入手…...
F.interpolate函数
F.interpolate 是 PyTorch 中用于对张量(通常是图像数据)进行插值操作的函数,常用于调整张量的大小,例如改变图像的分辨率。它支持多种插值方法,包括最近邻插值、双线性插值和三次插值等。 语法 torch.nn.functional…...
华为交换机---自动备份配置到指定ftp/sftp服务器
华为交换机—自动备份配置到指定ftp服务器 需求 交换机配置修改后及时备份相关配置,每次配置变化后需要在1分钟后自动进行保存,并且将配置上传至FTP服务器;每隔30分钟,交换机自动把配置上传到FTP服务器。 1、定时保存新配置的时间间隔为*分钟(1天=1440),默认为30分钟(…...
nginx学习之路-nginx配置https服务器
文章目录 1. 生成证书2. 配置证书1. 拷贝证书文件2. 修改conf/nginx.conf文件内容 3. 查看效果1. 重载配置2. 访问 1. 生成证书 在linux系统下执行,使用openssl命令。(windows环境也可以使用cmder) # 1. 生成私钥 server2025.key(无密码保护…...
UCAS 24秋网络认证技术 CH10 SSL 复习
TLS字段、参数含义要了解每个消息是什么意思 基本方式只验证服务端,服务端有证书,变形方式加上验证客户端TLS1.3区别 协商过程 背景 Record层使用的各种加密算法参数,均由Handshake协议协商获得。 具体过程 随机数交换 Client/Server相互…...
【linux内核分析-存储】EXT4源码分析之“文件删除”原理【七万字超长合并版】(源码+关键细节分析)
EXT4源码分析之“文件删除”原理【七万字超长合并版】(源码关键细节分析),详细的跟踪了ext4文件删除的核心调用链,分析关键函数的细节,解答了开篇中提出的三个核心疑问。 文章目录 提示前言全文重点索引1.源码解析1.1 …...
代码随想录 day62 第十一章 图论part11
第十一章:图论part11 Floyd 算法精讲 Floyd 算法代码很简单,但真正理解起原理 还是需要花点功夫,大家在看代码的时候,会发现 Floyd 的代码很简单,甚至看一眼就背下来了,但我为了讲清楚原理,本…...
springboot571基于协同过滤算法的私人诊所管理系统(论文+源码)_kaic
摘 要 随着时代的发展,人们的生活方式得到巨大的改变,从而慢慢地出现了大量私人诊所信息,私人诊所信息管理需要一个现代化的管理系统,进行私人诊所的管理。 私人诊所管理系统的开发就是为了解决私人诊所信息管理的问题࿰…...
Uniapp Android 本地离线打包(详细流程)
一、简介 App 离线 SDK 暂时不支持 Kotlin,未来不清楚。 uniapp 提供了 云打包 与 本地打包 两种方案,云打包 需要排队且还有次数限制,本地打包 则就没有这些限制,而且会 本地打包 对开发 原生插件 有很大的帮助。 细节&#x…...
vite+vue3动态引入资源文件(问题已解决但离了个大谱)
教程很详细,直接上代码 解决方法(赶时间的小友理解下这函数就能解决问题了,就是处理了下路径,运气不好遇到问题再回来也不迟🤣🤣🤣) const getSvgUrl (name) > {// name: svg_1…...
通过 4 种方式快速将音乐从 iPod 传输到 Android
概括 在 iPod 上听音乐很酷,但是当您拥有最新的 Android 手机时,也许您想在新手机上欣赏 iPod 音乐。那么,你的计划是什么?如何将音乐从 iPod 传输到 Android? 如果您担心这个问题,请看看下面的方法。他们…...
ArcGIS中怎么把数据提取到指定范围(裁剪、掩膜提取)
最近,经常能收到怎么把数据提取到指定范围、栅格数据怎么裁剪、矢量数据怎么裁剪、栅格数据怎么掩膜提取的咨询。 下面是我对这个问题的解决思路: 对于矢量数据: ①首先把数据加载进来 ②软件界面上面的工具栏找到→地理处理→裁剪&#x…...
【Vaadin flow 实战】第3讲-快速上手构建VaadinFlow+Springboot的全栈web项目
快速构建VaadinFlowSpringboot的全栈web项目 温馨提示,本文讲解比较精炼,主要以快速上手开发为主。 官方提供了与本文类似的教程讲解,地址https://vaadin.com/docs/latest/getting-started 1访问vaadin官方提供的start网站(类似于 spring i…...
HBase Cassandra的部署和操作
目录 一.数据库的部署与配置 二.使用命令访问数据库 三.数据库的设计 四.编程实现数据库的访问 一.数据库的部署与配置 1.在单个节点上对进行数据库的单机部署 (1)下载apache-cassandra-4.1.7-…...
用户界面软件01
Jens Coldewey 著,Tom.X 译 本文中的模式语言逐步深入地探讨用户界面架构的设计,它基于人机工程学,足以形成一套完整的体系。如果你对这方面有兴趣,请参考[Tog92],[Coo95]和[Col95]。 本文不讨论用户界面的布局&…...
【云原生】Docker Compose 从入门到实战使用详解
目录 一、前言 二、Docker Compose 介绍 2.1 Docker Compose概述 2.2 Docker Compose特点 2.3 Docker Compose使用场景 三、Docker Compose 安装 3.1 安装docker环境 3.2 Docker Compose安装方式一 3.2.1 下载最新版 3.2.2 设置权限 3.2.3 设置软链接 3.2.4 查看版本…...
【ShuQiHere】使用 SCP 进行安全文件传输
【ShuQiHere】🚀 在日常的开发和运维工作中,文件传输是一个常见的任务。scp(Secure Copy)是一个基于 SSH 协议的文件传输工具,能够在本地和远程主机之间安全地复制文件和目录。本文将详细介绍 scp 的使用方法…...
海康威视H5player问题汇总大全
由于除了要支持Windows平台,还要支持国产系统的平台,这时就用到了H5player,但是这个在使用调试的时候会遇到各种各样的问题,便在此分享一下,供大家分享!!! 问题一:Unexp…...
力扣23.合并K个升序链表
文章目录 一、前言二、最小堆解法三、分治解法 一、前言 23. 合并 K 个升序链表 本题的要求是把K个链表进行合并,合并后的链表必须是从小到大的。 并且这K个链表也是从小到大的升序链表。 二、最小堆解法 既然每个链表都是升序的,也就是从小到大的。 …...
【C 语言指针篇】指针的灵动舞步与内存的神秘疆域:于 C 编程世界中领略指针艺术的奇幻华章
文章目录 【C 语言篇】指针的灵动舞步与内存的神秘疆域:于 C 编程世界中领略指针艺术的奇幻华章前言一 、指针的介绍与使用1. 指针的介绍1.1指针表示1.2指针变量1.3空指针 2. 使用指针2.1交换两个变量的值2.2计算输出最小值和最大值 二、野指针的介绍与使用1. 野指针…...
炉石传说HsMod插件:55项功能深度解析与架构实现
炉石传说HsMod插件:55项功能深度解析与架构实现 【免费下载链接】HsMod Hearthstone Modification Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod HsMod是基于BepInEx框架开发的炉石传说多功能插件,通过55项技术增强…...
别再手动配UA了!Kepserver EX6 OPC UA服务端+客户端保姆级配置流程(含匿名/用户登录)
Kepserver EX6 OPC UA全流程配置指南:从零搭建工业数据桥梁 在工业自动化领域,OPC UA协议已经成为设备间数据交换的事实标准。作为KEPServer EX6的核心功能之一,其OPC UA模块的配置却常常让工程师们头疼——复杂的证书管理、多样的安全策略选…...
2025届毕业生推荐的五大降重复率方案实际效果
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 当人工智能生成内容被广泛运用的时候,把 AIGC 痕迹降低成为了内容创作者最为核心…...
g4f提供的模型调用:python JavaScript和curl
g4f提供模型的使用,例子页面:G4F - Providers and Models 可以这样: python from g4f.client import Clientclient Client() response client.chat.completions.create(model"",messages[{"role": "user"…...
Vue 3 技术演进全景
2026 年的 Vue 3 生态已彻底告别了“Vue 2 升级版”的定位,转而进化为一个高性能、编译时优化、深度 TypeScript 集成的现代化框架体系。核心变化不仅在于 API 的丰富,更在于底层渲染模型的颠覆。 一、Vue 3.5:响应式系统的“外星信号”与开发体验飞跃 Vue 3.5 是当前(202…...
为什么先安慰,比先讲道理更有效(为什么这里会有这么一篇博客)
这里应该有一个场景多人都经历过这样的场景。女生跟男朋友说,今天真的很委屈,很难受。她本来期待的是一句“我懂你”“你今天一定很撑”“这不是你的错”。结果男生下一秒开始分析:那你以后别这样说,你应该先找老师,你…...
STM32F407新手避坑指南:从点灯到PWM,那些官方手册没细说的实战细节
STM32F407新手避坑指南:从点灯到PWM的实战陷阱解析 第一次点亮STM32F407的LED时,那种成就感就像在黑暗中找到了开关。但很快你会发现,官方手册里那些优雅的代码示例,在实际开发中总会遇到各种"意外"。本文不会重复基础教…...
从写代码到问问题:2026年,AI如何重构数据科学工作流(七)
2026年初,腾讯云智能体平台在公积金业务里跑通了一个“边聊边办”的场景。用户随便丢一句“我去年缴存了多少?”,系统三分钟就能甩出一份结构化报告。换成以前,光是拉数据、写清洗逻辑、调格式,至少得耗上十五分钟。这…...
3分钟完成系统优化:Winhance让你的Windows电脑重获新生
3分钟完成系统优化:Winhance让你的Windows电脑重获新生 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi/Winhance-z…...
Linux内核参数对容器网络的影响:conntrack、tcp_tw_reuse等调优实测
Linux内核参数对容器网络的影响:conntrack、tcp_tw_reuse等调优实测 🏷️ 标签:Linux、内核参数、容器网络、Docker、K8s、conntrack、tcp_tw_reuse、高并发、网络调优 📌 阅读指南:本文聚焦容器场景下Linux内核网络参数的影响与优化,深度拆解conntrack连接跟踪、TIM…...
