如何设置函数文字的输出类型?

时间:2018-09-07 17:58:35

标签: scala

我正在将火花Row对象映射到一个数组,每个对象每行都有一个项目。给定输入Array[org.apache.spark.sql.Row]对象spark_rows

val array_object = spark_rows.map( (r: Row) => {r.toSeq.head} )

此输出是Array[Any]对象。但是我知道这些行的所有成员都是字符串,我希望输出对象为Array[String]。我该怎么办?

根据您定义函数的方式,我尝试了

val array_object = spark_rows.map( (r: Row): String => {r.toSeq.head} )

但这不起作用。

2 个答案:

答案 0 :(得分:1)

--query select * from table where column is null and $CONDITIONS 方法Row返回toSeq,因此出现上述问题。如果要从Seq[Any]中检索已知类型的特定项目,请使用getAs[T](index),如下所示:

Row

答案 1 :(得分:1)

要回答标题中的实际问题:请使用ascription。

无归属:

scala>  val foo = (i: Int) => Set.empty
foo: Int => scala.collection.immutable.Set[Nothing] = $$Lambda$funnyNumber1

带说明:

scala> val foo = (i: Int) => (Set.empty: Set[Int])
foo: Int => Set[Int] = $$Lambda$funnyNumber2