根据以下情况,我正在寻找最合适的方法将DataFrame中包含的信息映射到我定义的一些案例类。
我有2个Hive表,第三个表代表它们之间的多对多关系。让我们称它们为“Item”,“Group”和“GroupItems”。 我正在考虑执行一个单独的查询加入它们,以获取单个组及其所有项目的信息。 因此,生成的DataFrame的每一行都将包含Group的字段和Item的字段。
然后,我创建了4个不同的案例类,以便在我的应用程序中使用这些信息。让我们称呼它们: - ItemProps1:其属性与某些Item字段匹配 - ItemProps2:其属性与某些Item字段匹配 - Item:包含一些与某些Item字段匹配的属性,并且有一个ItemProps1类型的对象,另一个类型为ItemProps2 - 组:其属性与组字段匹配,并包含项列表
我想要做的是将生成的DataFrame中包含的信息映射到这些案例类中,但我不知道哪种方法最合适。
我知道DataFrame有一个方法“as [U]”,这对于执行这种映射非常有用,但我担心在我的情况下它不会有用。
然后,我找到了一些手动执行映射的选项,如下所示:
df.map {
case Row(foo: Int, bar: String) => Record(foo, bar)
}
-
df.collect().foreach { row =>
val foo = row.getAs[Int]("foo")
val bar = row.getAs[String]("bar")
Record(foo, bar)
}
这些方法中的任何一种是最合适的方法,还是应该以其他方式进行?
非常感谢!