Kettle的安装及简单使用

Kettle的安装及简单使用

文章目录

  • Kettle的安装及简单使用
    • 一、kettle概述
    • 二、kettle安装部署和使用
      • Windows下安装
        • ( 1 )概述
      • 案例 1 :MySQL to MySQL
        • 主界面:
        • **在kettle中新建转换--->输入--->表输入-->表输入双击**
        • 建立连接后,选择刚刚建好的连接,填入SQL,并预览数据:
        • 注意:按照shift键拖出来的线条练级stu1表输入和stu2表输出(必须是深灰色才关联成功,若是浅灰色表示关联失败,点击线条可以变化关联状态)
        • 转换之前,需要做保存到kettle目录下的job目录
      • 案例 2 :使用作业执行上述转换,并且额外在表stu2中添加一条数据
        • 1 、新建一个作业
        • 2 、按图示拉取组件
        • 4 、双击转换,选择案例 1 保存的文件
        • 6 、双击SQL脚本编辑
        • 8 、保存并执行
      • 案例 3 :将hive表的数据输出到hdfs
        • 4 、插入数据
        • 5 、按下图建立流程图
        • 表输入
        • 表输入 2
        • 排序记录
        • 记录集连接
        • 字段选择
        • 文本文件输出
        • 查看HDFS文件
      • 案例 4 :读取hdfs文件并将sal大于 1000 的数据保存到hbase中
        • 2 、按下图建立流程图
        • 文本文件输入
        • 设置过滤记录
        • 执行转换
    • 三、创建资源库
      • 1 、数据库资源库
        • 数据库资源库是将作业和转换相关的信息存储在数据库中,执行的时候直接去数据库读取信息,方便跨平台使用
        • 建立新连接
        • 连接资源库
        • 将之前做过的转换导入资源库
        • 点击保存,选择存储位置及文件名
      • 2 、文件资源库
        • 将作业和转换相关的信息存储在指定的目录中,其实和XML的方式一样
        • 创建方式跟创建数据库资源库步骤类似,只是不需要用户密码就可以访问,跨平台使用比较麻烦
    • 四、 Linux下安装使用
      • 1 、单机
        • 参数说明:
        • 如果报错为:
        • 请执行如下操作:
        • 运行资源库里的作业:
      • 2 、 集群模式
        • 准备三台服务器
      • 案例:读取hive中的emp表,根据id进行排序,并将结果输出到hdfs上
        • 创建转换,编辑步骤,填好相关配置
    • 五、调优
        • 参数参考:

一、kettle概述

1 、什么是kettle
Kettle是一款开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数
据抽取高效稳定。
2 、Kettle工程存储方式
( 1 )以XML形式存储
( 2 )以资源库方式存储(数据库资源库和文件资源库)
3 、Kettle的两种设计

在这里插入图片描述

4 、Kettle的组成

在这里插入图片描述

5 、kettle特点

在这里插入图片描述

二、kettle安装部署和使用

Windows下安装

( 1 )概述

在实际企业开发中,都是在本地环境下进行kettle的job和Transformation开发的,可以在本地运行,也
可以连接远程机器运行
( 2 )安装步骤

1 、安装jdk
2 、下载kettle压缩包,因kettle为绿色软件,解压缩到任意本地路径即可
3 、双击Spoon.bat,启动图形化界面工具,就可以直接使用了

案例 1 :MySQL to MySQL

把stu1的数据按id同步到stu2,stu2有相同id则更新数据

1 、在mysql中创建testkettle数据库,并创建两张表

在master主机的mysql创建stu1,在node1建立stu2

create database testkettle;
use testkettle;
create table stu1(id int,name varchar(20),age int);
create table stu2(id int,name varchar(20));

2 、往两张表中插入一些数据

-- stu1表内容
insert into stu1 values(1001,'zhangsan',20),(1002,'lisi',18),
(1003,'wangwu',23);
-- stu2表内容
insert into stu2 values(1001,'wukong');

