HiveQL 中的 WrappedArray 到数组

WrappedArray to Array in HiveQL

我正在使用 collect_list 对某些列进行分组,例如:

val res = hiveContext.sql("SELECT date, time, collect_list(id) AS id_list FROM table1 GROUP BY date, time")

id_list returns 作为 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

谢谢!

这里的主要问题是将 Any 显式转换为 WrappedArray[Double],您可以这样做:

x(2).asInstanceOf[mutable.WrappedArray[Double]].toArray

在你的情况下。或者您可以使用模式匹配进行类型转换,您可以参考 How to use a Scala match expression instead of isInstanceOf (to match types) 了解详细信息。