kettle使用、kettle新建转换、kettle新建作业

本文详细介绍了如何使用Kettle进行ETL操作,包括配置MySQL数据源,创建连接,抽取和连接demo-kettle-student和demo-kettle-class表,最终整合到demo-kettle-total表中,并创建了一个每3秒自动执行的作业。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:

学习,学习,还是TM的学习(微笑脸)!

 

转换:一系列的步骤组合体,可以完成某个任务。

作业:一个作业里包括多个作业项,作业可以执行转换,作业可以定时调度

 

1.转换

使用kettle前,可以先去了解kettle的相关概念:https://www.kettle.net.cn/category/base

 

转换。是ETL解决方法中最主要的部分,它处理抽取,转换,加载各阶段各种对数据行的操作。转换包括一个或者多个步骤(step),如读取文件,过滤输出行,数据清洗或者将数据加载到数据库。

本文会创建一个转换,把两个数据源的两张表数据抽取出来,然后根据id进行连接组合成一张新的表,存入到新的数据库中。

1.1 配置数据源

双击Spoon.bat,进入kettle,点击主对象树,右击转换,点击新建

转换新建好后,先创建出两个数据源的数据库的连接,这里使用的数据库是mysql8,kettle配置mysql8数据源,请看:kettle配置mysql8

两个源数据库的表的sql语句:

demo-kettle-student数据库的tb_student表:

CREATE TABLE `tb_student`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `std_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `cls_id` int NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

demo-kettle-class数据库的tb_class表:


CREATE TABLE `tb_student`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `std_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

目标数据库sql语句:

 demo-kettle-total数据库的tb_student_total表:

CREATE TABLE `tb_student_total`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `std_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `cls_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

 

1.2 编辑转换

数据库连接配置好后,点击左侧的核心对象,打开输入,拖动一个表输入到右侧编辑区

 

双击这个表输入,即可对它进行设置,这里我们目的是把demo-kettle-student的tb_student表数据抽取出来,因此咱们需要配置的项:

步骤名称

数据库连接

SQL

配置如图所示:

配置好一个表输入,在配置另一个表输入demo-kettle-class表输入。

这里表输入定义好了后,我们需要对两个表输入的记录进行聚合,在连接需要对数据流进行排序,选择 核心对象-》连接-》排序记录,把两个表输入的记录,按照id升序排列。

排序后,选择 核心对象-》连接-》记录集连接,按照student表的cls_id对应class表的id字段进行连接。

然后选择 核心对象-》输出-》表输出,把连接好的记录输出到demo-kettle-total数据库tb_student_total表。这里设置一下输出表数据库连接,目标表,指定数据库字段,配置字段映射关系。

全部配置妥当后,点击执行按钮,如下。

在数据库插入几条测试数据库,执行转换后查看demo-kettle-total中的数据符合预期。

该转换完成预期目标。

 

2 作业

点击 文件-》新建-》作业,即可新建一个作业

本文会新建一个作业,每个三秒钟执行一次转换。

打开 核心对象-》通用,选择开始、转换和成功。连接它们,然后双击转换,选择在上一步新建的转换,如下:

然后双击开始,设置定时属性,每个三秒执行一次,如下:

点击运行,然后查看数据库,数据符合预期。

