将Spark DataFrame转换为对象列表

Mik*_*_Jr 0 oop scala dataframe apache-spark apache-spark-sql

我知道可以使用以下内容将数据帧列转换为列表:

dataFrame.select("ColumnName").rdd.map(r => r(0)).collect()
Run Code Online (Sandbox Code Playgroud)

假设我已经知道了数据帧的模式,相应地我创建了一个case类,例如:

case class Synonym(URI: String, similarity: Double, FURI: String)
Run Code Online (Sandbox Code Playgroud)

有没有一种有效的方法从数据帧的数据中获取同义词对象列表?

换句话说,我正在尝试创建一个映射器,它将数据帧的每一行转换为我的case类的一个对象,然后以一种我可以在操作结束时拥有这些对象列表的方式返回该对象.这有可能以一种有效的方式吗?

Tza*_*har 7

as[Synonym]得到Dataset[Synonym]它,那么你可以collect得到一个Array[Synonym]:

val result = dataframe.as[Synonym].collect()
Run Code Online (Sandbox Code Playgroud)