【发布时间】:2016-12-18 19:36:21
【问题描述】:
我正在使用collect_list 对一些列进行分组,例如:
val res = hiveContext.sql("SELECT date, time, collect_list(id) AS id_list FROM table1 GROUP BY date, time")
id_list 作为WrappedArray 返回:
WrappedArray(1,2,1,2)
WrappedArray(4,3,4)
WrappedArray(6,7,6,7,6)
但是,我将id_list 传递给myFunc,它将Array[Double] 作为输入:
def myFunc(xs: Array[Double]) {...}
我的问题是如何正确调用myFunc 来解析id_list。我有类似的东西:
res.collect.foreach(x => myFunc(x(2)))
但它给了我一个type mismatch; found : Any required: Array[Double] 错误。
将WrappedArray 隐式转换为Array 的正确方法是什么,或者如何以优化的方式调用myFunc?
谢谢!
【问题讨论】:
-
scala.collection.mutable.WrappedArray有一个 defarray: Array[T],所以像这样调用res.collect.foreach(x => myFunc(x(2).array))可能会解决你的问题。 -
@AllenChou 猜这里的主要问题是如何让
Any类型中的x(2)首先被识别为数组,而不是直接转换它。
标签: arrays scala apache-spark apache-spark-sql hiveql