<think>好的,我现在需要帮助用户解决在Kali系统中安装Docker Compose时遇到的错误,特别是APT仓库未签名的问题。用户提到错误信息是“仓库未签名 buster InRelease”。首先,我应该回忆一下之前提供的安装步骤,以及用户现在遇到的问题可能出在哪里。 根据用户之前的对话,我之前给出了安装Docker Compose的方法是通过下载二进制文件,但用户现在可能尝试通过APT仓库安装,或者是在安装Docker时遇到了仓库签名的问题。用户引用了几个不同的源,包括官方Docker仓库和清华镜像,可能用户尝试了不同的仓库导致签名错误。 首先,我需要确定用户的具体操作步骤。用户可能在添加Docker仓库到Kali后,运行sudo apt update时遇到了签名错误,因为Kali基于Debian,但Docker的官方仓库可能没有正确的签名密钥被系统信任。常见的错误可能是“NO_PUBKEY”或者“签名无效”。 解决方案应该是导入Docker的官方GPG密钥,以验证仓库的签名。根据引用中的信息,用户可能已经按照步骤添加了仓库,但缺少了密钥的导入步骤。例如,在引用[2]中提到添加软件源的GPG密钥,可能用户漏掉了这一步。 接下来,我需要检查正确的步骤是否包括下载并添加GPG密钥。通常,添加APT仓库后需要导入对应的公钥,否则会提示未签名的问题。因此,我应该建议用户运行如下的命令来导入密钥: curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg 这应该能解决仓库未签名的问题。如果用户之前使用了不同的镜像源,比如清华大学的镜像,可能需要调整仓库URL和对应的密钥,但通常Docker的官方密钥适用于所有镜像。 另外,用户可能使用了旧版本的Kali(如基于Debian buster),而Docker的仓库可能已经更新,需要确认仓库配置是否正确。例如,确保/etc/apt/sources.list.d/docker.list中的发行版名称(如buster)与系统兼容。 如果用户仍然遇到问题,可能需要清除旧的仓库信息,重新添加并更新缓存。或者检查是否有拼写错误在仓库配置文件中。 此外,用户提到安装Docker Compose,我之前建议的是下载二进制文件的方式,但用户可能尝试通过APT安装docker-compose-plugin,这可能会遇到依赖问题或者版本不兼容。需要指出在Kali中推荐使用二进制安装方式,因为APT源中的版本可能较旧或有依赖问题。 最后,应该提醒用户在解决问题后,重新运行sudo apt update和安装docker-compose的步骤,或者继续使用二进制安装方法。同时,处理可能残留的旧配置或缓存,比如清除/var/lib/apt/lists/中的部分文件。</think>### Kali系统解决Docker Compose安装错误及APT仓库签名问题 #### 一、修复APT仓库未签名问题 当出现`仓库未签名 buster InRelease`错误时,说明系统未信任Docker仓库的GPG密钥。执行以下操作: 1. **清理旧仓库配置**(若存在冲突): ```bash sudo rm -f /etc/apt/sources.list.d/docker.list* ``` 2. **添加正确仓库源**(任选一种): - **阿里云镜像加速版**: ```bash echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/debian buster stable" | sudo tee /etc/apt/sources.list.d/docker.list ``` - **官方仓库版**: ```bash echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/debian buster stable" | sudo tee /etc/apt/sources.list.d/docker.list ``` 3. **手动导入GPG密钥**(核心步骤): ```bash sudo mkdir -p /usr/share/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg ``` 4. **强制更新仓库缓存**: ```bash sudo apt update --allow-insecure-repositories ``` #### 二、安装Docker Compose ##### 方案一:推荐二进制安装(绕过APT依赖问题) 1. **下载最新版二进制文件**: ```bash sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.7/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose ``` 2. **赋权并验证**: ```bash sudo chmod +x /usr/local/bin/docker-compose docker-compose --version # 应输出版本号 ``` ##### 方案二:APT安装(需先修复签名) ```bash sudo apt install docker-compose-plugin docker compose version # 注意新版命令格式 ``` #### 三、典型错误处理 1. **密钥错误补充方案**: ```bash # 若仍提示NO_PUBKEY,手动添加密钥 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7EA0A9C3F273FCD8 ``` 2. **残留缓存清理**: ```bash sudo rm -rf /var/lib/apt/lists/partial/* sudo apt clean && sudo apt update ``` #### 四、验证完整工作流 ```bash # 创建测试docker-compose.yml echo 'version: "3" services: hello-world: image: hello-world' > docker-compose.yml # 运行测试 docker-compose up ``` --- ### 关键点解析 1. **签名问题本质**:Kali基于Debian,但未预装Docker的GPG密钥,需通过`--signed-by`参数显式指定密钥路径[^2][^3] 2. **架构兼容性**:必须确认`[arch=amd64]`与当前系统架构匹配(Kali默认使用amd64) 3. **版本对应关系**:`buster`对应Debian 10,需确保仓库声明与系统版本一致[^1][^4] --- ### 相关问题 1. 如何查看Kali Linux的Debian基础版本? 2. Docker Compose二进制安装与APT安装有何区别? 3. 如何彻底卸载Docker及残留配置? 4. 为什么国内推荐使用镜像加速仓库?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值