我正在尝试运行一个Spark作业。我在DF中有如下数据:
df.show()
//+------+----------+
//| name| rank|
//+------+----------+
//|piyush| 1|
//+------+----------+
字符串
我想把这个DFMap如下:
val ds = df.map(row=>{ConverterClass.convert(row)})
型
方法ConverterClass.convert
是
def convert(row:Row):Data = {
Data(
row.getAs("name"),
row.getAs("rank")
)
}
型
而case class Data
是
case class Data (
var name: String,
var rank: String
)
型
当我运行这个功能时,我得到一个空白的输出:
ds.show()
//++
//||
//++
//||
//++
型
我之前使用Java类来处理数据,并使用JavaSerializer,它工作得很好。当我改用Scala case类时,我遇到了这个问题。
1条答案
按热度按时间kgsdhlau1#
你就快成功了!你的问题出在
convert
方法上。在使用getAs
方法时少了一小部分。让我们看看它的签名:字符串
这里缺少了
[T]
,这是您试图从中获取值的字段的类型。在您的情况下,两个字段的类型都是[String]
,正如您的case类中定义的那样。这里是一个完全可复制的代码示例(我只是通过添加
[String]
来更改您的转换函数):型