Spark:通过操作

时间:2017-11-29 23:48:32

标签: scala apache-spark spark-dataframe

我有一个数据框,我想遍历数据帧的每一行。数据框中有一些列具有三个引号的前导字符,表示它们被意外删除,并且需要全部成为一列的一部分。因此,我需要循环遍历数据框中的所有行,如果列具有前导字符,则需要将其连接到正确的列。

以下适用于单行并提供正确的结果:

val t = df.first.toSeq.toArray.toBuffer
while(t(5).toString.startsWith("\"\"\"")){
    t(4) = t(4).toString.concat(t(5).toString)
    t.remove(5)
  }

然而,当我尝试浏览整个数据帧时,它会出错:

df.foreach(z => 
  val t = z.toSeq.toArray.toBuffer
  while(t(5).toString.startsWith("\"\"\"")){
    t(4) = t(4).toString.concat(t(5).toString)
    t.remove(5)
  }
)

此错误消息出错:<console>:2: error: illegal start of simple expression

如何纠正此问题以使其正常工作?为什么这不正确?

谢谢!

编辑 - 示例数据(前面还有其他列):

+---+--------+----------+----------+---------+
|id | col4   | col5     |     col6 |    col7 |
+---+--------+----------+----------+---------+
| 1 | {blah} | service  | null     | null    |
| 2 | { blah | """ blah | """blah} | service |
| 3 | { blah | """blah} | service  | null    |
+---+--------+----------+----------+---------+

0 个答案:

没有答案