我正在将火花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} )
但这不起作用。
答案 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