09 - 数据清洗案例

流程图

kettle 面板图片

操作步骤

1、订阅数据源(kafka consumer)

2、抽取字段并转换key(JSON input)

3、判断img字段是否有值,有的话进行url转base64(JavaScript 代码)

// 获取输入字段的值
var imgUrl = pic1Url;

var imgBase64 = '';
var connection = null; // 声明连接对象

//获取当前时间
var createTime = new Date();

// 检查 imgUrl 字段是否为空
if (imgUrl === null || imgUrl === undefined || imgUrl.trim() === "") {
    // 如果 imgUrl 字段为空,则添加常量字段
    imgBase64 = "";
} else {
    // 如果 imgUrl 字段不为空,则将 URL 转换为 Base64
    try {
        var url = new java.net.URL(imgUrl);
        connection = url.openConnection(); // 打开连接
        var inputStream = connection.getInputStream();
        var outputStream = new java.io.ByteArrayOutputStream();
        var buffer = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 1024); // 缓冲区大小
        var bytesRead;
        while ((bytesRead = inputStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, bytesRead); // 将数据写入输出流
        }
        imgBase64 = org.apache.commons.codec.binary.Base64.encodeBase64String(outputStream.toByteArray());
        inputStream.close(); // 关闭输入流
    } catch (e) {
        // 处理异常
        if (connection !== null) {
            connection.disconnect(); // 关闭连接
        }
        throw e; // 重新抛出异常
    } finally {
        if (connection !== null) {
            connection.disconnect(); // 关闭连接
        }
    }
}

//生成id
var uuid = java.util.UUID.randomUUID().toString();

var uniqueId = Date.now() + '-' + Math.random().toString(36).substring(2, 15);

uniqueId;
// 将 imgBase64 设置到输出字段
imgBase64;
createTime;

4、添加部门code (add constants)

5、记录数据库(表输出)

6、将sysOrgCode跟base64加进去json,重新构造(JSON output、JSON input)

JSON output

JSON input

7、发送到目标kafka (Kafka producer)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/605419.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中金:如何把握不断轮动的资产“风口”

从比特币到日股,到黄金与铜再到当前的港股,每次超预期大涨后都透支回调。 今年以来资产的“风口”不断轮动,从比特币到日股,到黄金与铜,再到当前的港股,资产仿佛“接力”般交替领先,同时“风口”…

JavaScript 垃圾回收机制深度解析:内存管理的艺术

🔥 个人主页:空白诗 文章目录 🎭 引言一、JavaScript内存模型与生命周期的深度解析📌 基本数据类型与栈内存的精妙运作📌 复杂数据类型与堆内存的广袤世界📌 生命周期管理的智慧与实践策略📌 We…

uniapp开发小程序使用vue的v-html解析富文本图片过大过宽显示超过屏幕解决办法

如果没有设置的话,就会导致图片溢出,过宽显示或者错位显示,显示效果非常的丑陋: 修改后显示的效果: 网上比较low的解决办法:网上各种解决方法核心思想就是在数据层把数据模板上的img数据加上style样式&…

嵌入式Linux学习第四天启动方式学习

嵌入式Linux学习第四天 今天学习I.MX6U 启动方式详解。I.MX6U有多种启动方式,可以从 SD/EMMC、NAND Flash、QSPI Flash等启动。 启动方式选择 BOOT 的处理过程是发生在 I.MX6U 芯片上电以后,芯片会根据 BOOT_MODE[1:0]的设置来选择 BOOT 方式。BOOT_M…

windows11获取笔记本电脑电池健康报告

笔记本电脑的电池关系到我们外出时使用的安全,如果电池健康有问题需要及时更换,windows系统提供了检查电池健康度的方法。 1、打开命令行 1)键入 winR 2)键入 cmd 打开命令行。 2、在命令行运行如下指令,生成电池健…

Maven+Junit5 + Allure +Jenkins 搭建 UI 自动化测试实战

文章目录 效果展示Junit 5Junit 5 介绍Junit 5 与 Junit 4 对比PageFactory 模式编写自动化代码公共方法提取测试用例参数化Jenkins 搭建及配置参数化执行生成 Allure 报告Maven 常用命令介绍POM 文件效果展示 本 chat 介绍 UI 自动化测试框架的搭建: 运用 page factory 模式…

TCP三次握手四次挥手 UDP

TCP是面向链接的协议,而UDP是无连接的协议 TCP的三次握手 三次传输过程是纯粹的不涉及数据,三次握手的几个数据包中不包含数据内容。它的应用层,数据部分是空的,只是TCP实现会话建立,点到点的连接 TCP的四次挥手 第四…

介绍 ffmpeg.dll 文件以及ffmpeg.dll丢失怎么办的五种修复方法

