scala - 地图操作中的Scala类型不匹配
问题描述
我正在以下代码中尝试对 Spark DStream 进行映射操作:
val hashesInRecords: DStream[(RecordKey, Array[Int])] = records.map(record => {
val hashes: List[Int] = calculateIndexing(record.fields())
val ints: Array[Int] = hashes.toArray(Array.ofDim[Int](hashes.length))
(new RecordKey(record.key, hashes.length), ints)
})
代码在 IntelliJ 中看起来不错,但是当我尝试构建时,我得到一个我不太明白的错误:
Error:(53, 61) type mismatch;
found : Array[Int]
required: scala.reflect.ClassTag[Int]
val ints: Array[Int] = hashes.toArray(Array.ofDim[Int](hashes.length))
即使我在映射操作中添加类型后,此错误仍然存在,如下所示:
records.map[(RecordKey, Array[Int])](record => {...
解决方案
这应该可以解决您的问题,它也避免了List.length
O ( N )的调用,而是使用O( 1 )Array.length
代替。
val hashesInRecords: DStream[(RecordKey, Array[Int])] = records.map { record =>
val ints = calculateIndexing(record.fields()).toArray
(new RecordKey(record.key, ints.length), ints)
}
推荐阅读
- php - PHP Laravel 7 Yarja Datatables 错误加载 800k+ 数据
- python - 如何使用 python matplotlib 绘制离散数据的直方图?
- r - 如何导入具有文本和数字日期格式的日期列的 Excel 电子表格?例如,(“2019 年 12 月 3 日”、“2019 年 5 月 4 日”、“43787”
- algorithm - 快速检查形状列表中相交量的算法
- sql - 数组中字符串整数的总和 - Postgres
- c++ - 在 C++ 代码中运行内置 octave 函数(使用 API)比在 Octave 中运行该函数需要更长的时间......为什么这样......?
- tstringgrid - 显示错误语法错误,意外的 T_String
- python - 使用黎曼和的中点规则计算 2 变量定积分的体积
- python - 是否可以使用python3检查是否存在受限文件?
- javascript - JS onload 函数无法在选择选项元素上使用目标 _self 或 _top [codeigniter3]