3 、把pdi-ce-8.2.0.0-342.zip文件拷贝到win环境中指定文件目录,解压后双击Spoon.bat,启动图形
化界面工具,就可以使用了

在这里插入图片描述

主界面:

在这里插入图片描述

在kettle中新建转换—>输入—>表输入–>表输入双击

在data-integration\lib文件下添加mysql驱动,重新打开软件

在这里插入图片描述

新建转换创建一个表输入,添加得到,并双击他,在数据库连接栏目点击 新建 ,填入mysql相关配置,并测试连接

在这里插入图片描述
在这里插入图片描述

建立连接后,选择刚刚建好的连接,填入SQL,并预览数据:

在这里插入图片描述

新建stu2表输出,配置mysql连接

在这里插入图片描述

在这里插入图片描述

现在我们需要把输入stu1的数据同步到stu2输出的数据

注意:按照shift键拖出来的线条练级stu1表输入和stu2表输出(必须是深灰色才关联成功,若是浅灰色表示关联失败,点击线条可以变化关联状态)

在这里插入图片描述

在这里插入图片描述

运行

在这里插入图片描述

转换之前,需要做保存到kettle目录下的job目录

执行成功之后,可以在mysql查看,stu2的数据

在这里插入图片描述

案例 2 :使用作业执行上述转换,并且额外在表stu2中添加一条数据

1 、新建一个作业

在这里插入图片描述

2 、按图示拉取组件

在这里插入图片描述

3 、双击Start编辑Start

在这里插入图片描述

4 、双击转换,选择案例 1 保存的文件

在这里插入图片描述

5 、在mysql的stu1中插入一条数据,并将stu2中id=1001的name改为wukong

mysql> insert into stu1 values(1004,'stu1',22);
Query OK, 1 row affected (0.01 sec)
mysql> update stu2 set name = 'wukong' where id = 1001;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
6 、双击SQL脚本编辑

在这里插入图片描述

7 、加上Dummy,如图所示:

在这里插入图片描述

8 、保存并执行

在这里插入图片描述

9 、在mysql数据库查看stu2表的数据

mysql> select * from stu2;
+------+----------+
| id | name |
+------+----------+
| 1001 | zhangsan |
| 1002 | lisi |
| 1003 | wangwu |
+------+----------+
3 rows in set (0.00 sec)

案例 3 :将hive表的数据输出到hdfs

1 、因为涉及到hive读写,需要修改相关配置文件(由于hadoop版本为3.1.1所以取hdp30)
修改解压目录下的data-integration\plugins\pentaho-big-data-plugin下的plugin.properties,设
置active.hadoop.configuration=hdp30,并将如下配置文件拷贝到data-
integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp30下
在这里插入图片描述

这些文件为之前装的hadoop的配置文件里面找到复制过来

2 、启动hadoop集群、hiveserver2服务
3 、进入hive shell,创建kettle数据库,并创建dept、emp表

create database kettle;
use kettle;
CREATE TABLE dept(
deptno int,
dname string,
loc string
) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
CREATE TABLE emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm int,
deptno int
) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
4 、插入数据
insert into dept values(10,'accounting','NEW YORK'),(20,'RESEARCH','DALLAS'),
(30,'SALES','CHICAGO'),(40,'OPERATIONS','BOSTON');
insert into emp values(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20),
(7499,'ALLEN','SALESMAN',7698,'1980-12-17',1600,300,30),
(7521,'WARD','SALESMAN',7698,'1980-12-17',1250,500,30),
(7566,'JONES','MANAGER',7839,'1980-12-17',2975,NULL,20);
5 、按下图建立流程图

在这里插入图片描述

表输入

在这里插入图片描述

表输入 2

在这里插入图片描述

排序记录

在这里插入图片描述

记录集连接

在这里插入图片描述

字段选择

在这里插入图片描述

在这里插入图片描述

文本文件输出

在这里插入图片描述

在这里插入图片描述

