row.getList java.lang.ClassCastException:java.math.BigDecimal 不能转换为 scala.collection.Seq
Posted
技术标签:
【中文标题】row.getList java.lang.ClassCastException:java.math.BigDecimal 不能转换为 scala.collection.Seq【英文标题】:row.getList java.lang.ClassCastException: java.math.BigDecimal cannot be cast to scala.collection.Seq 【发布时间】:2017-10-11 12:55:57 【问题描述】:我正在尝试从具有以下架构元素的行中检索列表。
[info] |-- ARRAY_FIELD: array (nullable = false)
[info] | |-- element: string (containsNull = false)
使用打印时
row.getAs[WrappedArray[String]]("ARRAY_FIELD")
我得到以下结果
WrappedArray(Some String value)
但是当我尝试将该索引处的数据打印为列表时 使用....
row.getList(0)
我得到以下异常
java.lang.ClassCastException: java.math.BigDecimal cannot be cast to scala.collection.Seq
有没有人知道为什么会发生这种情况以及如何解决?
【问题讨论】:
能否添加打印模式 第一个代码块有printSchema的结果 您的架构不包含BigDecimal
类型的任何列请再次检查
Akash 我相信您的问题实际上对我的问题有所帮助。我不想发布整个架构,因为我认为没有必要,但由于您的问题,我现在看到我从架构中的错误索引中提取。当我从正确的索引中提取时,一切都很好。
【参考方案1】:
我实际上是从架构中的错误索引中提取的。我假设 getList 的索引基于使用 df.printSchema 时显示的元素的索引。但是我错了。落后 6 个职位。
【讨论】:
以上是关于row.getList java.lang.ClassCastException:java.math.BigDecimal 不能转换为 scala.collection.Seq的主要内容,如果未能解决你的问题,请参考以下文章
Class和 forName(String className)的作用
Java WebStart 的 ClassNotFoundException
解决java log4j 配置log4jCaused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.LogManager