如何从Scala自定义对象列表创建数据框

Sor*_*mar 0 scala dataframe apache-spark apache-spark-sql

我们可以使用以下方法从Java对象列表中创建一个数据框:

DataFrame df = sqlContext.createDataFrame(list, Example.class);
Run Code Online (Sandbox Code Playgroud)

对于Java,Spark可以直接从类(在这种情况下)推断模式Example.class

如果有Scala,有没有办法做同样的事情?

Rap*_*oth 5

如果您在Scala中使用案例类,则可以直接使用

// define this class outside main method
case class MyCustomObject(id:Long,name:String,age:Int)

import spark.implicits._

val df = Seq(
  MyCustomObject(1L,"Peter",34),
  MyCustomObject(2L,"John",52)
).toDF()

df.show()

+---+-----+---+
| id| name|age|
+---+-----+---+
|  1|Peter| 34|
|  2| John| 52|
+---+-----+---+
Run Code Online (Sandbox Code Playgroud)

如果要使用非大小写类,则需要扩展特征Product并自己实现这些方法