gpt4 book ai didi

scala - 迭代 org.apache.spark.sql.Row

转载 作者:行者123 更新时间:2023-12-01 05:04:36 24 4
gpt4 key购买 nike

我正在使用 Spark shell (1.3.1),它是一个 Scala shell。 Row上需要迭代的简化情况是这样的:

import org.apache.commons.lang.StringEscapeUtils

var result = sqlContext.sql("....")
var rows = result.collect() // Array[org.apache.spark.sql.Row]
var row = rows(0) // org.apache.spark.sql.Row
var line = row.map(cell => StringEscapeUtils.escapeCsv(cell)).mkString(",")
// error: value map is not a member of org.apache.spark.sql.Row
println(line)

我的问题是 Row没有 map并且 - 据我所知 - 它不能转换为 ArrayList ,所以我无法使用这种样式转义每个单元格。我可以使用索引变量编写一个循环,但这会很不方便。我想在这样的情况下迭代单元格:
result.collect().map(row => row.map(cell => StringEscapeUtils.escapeCsv(cell)).mkString(",")).mkString("\n")

(这些通常不是很大的结果,它们可以多次放入客户端内存中。)

有什么方法可以迭代 Row 的单元格吗? ?是否有任何语法可以将基于索引的循环放在 row.map(...) 的位置?在最后一个片段中?

最佳答案

您可以在具有 map 的 Row 上使用 toSeq()。 toSeq 将与行的顺序相同

关于scala - 迭代 org.apache.spark.sql.Row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30353705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com