如果出现outOfMemory错误那么需要点击字段 然后选择最小宽度
在这里插入图片描述

6 、保存并运行查看hdfs
运行

在这里插入图片描述

查看HDFS文件

在这里插入图片描述

案例 4 :读取hdfs文件并将sal大于 1000 的数据保存到hbase中

1 、在HBase中创建一张people表

hbase(main):004:0> create 'people','info'
2 、按下图建立流程图

在这里插入图片描述

文本文件输入

在这里插入图片描述

在这里插入图片描述

设置过滤记录

在这里插入图片描述

设置HBase output

编辑hadoop连接,并配置zookeeper地址

在这里插入图片描述

在这里插入图片描述

执行转换

在这里插入图片描述

查看hbase people表的数据
scan 'people'注意:若报错没有权限往hdfs写文件,在Spoon.bat中第 119 行添加参数
"-DHADOOP_USER_NAME=root" "-Dfile.encoding=UTF-8"

三、创建资源库

1 、数据库资源库

数据库资源库是将作业和转换相关的信息存储在数据库中,执行的时候直接去数据库读取信息,方便跨平台使用
  • 在MySQL中创建kettle数据库
mysql> create database kettle;
Query OK, 1 row affected (0.01 sec)
  • 点击右上角connect,选择Other Resporitory

  • 在这里插入图片描述

  • 选择Database Repository

  • 在这里插入图片描述

建立新连接

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

填好之后,点击finish,会在指定的库中创建很多表,至此数据库资源库创建完成

在这里插入图片描述

连接资源库
默认账号密码为admin

在这里插入图片描述

将之前做过的转换导入资源库
选择从xml文件导入

在这里插入图片描述

点击保存,选择存储位置及文件名

在这里插入图片描述

查看MySQL中kettle库中的R_TRANSFORMATION表,观察转换是否保存

在这里插入图片描述

2 、文件资源库

将作业和转换相关的信息存储在指定的目录中,其实和XML的方式一样
创建方式跟创建数据库资源库步骤类似,只是不需要用户密码就可以访问,跨平台使用比较麻烦
选择connect
点击add后点击Other Repositories
选择File Repository
填写信息

在这里插入图片描述

四、 Linux下安装使用

1 、单机

jdk安装
安装包上传到服务器,并解压
注意:
1. 把mysql驱动拷贝到lib目录下
2. 将windows本地用户家目录下的隐藏目录C:\Users\自己用户名\.kettle 目录,
整个上传到linux的用户的家目录下,root用户的家目录为/root/
  • 运行数据库资源库中的转换:

    cd /usr/local/soft/data-integration
    ./pan.sh -rep=my_repo -user=admin -pass=admin -trans=trans1
    
参数说明:
-rep 资源库名称
-user 资源库用户名
-pass 资源库密码
-trans 要启动的转换名称
-dir 目录(不要忘了前缀 /)(如果是以ktr文件运行时,需要指定ktr文件的路径)

在这里插入图片描述

