alibaba / alibaba/DataX

java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to java.lang.String

Open
#96 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
17.4k
Forks
5.7k
PR merge metrics
No merged PRs in 30d

Description

2018-05-25 11:48:23.396 [job-0] ERROR JobContainer - Exception when job run
java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to java.lang.String
at com.alibaba.datax.common.util.ListUtil.valueToLowerCase(ListUtil.java:133) ~[datax-common-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.common.util.ListUtil.makeSureNoValueDuplicate(ListUtil.java:43) ~[datax-common-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.plugin.writer.odpswriter.OdpsWriter$Job.dealColumn(OdpsWriter.java:206) ~[odpswriter-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.plugin.writer.odpswriter.OdpsWriter$Job.split(OdpsWriter.java:181) ~[odpswriter-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.job.JobContainer.doWriterSplit(JobContainer.java:750) ~[datax-core-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.job.JobContainer.split(JobContainer.java:397) ~[datax-core-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.job.JobContainer.start(JobContainer.java:117) ~[datax-core-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.Engine.start(Engine.java:92) [datax-core-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.Engine.entry(Engine.java:171) [datax-core-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.Engine.main(Engine.java:204) [datax-core-0.0.1-SNAPSHOT.jar:na]
2018-05-25 11:48:23.399 [job-0] INFO StandAloneJobContainerCommunicator - Total 0 records, 0 bytes | Speed 0B/s, 0 records/s | Error 0 records, 0 bytes | All Task WaitWriterTime 0.000s | All Task WaitReaderTime 0.000s | Percentage 0.00%
2018-05-25 11:48:23.400 [job-0] ERROR Engine -

经DataX智能分析,该任务最可能的错误原因是:
com.alibaba.datax.common.exception.DataXException: Code:[Framework-02], Description:[DataX引擎运行过程出错,具体原因请参看DataX运行结束时的错误诊断信息 .]. - java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to java.lang.String
at com.alibaba.datax.common.util.ListUtil.valueToLowerCase(ListUtil.java:133)
at com.alibaba.datax.common.util.ListUtil.makeSureNoValueDuplicate(ListUtil.java:43)
at com.alibaba.datax.plugin.writer.odpswriter.OdpsWriter$Job.dealColumn(OdpsWriter.java:206)
at com.alibaba.datax.plugin.writer.odpswriter.OdpsWriter$Job.split(OdpsWriter.java:181)
at com.alibaba.datax.core.job.JobContainer.doWriterSplit(JobContainer.java:750)
at com.alibaba.datax.core.job.JobContainer.split(JobContainer.java:397)
at com.alibaba.datax.core.job.JobContainer.start(JobContainer.java:117)
at com.alibaba.datax.core.Engine.start(Engine.java:92)
at com.alibaba.datax.core.Engine.entry(Engine.java:171)
at com.alibaba.datax.core.Engine.main(Engine.java:204)
- java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to java.lang.String
at com.alibaba.datax.common.util.ListUtil.valueToLowerCase(ListUtil.java:133)
at com.alibaba.datax.common.util.ListUtil.makeSureNoValueDuplicate(ListUtil.java:43)
at com.alibaba.datax.plugin.writer.odpswriter.OdpsWriter$Job.dealColumn(OdpsWriter.java:206)
at com.alibaba.datax.plugin.writer.odpswriter.OdpsWriter$Job.split(OdpsWriter.java:181)
at com.alibaba.datax.core.job.JobContainer.doWriterSplit(JobContainer.java:750)
at com.alibaba.datax.core.job.JobContainer.split(JobContainer.java:397)
at com.alibaba.datax.core.job.JobContainer.start(JobContainer.java:117)
at com.alibaba.datax.core.Engine.start(Engine.java:92)
at com.alibaba.datax.core.Engine.entry(Engine.java:171)
at com.alibaba.datax.core.Engine.main(Engine.java:204)

at com.alibaba.datax.common.exception.DataXException.asDataXException(DataXException.java:40)
at com.alibaba.datax.core.job.JobContainer.start(JobContainer.java:162)
at com.alibaba.datax.core.Engine.start(Engine.java:92)
at com.alibaba.datax.core.Engine.entry(Engine.java:171)
at com.alibaba.datax.core.Engine.main(Engine.java:204)

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with com.alibaba.datax.common.util.ListUtil.valueToLowerCase at line 133 and trace its call from makeSureNoValueDuplicate into OdpsWriter$Job.dealColumn at line 206. Reproduce the ODPS writer job that produces the stack trace, then verify that the job handles the reported JSONObject value without the ClassCastException.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
data-engineering
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.