我在数组中有一个单词数据集,例如:
arr: Array[org.apache.spark.sql.Row] = Array([conversionevents], [elements], [pageviews], [productviews], [registrations], [sitepromotionclicks])
当我映射这个词时,我得到:
val v = arr.map(x => println(x.toString))
[conversionevents]
[elements]
[pageviews]
[productviews]
[registrations]
[sitepromotionclicks]
,我会将此数据转换为字符串,以避免使用方括号[]
答案 0 :(得分:2)
如问题中所述,数据为Array[org.apache.spark.sql.Row]
,每个Row
中只有一个元素。所以最简单的解决方案是
scala> arr.map(x => x(0))
//res1: Array[Any] = Array(conversionevents, elements, pageviews, productviews)
我会将此数据转换为字符串,以避免使用方括号[]
scala> arr.map(x => x(0).toString)
//res2: Array[String] = Array(conversionevents, elements, pageviews, productviews)
但是如果您的数据为
//arr: Array[org.apache.spark.sql.Row] = Array([conversionevents,test1], [elements], [pageviews,test21,test22], [productviews])
以上解决方案将拒绝其余值作为
val result = arr.map(x => x(0))
//result: Array[Any] = Array(conversionevents, elements, pageviews, productviews)
最终的解决方案是使用flatMap
和toSeq
作为
val result = arr.flatMap(x => x.toSeq)
//result: Array[Any] = Array(conversionevents, test1, elements, pageviews, test21, test22, productviews)
当然,如果您想在String
中使用它们,可以随时将toString
用作
val result = arr.flatMap(x => x.toSeq.map(_.toString))
//result: Array[String] = Array(conversionevents, test1, elements, pageviews, test21, test22, productviews)
我希望答案会有所帮助