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

Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别

如何使用 Gson @SerializedName 注释在 Kotlin 中反序列化嵌套的 Json API 响应