您好,我正在尝试将 BigInt
转换为 int
以生成 Rating类。
我只想使用足够小以适合 in 的实例,我使用以下代码:
val tup=rs.select("kunden_nr","product_list")
val rdd=tup.rdd.map(row=>(row.getAs[BigInt](0),row.getAs[Seq[Int]](1)))
val fs=rdd.filter(el=>el._1.isValidInt)
fs.count()
rdd.count()
fs 计数在 Zepplin 中传递以下异常:
java.lang.ClassCastException: java.lang.Long 无法转换为 scala.math.BigInt
最佳答案
转换就像改变您的代码用来表示您的值引用的内容的“眼镜”,而不是实际更改引用的内容或更改引用以指向新的 BigInt
实例。
这意味着您需要使用它真正拥有的类型来获取您的值,然后从中构建一个 BigInt
实例:
BigInt(row.getAs[Long](0))
按照相同的推理,您可以从 Long
创建一个 Int
实例,如下所示:
row.getAs[Long](0).toInt
但它可能会溢出整数类型的表示范围。
关于scala - 在 Spark 中将 BigInt 转换为 Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41736642/