当前位置: 首页 > news >正文

保定网站建设团队服务质量好的外贸营销系统

保定网站建设团队,服务质量好的外贸营销系统,揭阳专业的网站建设价格,网站关键词查询网址背景 前面曾体验过通过零代码、可视化、拖拉拽的方式快速完成了从 MySQL 到 ClickHouse 的数据迁移#xff0c;但是在实际生产环境#xff0c;我们在迁移到目标库之前还需要做一些过滤和转换工作#xff1b;比如#xff0c;在诗词数据迁移后#xff0c;发现原来 MySQL 中…背景 前面曾体验过通过零代码、可视化、拖拉拽的方式快速完成了从 MySQL 到 ClickHouse 的数据迁移但是在实际生产环境我们在迁移到目标库之前还需要做一些过滤和转换工作比如在诗词数据迁移后发现原来 MySQL 中的诗词数据都是繁体字这就导致在直接迁移到 ClickHouse 做统计分析时生成的图表展示也是繁体中文的对于不熟悉繁体中文的用户来说影响体验。 今天就借助 ETLCloud 提供的自定义规则能力同时调用第三方 jar 包 opencc4j 完成繁体中文到简体中文的转换具体来说将诗词数据库从 MySQL 迁移到 ClickHouse 并在入库之前完成数据清洗转换工作完成数据表中标题、作者与内容等字段的繁体中文到简体中文的转换。 数据集说明 MySQL 数据库中的库表 poetry 结构如下数据量 311828 。 CREATE TABLE poetry (id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,title VARCHAR(150) NOT NULL COLLATE utf8mb4_unicode_ci,yunlv_rule TEXT NOT NULL COLLATE utf8mb4_unicode_ci,author_id INT(10) UNSIGNED NOT NULL,content TEXT NOT NULL COLLATE utf8mb4_unicode_ci,dynasty VARCHAR(10) NOT NULL COMMENT 诗所属朝代S-宋代, T-唐代 COLLATE utf8mb4_unicode_ci,author VARCHAR(150) NOT NULL COLLATE utf8mb4_unicode_ci,PRIMARY KEY (id) USING BTREE ) COLLATEutf8mb4_unicode_ci ENGINEInnoDB AUTO_INCREMENT311829;ClickHouse 中的建表语句 CREATE TABLE poetry.poetry (id Int32, title String, yunlv_rule String, author_id Int32, content String, dynasty String, author String) ENGINE MergeTree() PRIMARY KEY id ORDER BY id SETTINGS index_granularity 8192工具选型 ClickHouse数据库Docker部署ETLCloudV2.2ETLCloud的库表输入组件、数据清洗转换组件、钉钉消息组件 Note这里选择的是社区版采用 Docker 部署的方式轻量、快速启动 docker pull ccr.ccs.tencentyun.com/restcloud/restcloud-etl:V2.2 。 创建应用与流程 先创建应用因为后面的规则是跟着应用走的填写基本的应用配置信息。 接着创建数据流程填写信息即可。 自定义规则 在真正开始数据迁移前先准备好清洗转换规则到迁移入库时直接配置选择定义好的规则即可。 进入应用配置——新增规则分类——新增自定义规则 编写从繁体中文到简体中文的规则代码其中类名是自动生成的先是引入了转换的工具类 ZhConverterUtil 然后调用其静态方法即可编写完毕后点击“编译并保存”正常的话会提示编译成功~。 package cn.restcloud.etl.rule.ext;import org.apache.commons.lang3.StringUtils; import org.bson.Document; import java.sql.Connection; import cn.restcloud.framework.core.context.*; import cn.restcloud.etl.base.IETLBaseEvent; import cn.restcloud.etl.base.IETLBaseProcessEngine; import cn.restcloud.framework.core.util.*; import cn.restcloud.framework.core.util.db.rdb.*; import cn.restcloud.etl.rule.service.ETLProcessRuleUtil; import java.util.*; import com.github.houbb.opencc4j.util.ZhConverterUtil;/** indoc是一个map的包装对像内部结构为key-value 被流程的Java规则节点调用时,返回0表示终止流程,返回1表示成功,其中indoc为流数据,fieldId为空值 当被字段绑定运行时fieldId为绑定的字段Id,流入数据的每一行作为indoc对像传入本方法执行一次 params为绑定规则时填写的传入的参数格式为JSON字符串 繁体中文转为简体中文 2023-07-07 10:58:21 admin */ public class ETL_64a77f4d955fc70345c4041a implements IETLBaseEvent {Overridepublic String execute(IETLBaseProcessEngine engine, Document modelNodeDoc, Document indoc,String fieldId,String params) throws Exception {//ListDocument dataDocsengine.getData(indoc); //上一节点传入的数据流(仅作为Java规则节点运行可用)Document paramsDocETLProcessRuleUtil.paramsToDocument(params);//规则参数转为一个map包装对像key-valueString paramsValueDocumentUtil.getString(paramsDoc,参数id); //读取规则选中时输入的自定义参数值String fieldValueindoc.getString(fieldId); //获取规规绑定的字段Id获取字段值PrintUtil.o(fieldId取到的值为fieldValue); //PrintUtil.o();可以打印变量到控制以日志中//TODO 对fieldValue进行自定义处理String result ZhConverterUtil.toSimple(fieldValue);PrintUtil.o(转换后的值为result); indoc.put(fieldId,result); //把新的值覆盖旧字段的值return 1;} }Note这里需要注意的是我们用到了第三方的 Jar 包 opencc4j 来完成这一工作那么 ETLCloud 如何知道要怎样调用自定义的工具类的方法呢这就需要我们将第三方的 jar 放到 ETLCloud 的部署目录下 /usr/tomcat/webapps/ROOT/WEB-INF/lib 。 [rootetl ~]# docker cp /opt/opencc4j-1.8.1.jar de63b29c71d0:/usr/tomcat/webapps/ROOT/WEB-INF/libSuccessfully copied 513kB to de63b29c71d0:/usr/tomcat/webapps/ROOT/WEB-INF/lib然后点击版本更新平台提示以下内容 平台配置(Successfully registered (0) java bean, update (2) java bean information!, API升级结果: 从Jar文件中更新或注册(0)个服务、(0)个输入参数、(0)个输出编码! ), ETL配置(Successfully registered (0) java bean, update (0) java bean information!, API升级结果: 从Jar文件中更新或注册(2)个服务、(0)个输入参数、(0)个输出编码! ) 迁移实践 接下来通过可视化的配置与操作完成从 MySQL 到 ClickHouse 的诗词数据快速转换与迁移操作。 数据源配置 配置SourceMySQL 选择 MySQL 填写IP: 端口以及用户密码信息。 测试连接成功~ 配置SinkClickHouse 数据源选择之前文章迁移的 ClickHouse 诗词数据库。 可视化配置流程 创建好流程后可以通过点击“流程设计”按钮进入流程可视化的配置页面。 库表输入MySQL 在左侧的输入组件中选择“库表输入”拖至中央的流程绘制区双击进入配置阶段。 第一步选择我们配置好的 MySQL 数据源可以载入 MySQL 中已有的表。 第二步可以根据选择的表生成 SQL 语句。 第三步可从表中读取到各个字段的定义支持添加、删除字段。 第四步根据 SQL 语句自动进行了数据预览这样的一个检查操作保证了后续操作的正常执行。 数据清洗转换opencc4j实现繁体中文转简体中文 在对字段配置规则前先熟悉下 opencc4j 在后端开发中的用法。 引入依赖 !-- Opencc4j 支持中文繁简体转换 --dependencygroupIdcom.github.houbb/groupIdartifactIdopencc4j/artifactIdversion1.8.1/version/dependency编码转换 import com.github.houbb.opencc4j.util.ZhConverterUtil; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; SpringBootTest class SpringbootOpencc4jApplicationTests {// 繁体中文转简体中文Testvoid toSimple(){String original 李白乘舟將欲行忽聞岸上踏歌聲。|桃花潭水深千尺不及汪倫送我情。;String result ZhConverterUtil.toSimple(original);System.out.println(result);Assertions.assertEquals(李白乘舟将欲行忽闻岸上踏歌声。|桃花潭水深千尺不及汪伦送我情。, result);}// 簡體中文轉繁體中文Testvoid toTraditional(){String original 李白乘舟将欲行忽闻岸上踏歌声。|桃花潭水深千尺不及汪伦送我情。;String result ZhConverterUtil.toTraditional(original);Assertions.assertEquals(李白乘舟將欲行忽聞岸上踏歌聲。|桃花潭水深千尺不及汪倫送我情。, result);} }在左侧的数据转换组件中选择“数据清洗转换”拖至中央的流程绘制区双击进入配置阶段。 因为源数据表中的 title 、 content 以及 author 这三个字段值是繁体中文所以针对这三个字段设置自定义的规则繁体中文转为简体中文下一步点击保存对所有数据记录进行转换即可。 库表输出ClickHouse 在左侧的输出组件中选择“库表输出”拖至中央的流程绘制区双击进入配置阶段。 第一步选择我们配置好的ClickHouse数据源。 第二步可从表中读取到各个字段的定义支持添加、删除字段、绑定规则。 最后通过 流程线 将开始、库表输入、数据清洗转换、库表输出、结束组件分别连接起来数据通过自定义的规则转换与迁移的可视化配置便告完成Done~ 运行流程 保存流程运行流程之后可查看对应的流程日志与转换日志并可视化监控迁移进度。 问题记录 数据转换过程报错 问题描述 在 ETLCloud 的日志中发现错误 Caused by: java.lang.ClassNotFoundException: com.github.houbb.heaven.support.instance.impl.Instances 问题分析在 SpringBoot 结合 IDEA 与 Maven 中开发时我们仅仅引入了一个依赖 opencc4j 但是实际上观察外部依赖库时发现还有另外两个依赖 heaven 与 nlp-common 。 解决方法将 opencc4j-1.8.1.jar 、 heaven-0.2.0.jar 与 nlp-common-0.0.5.jar 这个三个 jar 包都上传到 ETLCloud 的 /usr/tomcat/webapps/ROOT/WEB-INF/lib 目录下重新更新 ETLCloud 配置、重启 ETLCloud 服务。 [rootetl ~]# docker cp /opt/heaven-0.2.0.jar de63b29c71d0:/usr/tomcat/webapps/ROOT/WEB-INF/libSuccessfully copied 304kB to de63b29c71d0:/usr/tomcat/webapps/ROOT/WEB-INF/lib [rootetl ~]# docker cp /opt/nlp-common-0.0.5.jar de63b29c71d0:/usr/tomcat/webapps/ROOT/WEB-INF/libSuccessfully copied 1.97MB to de63b29c71d0:/usr/tomcat/webapps/ROOT/WEB-INF/libNote Jar 包可以从阿里云镜像仓库查找下载 https://developer.aliyun.com/mvn/search 或者到本地开发环境的的 .m2\repository\com\github\houbb 目录下查找。 总结 以上介绍了如何通过 ETLCloud 强大的自定义规则功能完成对数据的清洗转换功能实现了表字段值从繁体中文到简体中文的转换以下两点要注意 自定义规则是附属于某个流程的第三方的Jar包依赖在数量上要完整。 Reference ETLCloud官方文档ClickHouse官方文档opencc4j官方文档 If you have any questions or any bugs are found, please feel free to contact me. Your comments and suggestions are welcome!
http://www.zqtcl.cn/news/189202/

