【发布时间】:2020-05-22 21:04:53
【问题描述】:
我正在尝试在数据帧上运行收集,然后对结果数组的元素执行操作。
scala> scans.withColumn("src_port_list", udf((x: Seq[Int]) => x.distinct).apply($"src_port_list")).select("src_port_list").collect().map(_(0))
res29: Array[Any] = Array(WrappedArray(38897, 35378, 32947, 24280, 33181, 24782, 40937, 20824, 39685, 39841, 40191, 39031, 40981, 40919, 24436, 39765, 39784, 39881, 41037, 41079, 38874, 39916, 39788, 40468, 40041, 40941, 39325, 38902, 38896, 36151, 41061, 41016, 38921, 39269, 24437, 39001, 24282, 38923, 38920, 39835, 38901, 37585, 38922, 40977, 38898, 39862, 40926, 39909, 38743, 39774, 39761, 40918), WrappedArray(50974, 50998, 51947, 51428, 51012, 50996, 50984, 51564, 51037, 51045, 50980, 51027, 51010, 51036, 51030, 51025, 50992, 50983, 50993, 51009, 50991, 50989, 50990, 51011, 51031, 50987, 50986, 50985, 51028, 51041, 51001, 51035, 51029, 51026, 50995, 50976, 50997, 50981, 50994, 50988, 50975), WrappedArray(53148, 52396, 52318, 52422, 52420, 53064, 52394, 52329, 53156, 53072, 53126, 53...
我需要将结果数组中的 WrappedArrays 转换为集合,以便我可以执行联合/交集操作,但因为它们被视为 Any 类型,所以我无法执行任何转换操作。
【问题讨论】:
-
_(0)返回一个 Any。也许你想要_.getAsInt(0)? -
@LuisMiguelMejíaSuárez 我想这里应该是
_.getAs[Array[Int]](0) -
@BorisAzanov 啊我没看到它是嵌套数组。那么应该是
_.getSeq[Int](0)
标签: arrays scala casting any collect