如果报错为:
2022 /04/23 16 :00:26 - HIVE中EMP表输入.0 - ERROR (version 8 .2.0.0-342, build
8 .2.0.0-342 from 2018 -11-14 10 .30.55 by buildguy) : An error occurred,
processing will be stopped:
2022 /04/23 16 :00:26 - HIVE中EMP表输入.0 - Error occurred while trying to connect
to the database
2022 /04/23 16 :00:26 - HIVE中EMP表输入.0 -
2022 /04/23 16 :00:26 - HIVE中EMP表输入.0 - Error connecting to database: (using
class org.apache.hive.jdbc.HiveDriver)
2022 /04/23 16 :00:26 - HIVE中EMP表输入.0 - No suitable driver found for
jdbc:hive2://master:10000/kettle
2022 /04/23 16 :00:26 - HIVE中DEPT表输入.0 - ERROR (version 8 .2.0.0-342, build
8 .2.0.0-342 from 2018 -11-14 10 .30.55 by buildguy) : An error occurred,
processing will be stopped:
2022 /04/23 16 :00:26 - HIVE中DEPT表输入.0 - Error occurred while trying to connect
to the database
2022 /04/23 16 :00:26 - HIVE中DEPT表输入.0 -
2022 /04/23 16 :00:26 - HIVE中DEPT表输入.0 - Error connecting to database: (using
class org.apache.hive.jdbc.HiveDriver)
2022 /04/23 16 :00:26 - HIVE中DEPT表输入.0 - No suitable driver found for
jdbc:hive2://master:10000/kettle
2022 /04/23 16 :00:26 - HIVE中DEPT表输入.0 - ERROR (version 8 .2.0.0-342, build
8 .2.0.0-342 from 2018 -11-14 10 .30.55 by buildguy) : 错误初始化步骤[HIVE中DEPT表输入]
2022 /04/23 16 :00:26 - HIVE中EMP表输入.0 - ERROR (version 8 .2.0.0-342, build
8 .2.0.0-342 from 2018 -11-14 10 .30.55 by buildguy) : 错误初始化步骤[HIVE中EMP表输入]
2022 /04/23 16 :00:26 - hive2HDFS - ERROR (version 8 .2.0.0-342, build 8 .2.0.0-342
from 2018 -11-14 10 .30.55 by buildguy) : 步骤 [HIVE中EMP表输入.0] 初始化失败!
2022 /04/23 16 :00:26 - hive2HDFS - ERROR (version 8 .2.0.0-342, build 8 .2.0.0-342
from 2018 -11-14 10 .30.55 by buildguy) : 步骤 [HIVE中DEPT表输入.0] 初始化失败!
2022 /04/23 16 :00:26 - HIVE中EMP表输入.0 - Finished reading query, closing
connection.
2022 /04/23 16 :00:26 - HIVE中DEPT表输入.0 - Finished reading query, closing
connection.
请执行如下操作:
rm -rf ./system/karaf/caches
运行资源库里的作业:

记得把作业里的转换变成资源库中的资源

记得把作业也变成资源库中的资源

cd /usr/local/soft/data-integration
mkdir logs
./kitchen.sh -rep=my_repo -user=admin -pass=admin -job=job1 -
logfile=./logs/log.txt

参数说明:

-rep - 资源库名
-user - 资源库用户名
-pass – 资源库密码
-job – job名
-dir – job路径(当直接运行kjb文件的时候需要指定)
-logfile – 日志目录

在这里插入图片描述

2 、 集群模式

准备三台服务器
master作为Kettle主服务器,服务器端口号为 8080 ,
node1和node2作为两个子服务器,端口号分别为 8081 和 8082 。安装部署jdkhadoop完全分布式环境搭建上传并解压kettle的安装包至/usr/local/soft/目录下进到/usr/local/soft/data-integration/pwd目录,修改配置文件

修改主服务器配置文件carte-config-master-8080.xml

<slaveserver><name>master</name><hostname>master</hostname><port>8080</port><master>Y</master><username>cluster</username><password>cluster</password>
</slaveserver>

修改从服务器配置文件carte-config-8081.xml

<masters><slaveserver><name>master</name><hostname>master</hostname><port>8080</port><username>cluster</username><password>cluster</password><master>Y</master></slaveserver>
</masters>
<report_to_masters>Y</report_to_masters>
<slaveserver><name>slave1</name><hostname>node1</hostname><port>8081</port><username>cluster</username><password>cluster</password><master>N</master>
</slaveserver>

修改从配置文件carte-config-8082.xml

<masters><slaveserver><name>master</name><hostname>master</hostname><port>8080</port><username>cluster</username><password>cluster</password><master>Y</master></slaveserver>
</masters>
<report_to_masters>Y</report_to_masters>
<slaveserver><name>slave2</name><hostname>node2</hostname><port>8082</port><username>cluster</username><password>cluster</password><master>N</master>
</slaveserver>
  • 分发整个kettle的安装目录,通过scp命令

  • 分发/root/.kettle目录到node1、node2

  • 启动相关进程,在master,node1,node2上分别执行