ffmpeg.dll 是一个动态链接库文件,属于 FFmpeg运行库。它在计算机上扮演着非常重要的角色,因为它提供了许多应用程序和操作系统所需的功能和组件。当 ffmpeg.dll 文件丢失或损坏时,可能会导致程序无法正常运行,甚至系统崩溃。下面…

基于opencv的车辆统计

车辆统计) 一、项目背景二、整体流程三、常用滤波器的特点四、背景减除五、形态学开运算闭运算 六、项目完整代码七、参考资料 一、项目背景 检测并识别视频中来往车辆的数量 最终效果图: 二、整体流程 加载视频图像预处理(去噪、背景减除…

航空电子FC节点卡, FC交换机,主要采用LC或MPO光纤接口形式

FC节点卡主要采用LC或MPO光纤接口形式,可以作为4/2个独立端口使用,也可以作为2对/1对冗余端口使用,支持1.0625Gbps、2.125Gbps、4.25Gbps、8.5Gbps通信速率。节点卡完全遵循FC-LS,FC-FS,FC-AE-ASM、FC-AE-1553B等FC光纤…

springboot+vue+mybatis家教管理系统的设计与实现+PPT+论文+讲解+售后

家教管理系统是为了方便用户能够在网站上查看教师信息进行家教预约等,于是开发了基于springboot框架设计与实现了一款简洁、轻便的家教管理系统。本系统解决了家教管理事务中的主要问题,包括以下多个功能模块:公告信息、留言信息、预约家教老…

Isaac Sim 4 键盘控制小车前进方向(学习笔记5.8.2)

写的乱糟糟,主要是这两周忘了记录了...吭哧吭哧往下搞,突然想起来要留档,先大致写一个,后面再往里添加和修改吧,再不写就全忘了 有一个一直没解决的问题: 在保存文件时出现问题:isaac sim mism…

【OceanBase诊断调优】—— 磁盘性能问题导致卡合并和磁盘写入拒绝排查

适用版本 OceanBase 数据库 V3.x、V4.x 版本。 问题现象 OceanBase 集群合并一直未完成,同时 tsar 和 iostat 显示从凌晨 2:30 开始磁盘使用率一直是 100%。怀疑合并导致 IO 上升,IO 可能存在问题,observer.log 的确有大量报错 disk is hu…

概述篇——计算机网络学习笔记(基于谢希仁教材与PPT)

教材用的是谢希仁的教材,图片来源于谢希仁老师配套的PPT 计算机网络课程PPT(通过这个链接,你可以找到课程配套的ppt) 计算机网络的定义及其特点 定义 网络 过去大众熟知的三种网络分别是提供电话、电报及传真等服务的电信网络&am…

Linux主机排查工具-GScan

0x01 简介 本程序旨在为安全应急响应人员对Linux主机排查时提供便利,实现主机侧Checklist的自动全面化检测,根据检测结果自动数据聚合,进行黑客攻击路径溯源。 0x02 项目地址 https://github.com/grayddq/GScan 0x03 CheckList检测项 自…

每日一题——力扣面试题 17.04. 消失的数字

题目链接&#xff1a;https://leetcode.cn/problems/missing-number-lcci/description/ 菜鸡做法&#xff1a; #include <stdlib.h> // 包含标准库头文件&#xff0c;用于内存分配等功能// 函数定义&#xff1a;寻找缺失的数字 int missingNumber(int* nums, int numsSi…

从离线到实时:无锡锡商银行基于 Apache Doris 的数据仓库演进实践

作者&#xff1a;武基鹏&#xff0c;无锡锡商银行 大数据技术经理 编辑整理&#xff1a;SelectDB 技术团队 导读&#xff1a;为实现数据资产的价值转化以及全面数字化、智能化的风险管理&#xff0c;无锡锡商银行大数据平台经历从 Hive 离线数据仓库到 Apache Doris 实时数据仓…

Hive SQL-DQL-Select查询语句用法详解

HQL Select用法详解 1.基础语法 &#xff08;1&#xff09;select_exp &#xff08;2&#xff09;ALL、DISTINCT &#xff08;3&#xff09;WHERE &#xff08;4&#xff09;分区查询、分区裁剪 &#xff08;5&#xff09;GROUP BY &#xff08;6&#xff09;HAVING &#xff0…

hadoop学习---基于Hive的教育平台数据仓库分析案例(三)

衔接第一部分&#xff0c;第一部分请点击&#xff1a;基于Hive的教育平台数据仓库分析案例&#xff08;一) 衔接第二部分&#xff0c;第二部分请点击&#xff1a;基于Hive的教育平台数据仓库分析案例&#xff08;二) 学生出勤模块&#xff08;全量分析&#xff09;&#xff1a…

Densenet+SE

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊# 前言 前言 这周开始学习关于经典模型的改进如加注意力机制&#xff0c;这周学习Densenet加通道注意力即SE注意力机制。 ##SE注意力机制简介 SE&#xff08;…
最新文章