Spark:不支持的文字类型类scala.collection.immutable.Nil $ List()

苏莱达曼

我搜索了与此问题相关的其他答案,但它们没有帮助。

我正在尝试将列添加到数据框。此列的数据类型为Seq[CaseClass]起初我以为spark可能不支持集合类型列,但事实并非如此。

这是我尝试运行的代码示例。我只想向每行添加一个空的Seq [CaseClass],以后可以附加到该行。

case class Employee(name: String)
val emptyEmployees: Seq[Employee] = Seq()
df.withColumn("Employees", lit(emptyEmployees))

但是后来我得到了与 withColumn

Unsupported literal type class scala.collection.immutable.Nil$ List()
java.lang.RuntimeException: Unsupported literal type classscala.collection.immutable.Nil$ List()
特拉维斯·海格纳

如果您使用的是spark 2.2+,则根据答案更改lit()typedLit()

case class Employee(name: String)
val emptyEmployees: Seq[Employee] = Seq()
val df = spark.createDataset(Seq("foo")).toDF("foo")
df.withColumn("Employees", typedLit(emptyEmployees)).show()

向我们展示:

+---+---------+
|foo|Employees|
+---+---------+
|foo|       []|
+---+---------+

更新资料

对于2.1,上面针对该版本的链接答案通过将您lit(Array)转换array()lit()s(带有一些不可思议的scala语法)而起作用在您的情况下,这将起作用,因为数组为空。

def asLitArray[T](xs: Seq[T]) = array(xs map lit: _*)

case class Employee(name: String)

val emptyEmployees: Seq[Employee] = Seq()
val df = spark.createDataset(Seq("foo")).toDF("foo")

df.withColumn("Employees", asLitArray(emptyEmployees)).show()

结果相同:

+---+---------+
|foo|Employees|
+---+---------+
|foo|       []|
+---+---------+

要真正拥有一些东西,您Seq需要的功能会稍有不同。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

不支持的文字类型类scala.collection.immutable.HashSet $ HashTrieSet

从scala.collection.immutable.List转换为Java中的java.util.List

如何在Java代码中使用scala.collection.immutable.List

将Seq或List转换为collection.immutable.Queue

Scala:Nil vs List()

如何使用 Java 使用 scala.collection.immutable.Stream 类

在我的java类中使用scala.collection.immutable.Map

scala: List found found : scala.collection.immutable.::[B] required: List[?U1] where type ?U1 <: U (this is a GADT skolem)

从Java使用scala.collection.immutable.Set的示例

java.lang.NoSuchMethodException:scala.collection.immutable。$ colon $ colon

Spark scala.collection.immutable.$colon$colon 不是字符串模式的有效外部类型

io.circe.Encoder [scala.collection.immutable.Map [Int,Any]]类型的离散隐式展开

Scala中Apache Spark中不支持的文字类型类

在scala中,Map [_,_]和scala.collection.immutable.Map [_,_]如何具有不同的TypeTag?

(1至4).toSet和(1至4).to [scala.collection.immutable.Set]之间的Scala差异?

scala.Some 无法转换为 scala.collection.immutable.Map 异常

不支持的文字类型类scala.runtime.BoxedUnit

类型不匹配; 找到:scala.collection.immutable.Stream [String]必需:Play Scala中的字符串?

无法将wrappedArray$ofRef 转换为scala.collection.immutable.Seq

当条目较少时将json转换为“ scala.collection.immutable.HashMap”时发生ClassCastException

排序Seq [scala.collection.immutable.Map [String,org.joda.time.DateTime]]

将java.util.Map [String,Object]转换为scala.collection.immutable.Map [String,Any]

如何从Java中的Java列表创建scala.collection.immutable.Seq?

RDD [scala.collection.immutable.Map [String,Any]的最大值和最小值

Apache Spark 2.1:java.lang.UnsupportedOperationException:找不到scala.collection.immutable.Set [String]的编码器

+ =不支持的操作数类型:“ int”和“ list”

-= 不支持的操作数类型:'list' 和 'int'

为什么Nil :: Nil还给List(List())?

loguru 中的文字和列表的 Python 错误:+ 不支持的操作数类型:'NoneType' 和 'list'