[root@master]# ./carte.sh master 8080
[root@node1]# ./carte.sh node1 8081
[root@node2]# ./carte.sh node2 8082

访问web页面
http://master:8080

案例:读取hive中的emp表,根据id进行排序,并将结果输出到hdfs上

注意:因为涉及到hive和hbase的读写,需要修改相关配置文件。

修改解压目录下的data-integration\plugins\pentaho-big-data-plugin下的plugin.properties,设
置active.hadoop.configuration=hdp26,并将如下配置文件拷贝到data-
integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp26下

在这里插入图片描述

创建转换,编辑步骤,填好相关配置
直接使用trans1

创建子服务器,填写相关配置,跟集群上的配置相同

在这里插入图片描述

在这里插入图片描述

创建集群schema,选中上一步的几个服务器

在这里插入图片描述

对于要在集群上执行的步骤,右键选择集群,选中上一步创建的集群schema

在这里插入图片描述

创建Run Configuration,选择集群模式

在这里插入图片描述

直接运行,选择集群模式运行

在这里插入图片描述

五、调优

1 、调整JVM大小进行性能优化,修改Kettle根目录下的Spoon脚本。

在这里插入图片描述

参数参考:

-Xmx2048m:设置JVM最大可用内存为2048M。
-Xms1024m:设置JVM促使内存为1024m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后
JVM重新分配内存。
-Xmn2g:设置年轻代大小为2G。整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一
般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推
荐配置为整个堆的3/8。

-Xss128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为
256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但
是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。
2 、 调整提交(Commit)记录数大小进行优化,Kettle默认Commit数量为: 1000 ,可以根据数据量大
小来设置Commitsize:1000~50000
3 、尽量使用数据库连接池;
4 、尽量提高批处理的commit size;
5 、尽量使用缓存,缓存尽量大一些(主要是文本文件和数据流);
6 、Kettle是Java做的,尽量用大一点的内存参数启动Kettle;
7 、可以使用sql来做的一些操作尽量用sql;
Group , merge , stream lookup,split field这些操作都是比较慢的,想办法避免他们.,能用sql就用
sql;
8 、插入大量数据的时候尽量把索引删掉;
9 、尽量避免使用update , delete操作,尤其是update,如果可以把update变成先delete, 后insert;
10 、能使用truncate table的时候,就不要使用deleteall row这种类似sql合理的分区,如果删除操作是
基于某一个分区的,就不要使用delete row这种方式(不管是deletesql还是delete步骤),直接把分区
drop掉,再重新创建;
11 、尽量缩小输入的数据集的大小(增量更新也是为了这个目的);
应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但
是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。
2 、 调整提交(Commit)记录数大小进行优化,Kettle默认Commit数量为: 1000 ,可以根据数据量大
小来设置Commitsize:1000~50000
3 、尽量使用数据库连接池;
4 、尽量提高批处理的commit size;
5 、尽量使用缓存,缓存尽量大一些(主要是文本文件和数据流);
6 、Kettle是Java做的,尽量用大一点的内存参数启动Kettle;
7 、可以使用sql来做的一些操作尽量用sql;
Group , merge , stream lookup,split field这些操作都是比较慢的,想办法避免他们.,能用sql就用
sql;
8 、插入大量数据的时候尽量把索引删掉;
9 、尽量避免使用update , delete操作,尤其是update,如果可以把update变成先delete, 后insert;
10 、能使用truncate table的时候,就不要使用deleteall row这种类似sql合理的分区,如果删除操作是
基于某一个分区的,就不要使用delete row这种方式(不管是deletesql还是delete步骤),直接把分区
drop掉,再重新创建;
11 、尽量缩小输入的数据集的大小(增量更新也是为了这个目的);
12 、尽量使用数据库原生的方式装载文本文件(Oracle的sqlloader, mysql的bulk loader步骤)。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js进行数据移除性能比较(splice,map)

