精华内容
下载资源
问答
  • kettle表输入初始化失败
    万次阅读
    2016-01-17 14:41:50

    开源ETL工具Kettle transformation中的多数步骤都是支持定义错误处理的。为了保证transformation脚本的健壮性,我们会在关键的步骤上进行异常捕获处理。

    本篇文章以TableOutput步骤来探究kettle异常处理的方式。

    1 测试环境

    Kettle 版本 5.0
    数据库 Oracle 11g R2

    2 普通方式处理步骤异常

    TableOutput步骤输出数据到数据库时,因数据库约束检查等原因造成数据无法正常入库。这时TableOutput步骤若是没有定义错误处理的话,transformation转换报出异常并且停止进行运行。

    为了保证程序的正常运行,我们在transformation转换中TableOutput步骤中定义错误处理。

    2.1 简单处理

    如下图2-1所示,是一个简单的异常处理方式,仅仅在TableOutput上启用异常处理。这种方式只是跳过的了异常数据,并没有捕获异常数据并持久化保存到硬盘或数据库。因而无法分析数据异常原因,只是保证了程序的正常运行。

    2.2 改进方式

    如下图2-2所示,是在简单处理方式基础上改进一种的异常处理方式,在TableOutput步骤上启用异常处理并在异常处理中添加异常描述列ERROR_INFO(自己定义的列名),在利用一个TableOutput步骤将业务数据和异常信息数据持久化到数据库表中。这种方式不仅有简单处理方式的异常处理功能,而且有捕获异常数据并持久化保存到硬盘或数据库。我们可以进行异常数据表信息分析数据入库失败原因,来提高数据质量。

    3 封装异常信息方式处理异常

    第2章节中叙述的步骤异常处理的方式不是一个很好的通用处理方式,在处理如下场景时,比较繁琐。

    数据来源通过SQL多表关联计算得来的数据要使用tableOutput步骤保存到数据表时的异常处理:
    1)如果只是通过统一异常表保存输出数据表名和异常信息,这种没有保存数据源数据,无法快速查看业务数据中不合法数据;

    2)如果异常数据都保存到每个表相对应的异常信息表且异常信息表中保存数据源数据是可以的。但这种方式就涉及到每一个转变transformation中的TableOutput步骤的异常处理的表输出步骤都需要字段映射,数据源中字段变化,需要重新映射,处理起来比较繁琐。

    针对上述情况,进行改进通过一个异常信息表保存所有transformation的tableOutput异常处理。这种处理方式是通过利用Java class步骤编写代码实现统一将异常数据流信息(保存数据源所有字段)封装成JSON格式的数据,保存到统一的异常信息表中。具体实现如下图3-1所示:

    4 批量入库造成部分正常数据丢失的处理


    作者 @zokaper
    2016 年 01 月 17日

    更多相关内容
  • 各位老板,请问这种报错怎么处理啊? 一直报无法初始化 百度的别人说是字符集问题 ,但是根据他们的教程更改并没有什么用!
  • 使用KETTLE表输入报错的问题

    千次阅读 2019-07-09 19:28:39
    这是我第一次写博客,最近因为工作的原因,需要用到KETTLE,进行一些数据迁移的工作,初次使用,碰到了一些在我看来难以理解的问题,耽误了一些时间。所以写这个希望可以帮到后面使用的人。工作内容不能泄露,我用...

    前言

    这是我第一次写博客,最近因为工作的原因,需要用到KETTLE,进行一些数据迁移的工作,初次使用,碰到了一些在我看来难以理解的问题,耽误了一些时间。所以写这个希望可以帮到后面使用的人。工作内容不能泄露,我用自己的电脑模拟出来场景。另外,我也是刚开始使用,希望大家能够一起讨论、进步,也希望有前辈们看到能指点我们。

    问题

    首先,正常的工作流程如下
    在这里插入图片描述
    把一个数据库中A表的数据迁移到B表中,正常流程是先把B表中以前的数据清空掉,然后从A表中读数据,再远程迁移到B表中去。工作中还有别的转换,也是这么弄得,但是偏偏就有一个表这么做报错了。报错情形如下:
    在这里插入图片描述

    解决方法一

    执行清空B表数据的SQL脚本放在那里,但是不连接起来。然后不要字段选择,表输入后面直接跟表输出,在表输出里面直接选择字段就好。这里要注意,要把之前报错的表输入插件删掉,不然还是会报错,要重新建立表连接,可以在里面预览到查询的字段。听起来怪怪的,有点玄乎,但是它就是成功了,数据迁移是正常的,不会出现数据重复,每次迁移之前还是删除了以前的数据。。。如下图:
    在这里插入图片描述

    执行成功如下:
    在这里插入图片描述

    解决方法二

    执行清空B表数据的SQL脚本还是和表输入连接起来,然后不要字段选择和表输出,后面跟个 插入/更新 的插件,在这个插件里面设置字段即可。如下图:

    在这里插入图片描述
    这里有个地方需要注意,插入/更新插件里面,用来比较的字段一般就是主键,我这里用的是id,然后下面对应的写入各字段,更新那里写Y即可,如下图所示:
    在这里插入图片描述

    总结

    希望能够帮助到更多的使用者,让大家节省时间。也希望大家能够一起讨论各种技术问题。

    展开全文
  • 这个报错信息如果kettle工具可以打开,但是项目调用kettle报错,或者远程调用报错,错误原因之一: 检查 编码格式是否相同,添加characterEncoding是否为utf-8,保持项目和kettle编码格式相同.

    这个报错信息如果kettle工具可以打开,但是项目调用kettle报错,或者远程调用报错,错误原因之一:
    检查
    在这里插入图片描述
    编码格式是否相同,添加characterEncoding是否为utf-8,保持项目和kettle编码格式相同.

    展开全文
  • 上一篇讲了类的加载过程,到最后一步触发了初始化,那么一个类到底在什么情况下才会触发初始化过程呢?简单总结jvm对类的使用可以分成两种:主动使用与被动使用。每个类或者接口被Java程序首次主动使用时才初始化...

    8b84fa8161d510bdf19db935790aecc3.png

    上一篇讲了类的加载过程,到最后一步触发了初始化,那么一个类到底在什么情况下才会触发初始化过程呢?

    简单总结

    jvm对类的使用可以分成两种:主动使用与被动使用。每个类或者接口被Java程序首次主动使用时才初始化他们。记住首次,也就是类只会被初始化一次。

    主动使用分为以下6种情况:

    1)遇到new、getstatic、putstatic或invokestatic这四条字节码指令时,对应的Java场景为new实例化对象、读取或者设置静态字段(不能被final修饰,后面验证)、调用静态方法。

    2)使用java.lang.reflect包的方法对类型进行反射调用的时候(比如Class.forName("Test.java"))。

    3)初始化子类,如果父类没有被初始化,那么会先初始化父类。

    4)当虚拟机启动时,用户需要指定一个要执行的主类(包含main()方法的那个类),虚拟机会先初始化这个主类。

    5)当使用JDK 7新加入的动态语言支持时,如果一个java.lang.invoke.MethodHandle实例最后的解析结果为REF_getStatic、REF_putStatic、REF_invokeStatic、REF_newInvokeSpecial四种类型的方法句柄,并且这个方法句柄对应的类没有进行过初始化,则需要先触发其初始化。

    6)当一个接口中定义了JDK 8新加入的默认方法(被default关键字修饰的接口方法)时,如果有这个接口的实现类发生了初始化,那该接口要在其之前被初始化。

    除了以上6种情况其他的都是被动使用,都不会使类的初始化,记住是首次主动使用,如果类以及初始化过,遇到以上情况也不会在初始化了!

    静态字段常见坑

    这里常见的场景就不在赘述了,主要验证几个不常见的坑!首先第一个坑,建议大家先看代码,最后再看打印结果,代码如下图:

    d42ddb0353fe1de1e40a6759fce810ba.png

    从上一篇文章我们知道类的初始化最后会执行类的静态代码块,从上图中可以看到并没有答应子类的静态代码块,也就是并没有初始化子类,因为对于静态字段来说,只有直接定义该字段的类才会被初始化

    接下来看下面这个代码,先不要看打印结果,代码如下图:

    a2756fdc229ea27496f44c8ef87423d0.png

    这次只打印了str这个字符串,是因为我把str字符串用final修饰了,这也是其中一个坑,访问被final修饰的静态字段并不会触发类的初始化,通过javap -verbose查看测试类的main方法字节码如下图:

    32e096344a51de07232885b9a7d295ab.png

    可以看到”str str str“这个字符串已经在测试类的常量池中,也就是代码通过编译后final修饰的静态字段那里引用了它,他就会被方法对应的常量池中。

    但是呢又要考虑如下情况,如下图:

    323bca0b9ecdc04bf7830ec9f6089491.png

    以上代码还是触发了父类的初始化,这里就要区分编译期常量与运行期常量,在编译期无法确定的值,只能在运行期才能确定,那么就会触发类的初始化。

    接口验证

    接口由于没有静态代码块验证,我们可以通过创建新的线程来验证,代码如下图:

    a0499e9ec993337abcf7f42a7a147f3d.png

    当一个类在初始化时,要求其父类全部都已经初始化过了,但是一个接口在初始化时,并不要求其父接口全部都完成了初始化,只有在真正使用到父接口的时候(如引用接口中定义的常量)才会初始化。

    但是当一个接口中定义了JDK 8新加入的默认方法(被default关键字修饰的接口方法)时,如果有这个接口的实现类发生了初始化,那该接口要在其之前被初始化,如上图中如果把default修饰的方法注释,接口也就不会被初始化了!

    数组验证

    还有一个常见的不会初始化的情况,代码如下图:

    dd5fe487c60f495a41d4a80fa9a348e9.png

    数组初始化并不会初始化对于的类,可以看到数组对应的类为”[Lcom.dggcc.test.classinit.Parent;“,这个是JVM生成用来表示数组类型的,与原本的类无关!

    总结

    面试中最常见都是对静态字段的调用考察,这里举了几个常见的坑,面试中可能会综合出现,不过记住了坑,同时也不要忘了正常情况,所以对主动使用的6种情况还是要去多多理解!

    Java程序员日常学习笔记,如理解有误欢迎各位交流讨论!

    6c9b9d404b3f0e4bf9ef86066d5c08a1.png
    展开全文
  • 图解 图解分为以下步骤: 准备输入 初始化权重 派生密钥,查询和值 计算输入 1 的注意力得分 计算 softmax 将分数与值相乘 总和加权值以获得输出 1 对输入 2 和输入 3 重复步骤4–7 注意:实际上,数学运算是矢量化...
  • @ 获取系统信息:设置命令参数 @ 表输入:…-- 索引select * from pg_indexes where tablename='person_wechat_label';select * from pg_statio_all_indexes where relname='person_wechat_label';-- 所有SELECT *...
  • Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。首次运行的时,有可能报下面的错误,其中一个可能原因是:本机安装的mysql软件版本与放置在Kettle软件lib文件夹里...
  • 1、在kettle左侧列表 “输入”列下选择 “自定义常量数据” 控件, 在“输出”列下,选择“输出”控件、“文本文件输出”控件。依次连线。如图片一所示,图片一中“表输入”与 “err_message_输出”直接含×号的...
  • 一、问题背景在使用Kettle的过程中,有可能遇到现有步骤无法满足需求的情况。解决此类问题,有诸如购买第三方插件、开发插件、自定义Java类等办法。最后一种办法因其代价小且门槛较低而成为最为常用的定制方法。本文...
  • ERROR (version 9.0.0.0-423, build 9.0.0.0-423 from 2020-01-31 04.53.04 by buildguy) : 错误初始化步骤[Excel输出] 解决方案 :添加kettel中的excel依赖 <dependency> <groupId>kettle.jxl&...
  • KETTLE

    千次阅读 2019-12-25 17:38:18
    2.表输入(Table Input) 利用连接和SQL,从数据库中读取信息,自动生成基本的SQL语句。可以用 ? 接收相应的参数,参数值可以从前置步骤中获取,或者进行独特的设置。 3.获取系统信息(Get System Info) 可以...
  • Unable to access your JSON data It looks like the location you specified is ...用 kettle 的 JSON input组件输入时,点击 select fileds 时,出现以上异常。原因是我的json 文件路径中包含了 “+”,因此识别.
  • : 错误初始化步骤[插入 / 更新] 2021/07/23 09:59:35 - mysql_hive - ERROR (version 8.2.0.0-342, build 8.2.0.0-342 from 2018-11-14 10.30.55 by buildguy) : 步骤 [插入 / 更新.0] 初始化失败! 2021/07/23 09:59...
  • 解决kettle字符转换错误 ▶错误描述 在执行转换抽取数据时,由于姓名、地址等CHAR类型字段中存在特殊字符,造成导演CharConversionException异常。 异常信息如下: ▶原因分析: 通过对比法分析:同样的数据...
  • 最近使用kettle从Mysql数据导入Es中,因为使用分页导入,kettle持续运行导致:KETTLEjava.lang.OutOfMemoryError:Javaheapspace 基本上是让修改kettle安装目录中下的spoon.bat程序,用记事本等程序打开,找到 if ...
  • kettle案例九-----linux使用kettle

    万次阅读 多人点赞 2018-01-19 21:13:06
    我们之前学习的kettle操作都是在windows中进行可视的操作,但是在使用过程中发现一些问题。 比如我们的数据文件是放在linux服务器中的,如果要清洗则需要把它们下载到本地,这样需要耗费一些时间,尤其是数据文件...
  • kettle常见问题及相关解决方案

    千次阅读 2018-08-01 20:01:51
    开源ETL工具kettle系列之常见问题 摘要:本文主要介绍使用kettle设计一些ETL任务时一些常见问题,这些问题大部分都不在官方FAQ上,你可以在kettle的论坛上找到一些问题的答案 1. Join 我得到A 数据流(不管是基于...
  • 完美生成年度节假日Kettle还能这么玩!

    万次阅读 多人点赞 2020-05-02 11:27:41
    怎么解决动态生成日期的问题,继续听我说不就完了… 因为该题需要生成一年的动态时间,所以难免需要用到JavaScript代码,在代码中我们可以初始化一个时间,然后再加入一个外部传入的参数,对时间进行累加,这样就...
  • 大数据在ETL处理过程中,使用的工具有kettle, dataStage,infomatica等等。kettle是属于开源免费的etl 工具。基于java开发,内置了很多强大的工具,在数据清洗加工处理方面,有优越的性能和处理效率。当然如果内置的...
  • 使用kettle6.1版本做数据清洗时,新建数据库资源库时执行sql语句出错,连接资源库失败
  • kettle总结

    2020-07-13 20:41:04
    2、csv输入表输入合并时,会报字符串类型不匹配问题; 3、csv输入读取.txt文件时,不能识别换行符,如:出现单封闭符“,会将后面所有行合并成一行作为一个字段值; 4、csv输入读取.txt文件时,不能有效识别分隔符...
  • 初始化数据库 superset db upgrade 载入测试数据 superset load_examples 初始化角色和权限 superset init 启动服务 端口号 8088,使用 -p 更改端口号 superset runserver 然后在浏览器中打开 http://ip:8088 ...
  • 今天遇见了kettle执行"更新/插入"操作过程非常顺利,没有任何异常,但是目标库中取不到数据问题 ...解决方式:使用"输出"组件替换掉"插入/更新"组件,在表输入组件中,修改时间节点where条件为DATEDIFF(day,brushtime,...
  • 问题背景 今天使用kettle做数据归档时,发现kettle无法插入空字符串,它默认会把空字符串变为null。这就导致问题出现。 查询资料 通过查资料发现了网上的一个解决办法,首先感谢 ... 这两个初始化方法为入口,经过仔细
  • kettle

    2019-04-11 16:19:23
    开源ETL工具kettle系列之常见问题 摘要:本文主要介绍使用kettle设计一些ETL任务时一些常见问题,这些问题大部分都不在官方FAQ上,你可以在kettle的论坛上找到一些问题的答案 1.Join 我得到A 数据流(不管是基于...
  • KETTLE常见问题(转)

    千次阅读 2020-12-20 00:16:50
    KETTLE常见问题摘要:本文主要介绍使用kettle设计一些ETL任务时一些常见问题,这些问题大部分都不在官方FAQ上,你可以在kettle的论坛上找到一些问题的答案1. Join我得到A 数据流(不管是基于文件或数据库),A包含...
  • (二)结构迁移 (三)数据迁移 1.源端OGG配置 (1)Oracle数据库配置 (2)Oracle数据库OGG用户创建 (3)源端OGG 管理进程(MGR)配置 (4)源端OGG 级补全日志(trandata)配置 (5)源端OGG 抽取进程(extract)...
  • Kettle搭建与实战

    2021-04-13 13:32:27
    kettle 是纯 Java 开发,开源的ETL工具,用于数据库间的数据迁移。可以在 Linux、windows、unix 中运行。有图形界面,也有命令脚本还可以二次开发。 官网地址:https://www.kettle.net.cn/,集成包下载:...
  • kettle实现数据增量同步方案

    千次阅读 2019-12-12 14:37:29
    1. 背景 我司目前数据库之间的数据同步都是oracle goldengate(ogg)方案,该方案的特点...同步变更字段、新增,需要修改数据库服务器上的很多配置文件,比较繁琐,在exact、pump、replicate进程很多的情况下,易...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 271
精华内容 108
热门标签
关键字:

kettle表输入初始化失败