相关文章:

  • 三门峡市住房的城乡建设局网站百度指数分析官网
  • 新网站外链怎么做陕西省煤炭建设第一中学官方网站
  • 学校网站建设方面汇报php网站开发和部署
  • 源码建站和模板建站区别商城网站功能
  • 临沂建站公司互联网开网站怎么做
  • 有哪个网站做ic购物网站建设需求
  • 怎么登录甘肃省建设厅网站工信部域名信息备案管理系统查询
  • 怎么才能免费建网站网站套利怎么做
  • .win域名做网站怎么样邯郸的互联网公司
  • 企业网站建设推广实训报告网站目录
  • 找做课件的网站网站建设柒首先金手指9
  • 秦皇岛网站建设公司wordpress百度编辑器
  • 潍坊网站建设联系方式农业网站开发
  • 河北网站制作网站设计依赖于什么设计
  • 深圳网站优化培训wordpress内页关键词
  • 上栗网站建设企业网站建设报价方案
  • 广州网站开发公司公司级别网站开发
  • 做网站备案哪些条件怎样选择网站的关键词
  • 有没有专门做名片的网站忘记网站后台账号
  • 重庆建设工程招标网站印尼建设银行网站
  • 什么是网站流量优化四川住房建设厅网站
  • 现在还有企业做网站吗做百度推广送的网站
  • 公司年前做网站好处互联网推广运营是做什么的
  • 公司网站建设杭州钓鱼网站制作的报告
  • 宁海有做网站的吗网络规划设计师需要掌握哪些
  • 百度云注册域名可以做网站明码有了主机如何做网站
  • 门户网站推广方案连云港市电信网站建设
  • 网站程序如何制作app商城开发价格
  • 用易语言做攻击网站软件国药控股北京有限公司
  • 宁津 做网站湛江招聘网最新招聘