当使用 splice() 方法处理大量数据时&#xff0c;确实会遇到性能问题&#xff0c;因为它涉及到移动数组中的元素&#xff0c;导致操作的时间复杂度为 O(n)。对于大量数据&#xff0c;频繁的插入和删除可能会导致性能下降。 1、设置数组数据为10000&#xff0c;使用splice移除数…

软件项目经理需要具备这 11 个能力

当前软件开发技术更新换代越来越快&#xff0c;各种项目实施管理思想也日新月异&#xff0c;作为一个软件项目经理&#xff0c;需要具备这 11 种能力&#xff1a; 1. 项目管理能力 了解项目管理的基本原则和方法&#xff0c;包括制定项目计划、资源分配、风险管理、问题解决和…

Python练习03

题目 解题思路 Demo58 通过字符串切片来进行反转操作 def _reverse():"""这是一个反转整数的函数"""num input("请输入想要反转的整数")print(num[::-1]) 运行结果 Demo61 首先制作一个判断边长的函数&#xff0c;通过三角形两边…

4.23学习总结

一.NIO(一) (一).简介: NIO 是 Java SE 1.4 引入的一组新的 I/O 相关的 API&#xff0c;它提供了非阻塞式 I/O、选择器、通道、缓冲区等新的概念和机制。相比与传统的 I/O 多出的 N 不是单纯的 New&#xff0c;更多的是代表了 Non-blocking 非阻塞&#xff0c;NIO具有更高的并…

【Linux高性能服务器编程】两种高性能并发模式剖析——半同步/半异步模式

hello &#xff01;大家好呀&#xff01; 欢迎大家来到我的Linux高性能服务器编程系列之两种高性能并发模式介绍&#xff0c;在这篇文章中&#xff0c;你将会学习到高效的创建自己的高性能服务器&#xff0c;并且我会给出源码进行剖析&#xff0c;以及手绘UML图来帮助大家来理解…

《HCIP-openEuler实验指导手册》1.4 Apache MPM工作模式调整

MPM介绍 二、配置步骤 查看MPM当前工作模式 方法一&#xff1a; httpd -M | grep mpm方法二&#xff1a; 浏览器访问&#xff1a;http://IP:端口/server-status 方法三&#xff1a; cat /etc/httpd/conf.modules.d/00-mpm.conf查看 LoadModule mpm_event_module modules/mo…

Iterator 迭代器

意图 提供一个方法顺序访问一个聚合对象中的各个元素&#xff0c;且不需要暴漏该对象的内部表示。 结构 Iterator&#xff08;迭代器&#xff09;定义访问和遍历元素的接口。ConcreteIterator&#xff08;具体迭代器&#xff09;实现迭代器接口&#xff1b;对该聚合遍历是跟踪…

DSSM 模型技术介绍

转自&#xff1a;git 本文属于新闻推荐实战-召回阶段-DSSM召回模型。区别于策略召回&#xff0c;基于向量召回也是目前工业界常用的一种召回方法。这里我们将介绍一个比较经典的召回模型DSSM&#xff0c;希望读者可以快速掌握模型原理以及细节&#xff0c;同时可以了解具体的实…

Nacos原理简单介绍

注册中心原理 官网&#xff1a;Nacos 注册中心的设计原理 | Nacos nacos注册中心采用了 &#xff1a;pull &#xff08;客户端的轮询&#xff09;和push &#xff08;服务端主动push&#xff09;策略 客户端启动时会将当前服务的信息包含ip、端口号、服务名、集群名等信息封装…

电脑问题快速判断

电脑开机没有任何反应 检查电源 检查电源是否有问题或损坏&#xff0c;可以短接方法检测 板电源卡口对自己接第四或第五根线&#xff0c;若风扇匀速转动&#xff0c;电源无问题&#xff0c;若不转动或转一下停一下&#xff0c;电源有问题 检查内部连线 确保主板上的线插的…

