Scala Spark - 从WrappedArray

时间:2018-04-17 11:51:12

标签: arrays scala apache-spark-sql

我正在为Spark写一个Scala脚本,我有一个“specialArray”如下:

 specialArray = ...
 specialArray.show(6)
 __________________________ console __________________________________

 specialArray: org.apache.spark.sql.DataFrame = [_VALUE: array<string>]
 +--------------+
 |        _VALUE|
 +--------------+
 |    [fullForm]|
 |    [fullForm]|
 |    [fullForm]|
 |    [fullForm]|
 |    [fullForm]|
 |    [fullForm]|
 |    [fullForm]|
 +--------------+
 only showing top 6 rows

但是想看看那些“fullForm”子阵列的内容,你会怎么做呢?

非常感谢你!

我已经尝试以这种方式获得第一个值:

val resultTest = specialArray.map(s => s.toString).toDF().collect()(0)
__________________________ console __________________________________
resultTest: org.apache.spark.sql.Row = [[WrappedArray(fullForm)]]

所以我不知道该怎么处理,而且我在thdoc :: https://www.scala-lang.org/api/current/scala/collection/mutable/WrappedArray.html中找不到任何“有效”的东西。

如果您有任何想法或有任何问题要问我,请随时留言,谢谢:)。

1 个答案:

答案 0 :(得分:1)

此处specialArray是一个数据框,因此要查看您使用的数据框架specialArray.printSchema,它会显示数据框内的数据类型。

如果您只想查看数据框内的数据,可以使用

specialArray.show(6, false)参数false在显示长值时不会截断。

接下来您可以使用selectwithColumnWrappedArray更改为逗号分隔(或任何分隔符)String

import org.apache.spark.sql.functions._
df.select(concat_ws(",", $"_VALUE")).show(false)
df.withColumn("_VALUE", concat_ws(",", $"_VALUE")).show(false)

希望这有帮助!