我正在使用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
?
谢谢!
答案 0 :(得分:1)
此处的主要问题是明确将Any
转换为WrappedArray[Double]
,您可以这样做:
x(2).asInstanceOf[mutable.WrappedArray[Double]].toArray
在你的情况下。或者您可以使用模式匹配进行类型转换,您可以参考How to use a Scala match expression instead of isInstanceOf
(to match types)了解详细信息。