2024新算法角蜥优化算法(HLOA)和经典灰狼优化器(GWO)进行无人机三维路径规划设计实验

简介&#xff1a; 2024新算法角蜥优化算法&#xff08;HLOA&#xff09;和经典灰狼优化器&#xff08;GWO&#xff09;进行无人机三维路径规划设计实验。 无人机三维路径规划的重要意义在于确保飞行安全、优化飞行路线以节省时间和能源消耗&#xff0c;并使无人机能够适应复杂…

手把手教你搭建鲜花团购小程序

随着互联网的快速发展&#xff0c;线上小程序商城已经成为了一种流行的电商模式。对于花店来说&#xff0c;开发线上小程序商城不仅可以扩大销售渠道&#xff0c;提高销售效率&#xff0c;还可以增加客户粘性&#xff0c;提升品牌形象。下面就以花店为例&#xff0c;教你怎么开…

OceanBase V4.2特性解析:用 Show Trace 快速定位数据库性能瓶颈

在数据库日常运维中&#xff0c;当遇到慢SQL问题时&#xff0c;若无法迅速查明原因&#xff0c;将极大地影响用户的使用感受&#xff0c;甚至可能引发业务或服务的中断。相较于单机数据库&#xff0c;分布式数据库系统因其涉及多个节点和多组件的协同工作&#xff0c;集群规模可…

DSP开发实战教程--EPWM模块的影子寄存器详细讲解原理和代码实例

EPWM模块影子寄存器的原理 在TI(Texas Instruments)的DSP28335中,EPWM(Enhanced Pulse Width Modulator)模块提供了高精度、高灵活性的PWM信号生成功能。为了能在不影响当前PWM波形输出的情况下预装载新的PWM参数(如周期、占空比等),EPWM模块引入了影子寄存器的概念。 …

STM32 ADC转换器

一、ADC简介 ADC&#xff08;Analog-Digital Converter&#xff0c;模拟-数字转换器&#xff09;&#xff0c;可以将引脚上连续变化的模拟量转换为内存中存储的数字量&#xff0c;建立模拟电路到数字电路的桥梁 模拟量&#xff1a;时间和幅值均连续的信号&#xff0c;例如&…

sklearn 笔记 metrics

1 分类 1.1 accuracy_score 分类准确率得分 在多标签分类中&#xff0c;此函数计算子集准确率&#xff1a;y_pred的标签集必须与 y_true 中的相应标签集完全匹配。 1.1.1 参数 y_true真实&#xff08;正确&#xff09;标签y_pred由分类器返回的预测标签normalize 默认为 Tr…

LLama的激活函数SwiGLU 解释

目录 Swish激活函数 1. Swish函数公式 LLaMA模型中的激活函数 1. SwiGLU激活函数 2. SwiGLU激活函数的表达式 3. SwiGLU激活函数的优势 Swish激活函数 Swish是一种激活函数&#xff0c;其计算公式如下&#xff1a; 1. Swish函数公式 Swish(x) x * sigmoid(x) 其中&am…

概率图模型在机器学习中的应用:贝叶斯网络与马尔可夫随机场

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

【重要】Heygen订阅指南和用法详解!让照片学说话?一张照片变演讲?Heygen订阅值得吗?

常见问题 Q&#xff1a;Heygen是什么&#xff1f;Heygen是什么玩意&#xff1f; A&#xff1a;Heygen是一款由AI视频工具,创作者只需要上传视频并选择要翻译的语言&#xff0c;该工具可实现自动翻译、调整音色、匹配嘴型。为了方便理解&#xff0c;笔者利用Heygen制作了一个AI视…

裤裤带你一起学C语言内存函数啦!

目录 1.memcpy的使用和模拟实现 2.memmove使用和模拟实现 3.memset函数的使用 4.memcmp函数的使用 内存函数在<string.h>库中&#xff0c;我们使用内存函数必须先引入<string.h>头文件 1.memcpy的使用和模拟实现 memcpy的函数原型如下&#xff1a; void * m…