查看“组件”的源代码
←
组件
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
=== kettle组件-连接 === 1:合并记录 该步骤用于将两个不同来源的数据合并,这两个来源的数据分别为旧数据和新数据,该步骤将旧数据和新数据按照指定的关键字匹配, 比较,合并。 需要设置的参数: 旧数据来源:旧数据来源的步骤。 新数据来源:新数据来源的步骤。 标志字段:设置标志字段的名称,标志字段用于保存比较的结果,比较结果有下列几种: identical:就数据和新数据一样。 changed:数据发生了变化。 new:新数据中有而就数据中没有的记录。 deleted:旧数据中有而新数据中没有的记录。 关键字段:用于定位两个数据源中的同一条记录。 比较字段:对于两个数据源中的同一条记录中,指定需要比较的字段。 合并后的数据将包括旧数据来源和新数据来源中的所有数据,对于变化的数据,使用新数据代替旧数据,同时在结果里用一个标识字段,来指定新旧数据的比较结果。 注: 1:新旧数据需要事先按照关键字排序。 2:就数据和新数据要有相同的字段名称。 例如: 旧数据: field1, field2 1, 1 2, 2 3, 3 4, 4 新数据 field1, field2 1, 1 2, 9 5, 5 设置:标志字段是flag,关键字段是 field1, 比较字段是field2 合并后的数据 field1; field2; flag 1; 1; identical 2; 9; changed 3; 3; deleted 4; 4; deleted 5; 5; new 2:排序合并 对合并后的记录做排序,指定字段以及排序规则。 一般在排序记录后边一定要跟上一个排序合并。 3:记录关联(笛卡尔输出) 这个步骤允许组合输入流中的所有行(笛卡尔输出) 例: 步骤名称:在单一转换中必须唯一 临时目录:如果想输出更多的行,指定系统存储临时文件的目录名称。 临时文件前缀:生成的临时文件的前缀。 最大缓存大小:系统从临时文件读取数据的缓存大小。 读取的主要步骤:指定读取最多数据的步骤名称。 条件:可以指定复杂的条件限制输出行数。 按照旧ETL工具,需要将基础表A、表B、表C、表D,4张表的数据保存到本地数据库,然后,再通过SQL将4张表的数据关联到一 张结果表,过程共产生5张表,严重浪费数据库资源,以及当产生问题,增加维护难度。现使用kettle工具后,将不再需要将基础 表A、表B、表C、表D这4张表的数据保留到本地数据库,大大降低数据库的压力。 4:记录集连接 多表的join,可以直接用sql写入【表输入】组件,也可以借助kettle提供的【记录集连接】组件,使用kettle的记录集连接组件,首先 必须要两个输入数据集是有序的,并且是根据需要join的字段排序,可以借助kettle的【排序记录】组件。 步骤: 1:首先根据【排序记录】组件将两个数据集需要join的字段进行排序。 2:使用记录集连接组件对数据集进行排序。 注: 1:第一个步骤为连接的主表 2:连接类型分为,内链接,左外连接,右外连接,全外连接。 3:两个步骤的连接字段必须和排序记录中的名称一致。 其他: 1:步骤名称:在单一转换中名称必须唯一。 2:第一个步骤:指定要合并的第一个输入步骤。 3:第二个步骤:指定要合并的第二个输入步骤。 4:连接类型:选择合并可用的类型。 5:连接字段:指定要做关联的字段。 === kettle组件-分组 === 分组: 步骤名称:在单一转换中名称唯一。 分组字段:指定分组的字段。 聚合:指定需要聚合的字段,方法以及新字段结果的名称。 包含所有的行:如果选择该项,输出中就包含所有的行,不仅仅是聚合。 临时文件目录:临时文件存储的目录。 临时文件前缀:指定命名临时文件时的文件前缀。 添加行号,每一个分组重启:如果想添加行号,就选择该项。 字段名行号:指定行号将插入的字段名称。 名称:做聚合之后结果数据所对应的字段。 Subject:做聚合操作的字段。 类型:选择聚合函数。 值:定义常量值。 === kettle组件-查询 === 1:数据库查询 数据库连接:所要连接的数据库 模式名称:一般选取用户模式 表名:所要查询的表名 是否使用缓存:指定是否使用数据库缓存查询结果。 缓存大小:指定缓存的大小。 从表中加载所有数据:选中该项,缓存将不被利用。 查询所需的关键字: 表字段:表示所选中的表中的字段。 比较操作符:对选中字段进行判断。 字段1/2:流中的其他(表字段中可选的字段在该选项中不能选择)字段。 查询表返回的值: 查询表返回的字段,类型,可以通过新名称对返回字段该名称。 排序:指定排序方式。 “表输入”和“数据库查询”不同点: 表输入:从数据库表里读取信息。 数据库查询:使用字段值在数据库里查询值。 数据库查询这个组件一般是用在我们已经使用表输入查询到一条或几条记录后再查询其他表数据,在查询到主表的某条记录后 自动返回子表中匹配的记录。 使用数据库查询的查询原理是按照左外连接方式进行查询,查询表为驱动表。 “流查询”和“数据库查询”的区别: 流查询步骤只能进行等值查询,数据库查询步骤可以进行非等值查询。 流查询在查询之前把数据加载到内存里,数据库查询可以选择是否把数据加载到内存。 进行等值查询时,数据库查询步骤如果选中了全部缓存,性能接近但仍不如流查询的性能。 进行等值查询时,数据库查询步骤如果没选中全部缓存,性能较低,每次查询都要向数据库发送一个sql请求。 进行非等值查询时,数据库查询即使选中了全部缓存,性能也较低,没有索引在内存中通过循环查询。 数据库查询的缓存适用于多次查询返回同一个查询结果的情况(集中式),多次查询返回不同的查询结果(分散式),使用缓存反而会降低性能。 数据库缓存层: 常见的缓存形式 : 1.文件缓存 (为了避免I/O开销,尽量使用内存缓存) 2.内存缓存 为什么要使用缓存: 缓存数据是为了让客户端很少甚至不访问数据库服务器进行的数据查询,高并发下,能最大程度降低对数据库服务器的访问压力 一般的数据请求: 用户请求->数据查询->连接数据库服务器并查询数据->将数据缓存起来(缓存方式: HTML , 内存 , [JSON, 序列化数据不做考虑])->显示给客户端 用户再次请求或者新用户访问->数据查询->直接从缓存中获取数据->显示给客户端 缓存需要考虑的方面 1.缓存方式的选择: 对I/O开销比较小的方式, 比如缓存到内存 2.缓存场景的选择: 一些不经常修改的数据适合做缓存 3. 缓存数据的实时性: 4. 缓存数据的稳定性: Mysql的查询缓存 1.启用mysql查询缓存: (1) query_cache_type : 0代表使用查询缓存 1表示始终使用查询缓存 2表示按需使用查询缓存 (2) 如果选择1也就是始终缓存时,如果某一条sql语句不想使用缓存,可以这样 select SQL_NO_CACHE * from student where condition; (3) 如果选择2也就是按需使用查询缓存时,可以这样 select SQL_CACHE *from student where condition; 2. query_cache_size 配置项 默认情况下,query_cache_size为0,也就是表示为查询缓存预留的内存为0,表示无法使用查询缓存 (1) 可以通过 set GLOBAL query_cache_size= 来临时设置 (2) 也可以在配置文件中,直接设置query_cache_size的大小 3. 查询缓存可以看做是SQL文本和查询结果的映射 第二次查询的sql和第一次查询的sql完全相同,则会使用缓存 4. 我们可以通过show status like 'Qcache_hits'; 命令来查看命中次数 5. 在mysql数据缓存中,除了sql语句改变会使缓存无法使用,当表的结构或数据发生改变时,查询缓存中的数据也不再有效 总结:如果写的频率较高,mysql查询缓存意义就不大,如果数据基本不发生改变,mysql查询缓存还是比较有用的 6.清理缓存 FLUSH QUERY CACHE; //清理查询里的缓存内存碎片 RESET QUERY CACHE; //从查询缓存中移出所有查询 FLUSH TABLES; //关闭所有打开的表,同时该操作将会清空查询缓存中的内容 2:数据库连接 该步骤允许使用先前步骤的数据,运行一个数据库查询。 数据库连接:所要连接的数据库。 sql:查询的sql语句,可以指定查询参数,在sql中使用?代替,查询中?需要用该组件下方的使用的参数中的参数代替,而该网格 中的字段以及类型来源于上一个步骤。 返回的行数:0代表所有行,其他数字限制行的输出。 外链接:若选中,则总会返回一个结果,就算查询脚本没有结果。 替换变量:替换查询中的变量。 参数:查询中使用的参数。 kettle组件-流程 1:空操作 该操作什么都不做,主要作用是,想测试的时候充当一个占位符。 例如:两个文本文件输入,同时连接到流查询步骤中,但是流查询仅仅能从一个流中查询信息,所以可以在同时连接流查询之前, 将两个文本文件输入连接到空操作,然后再让空操作去连接流查询。 空操作组件具有合并记录的作用。 2:过滤记录 该步骤通过条件和比较符来过滤记录。 发送ture数据给步骤:指定条件返回true的数据将发送到此步骤 发送false数据给步骤:指定条件返回false的数据将发送到此步骤。 true和false步骤必须指定。 条件: 条件中可以字段和字段间进行比较,也可以字段和某一固定的值进行比较。 条件一开始的NOT选项是干什么? 3:追加流 这个步骤将一个步骤中的数据流追加到另一个步骤中。 前:待追加的数据流。 后:追加到的数据流。 4:阻塞数据直到步骤都完成 kettle中转换和作业的执行顺序---- 1:一个作业内的转换是顺序执行的。 2:一个转换中的步骤是并行执行的。 3:作业内不支持事务,转换内支持事务。 根据业务需要,通常需要在转换内顺序执行,小技巧如下: 1:执行sql是优先于所有步骤的。 2:使用阻塞数据直到步骤都完成,确保其他数据步骤都完成再执行下一步。 事务: 1:设置转换只使用一个事务。转换设置---》杂项---》使用唯一连接 2:设置转换内的表插入等数据库操作不进行批量提交。“提交记录数量”--》0 阻塞数据直到步骤都完成: 当抽取10个表数据的时候,我们希望先抽取小表,然后最后再执行大表。但是kettle转换的步骤是并行执行的, 这样有可能会出现报错,比如经常报“数据连接异常关闭”等报错,并行执行会消耗大量资源,也会导致抽数的 时候抽到一半未成功的情况。这时我们就可以使用kettle的阻塞数据直到步骤都完成 来设计数据表的抽取。 当执行完ods_dept步骤的时候,才去执行ods_BONUS步骤,然后再ods_BONUS步骤完成后才去执行ODS_EMP步骤。 组件介绍: 监视下面的步骤----》步骤名称表示需要等待执行完成的步骤名称。 === kettle组件-应用 === 1:克隆行 用于将每行记录复制出同样的多份。 克隆行的次数:0次表示不复制,n次表示复制n份儿。 克隆行次数保存在字段中:勾选之后,下面的克隆行字段变为可选,应用自己输入的内容作为字段,启动后将报错。 该字段必须通过下拉选方式选定,具体有什么用处,还不清楚。 输出字段中: 添加克隆标志字段到输出流:勾选后下方的克隆标志字段就可以自定义,该字段保存的数据有N(不是克隆字段)和Y(是克隆字段) 添加克隆次数到输出流:勾选后下方克隆次数字段便可以自定义,该字段保存的数据为次数整数类型。 当勾选以上两项后,在之后的步骤中可以接收到这两列内容。
返回至“
组件
”。
导航菜单
个人工具
登录
名字空间
页面
讨论
变体
视图
阅读
查看源代码
查看历史
更多
搜索
导航
-==扬==-
-==帆==-
-==起==-
-==航==-
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息