【发布时间】:2020-08-11 21:29:14
【问题描述】:
如何遍历 Spark DataFrame 行并将它们添加到案例类对象序列中?
DF1:
val someDF = Seq(
("202003101750", "202003101700",122),
("202003101800", "202003101700",12),
("202003101750", "202003101700",42)
).toDF("number", "word","value")
案例分类:
case class ValuePerNumber(num:String, wrd:String, defaultID:Int, size: Long=0) {}
预期输出:
Seq(ValuePerNumber("202003101750", "202003101700",0, 122), ValuePerNumber("202003101800", "202003101700",0, 12), ValuePerNumber("202003101750", "202003101700",0, 42))
在每种情况下,我都可以将 defaultID 设为 0。 我不知道如何处理和解决这个问题,非常感谢任何解决方案/建议!
我尝试了以下方法:
val x = someDF.as[ValuePerNumber].collect()
我收到以下错误:
org.apache.spark.sql.AnalysisException: cannot resolve '`num`' given input columns: [number, word, value];
编辑:如果问题/解决方案对您有帮助,请投票,这反过来会在这个论坛中帮助我。
【问题讨论】:
-
如果你想得到一个类的序列,你需要
collect()驱动数据。另一种方法是创建一个Dataset[ValuePerNumber]。 -
@Shaido-ReinstateMonica 我已经用我尝试过的内容以及我的使用方式编辑了我的帖子
collect似乎在这里不起作用。 -
您的列名必须与案例类的列名匹配。
-
重命名列?
标签: scala apache-spark apache-spark-sql scala-collections