SPARK SQL:如何将List [List [Any])转换为数据框

时间:2017-08-23 10:23:18

标签: scala apache-spark apache-spark-sql

@JsonAlias({ "public" }) public String publicScope

现在我想将其转换为数据框 -

val list = List(List(1,"Ankita"),List(2,"Kunal"))

但它会抛出错误 -

java.lang.ClassNotFoundException:Scala.any

2 个答案:

答案 0 :(得分:1)

AFAIK,List[List[Any]]无法直接转换为DataFrame,需要转换为某种类型(此处我将示例转换为Person)List[Person]

case class Person(id: Int, name: String)

val list = List(List(1,"Ankita"),List(2,"Kunal"))

val listDf = list.map(x => Person(x(0).asInstanceOf[Int], x(1).toString)).toDF("id","name")

另一种方法是根据user8371915的评论,创建对列表并转换为DataFrame

val listDf = list.map { 
  case List(id: Int, name: String) => (id, name) } toDF("id", "name")

答案 1 :(得分:-1)

因为List(在List中)可以是任意大小而不能使用隐式类型转换。 如果您更改为元组列表,则可以转换它。

val list = List((1,"Ankita"),(2,"Kunal")).toDF("id","name")