地图功能无法与 Dataframe(toDF)一起正常工作 [重复]
Posted
技术标签:
【中文标题】地图功能无法与 Dataframe(toDF)一起正常工作 [重复]【英文标题】:map function is not working properly with Dataframe(toDF) [duplicate] 【发布时间】:2019-01-20 22:41:57 【问题描述】:我在下面的代码中运行为 Dataset (toDS
),它工作正常,但是当我将其转换为 Dataframe (toDF
) 时,它不适用于 Dataframe。
数据集代码:
val primitiveDS = Seq(1, 2, 3).toDS()
primitiveDS.map(_ + 1).collect()
// **Output** : Array(2, 3, 4)
数据框代码:
val primitiveDF = Seq(1, 2, 3).toDF()
primitiveDF.map(_ + 1).collect()
错误:
scala> primitiveDF.map(_ + 1).collect()
<console>:26: error: type mismatch;
found : Int(1)
required: String
primitiveDF.map(_ + 1).collect()
^
【问题讨论】:
【参考方案1】:如果您在 DataFrame 上进行映射,您的元素将是 Row
类型(一种无类型集合),您不能只将 1 添加到行,而是必须先使用访问器方法从行中提取元素喜欢.getInt
:
primitiveDF.map((r: Row) => r.getInt(0) + 1).collect()
或更短:
primitiveDF.map(_.getInt(0) + 1).collect()
或使用模式匹配:
primitiveDF.mapcase Row(i:Int) => i+1.collect()
【讨论】:
以上是关于地图功能无法与 Dataframe(toDF)一起正常工作 [重复]的主要内容,如果未能解决你的问题,请参考以下文章