避坑排错指南

作者: 时光漫步de大数据之路 | 来源:发表于2020-11-07 15:00 被阅读0次

    1.安装问题

    0.资源库 按钮消失

    在连接文件资源库时,资源库所在位置一定要设定为英文,否则下次启动时将找不到该资源库,Connect按钮也会找不到

    解决方法:重新将安装包解压安装

    1.安装环境中存在多个java版本,运行时因找不到正确的java版本而报错:

    解决:修改set-pentaho-env.bat 文件,对152行以下内容修改:

    if exist "%_PENTAHO_JAVA_HOME%\bin\%__LAUNCHER%" (

    echo DEBUG: Getting java.home from java settings

    REM #set "_PENTAHO_JAVA=%_PENTAHO_JAVA_HOME%\bin\%__LAUNCHER%"

    set "_PENTAHO_JAVA=C:\Program Files\Java\jdk1.8.0_221\bin\%__LAUNCHER%"

    set "_PENTAHO_JAVA_HOME=C:\Program Files\Java\jdk1.8.0_221"

    ) else (

    set _PENTAHO_JAVA_HOME=

    set _PENTAHO_JAVA=%__LAUNCHER%

    )

    2.使用问题

    1.kettle查询mysql中的tinyint类型,自动转为了bool类型

    在连接参数处可以设置:

    如果没用 ,在“选项”中增加参数:tinyInt1isBit=false

    2.kettle在执行sql查询时将空串识别为NULL:

    解决办法:

    找到kettle.properties文件,增加:

    KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL=Y

    3.在通过kitchen 执行kettle任务时,指定日志级别

    Kitchen 参数说明:

    -rep:Repository name 任务包所在存储名

    -user:Repository username 执行人

    -pass:Repository password 执行人密码

    -job:The name of the job to launch 任务包名称

    -dir:The directory (don''t forget the leading / or )

    -file:The filename (Job XML) to launch

    -level:The logging level (Basic, Detailed, Debug, Rowlevel, Error, Nothing) 指定日志级别

    -log:The logging file to write to 指定日志文件

    -listdir:List the directories in the repository 列出指定存储中的目录结构。

    -listjobs:List the jobs in the specified directory 列出指定目录下的所有任务

    -listrep:List the defined repositories 列出所有的存储

    -norep:Don''t log into the repository 不写日志

    4. command not found:java

    需要提前export javaPath

    例如在上传文件至S3时:

    echo "Starting uploading file  ${target_tablename}_${date_id} to s3"

    #将java命令你个添加到PATH环境变量

    export PATH=/usr/local/jdk1.8.0_112/bin:$PATH

    java -jar /home/hadoop/iot3.0_etl/data-integration/lib/tcl_aws_util-0.0.1-SNAPSHOT-jar-with-dependencies.jar cn-north-1 com.tcl.bp.cn.ods /iot_mysql_data/${target_tablename} ${target_tablename}_${date_id} /home/hadoop/iot3.0_etl/data/iot_mysql_data/${target_tablename}/${target_tablename}_${date_id} AKIAT2AVR3O7VLI4I2PH 1XoqOLZfTAQyvb0JjdKbg4T7PJplswe9qGZmJnWu

    echo "Finished upload to AmazonS3 path:  /com.tcl.bp.cn.ods/iot_mysql_data/${target_tablename}/${target_tablename}_${date_id}";

    5. 创建数据库连接时,设置默认schema

    set search_path to 'dws';

    6.迁移至linux报路径错误

    Root path does not exist: /home/crmsapp/soft/kettle/data-integration/D:\Software\data-integration\system\karaf\data1

    这是由于缓存文件造成的错误,只需要找到..\pdi-ce-6.0.1.0-386\data-integration\system\karaf目录下缓存文件删除即可:如报错所示,删除 data1文件夹及其文件:rm -rf data1

    7.Couldn't find starting point in this job.

    org.pentaho.di.core.exception.KettleJobException:

    Couldn't find starting point in this job.

    at org.pentaho.di.job.Job.execute(Job.java:552)

    at org.pentaho.di.job.entries.job.JobEntryJobRunner.run(JobEntryJobRunner.java:69)

    at java.lang.Thread.run(Thread.java:748)

    需要添加Start和成功组件

    8.NoSuchMethodError-因版本升级引起的bug

    以8.0 升级至9.1为例,

    java.lang.NoSuchMethodError: org.joda.time.DateTime.withTimeAtStartOfDay()Lorg/joda/time/DateTime;

    at com.taijue.rjhome.frame.util.FrameHelper.readNights(FrameHelper.java:36)

    at com.taijue.user.external.ExternalInterfaceService.getNights(ExternalInterfaceService.java:738)

    at com.taijue.user.external.ExternalInterfaceController.findKwhOfSeriesFromTime(ExternalInterfaceController.java:113)

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

    Truncated. see log file for complete stacktrace

    查看相关的报错的包,发现jar包已引入,方法也存在,但是依然报错NoSuchMethodError

    原因:weblogic内部存在包joda-time包,造成包冲突

    解决办法:

    1.升级旧包

    2.编译时排除该包

    ps:一般报错NoSuchMethodError,有两个原因

      1.jar包里面方法不存在

      2.jar包里面方法存在,包冲突

    相关文章

      网友评论

        本文标题:避坑排错指南

        本文链接:https://www.haomeiwen.com/subject/jsyjhqtx.html