scala - 在 Spark 中将 BigInt 转换为 Int

标签 scala apache-spark apache-spark-mllib apache-zeppelin

您好,我正在尝试将 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/

相关文章:

scala 值 toInt 不是 Any 的成员

scala - reduceByKey(_++ _) 是什么意思

scala - SortedMap 中最近的键

java - Java 中 Spark MLlib 中的矩阵运算

apache-spark - Spark 上的时间序列预测

apache-spark - 如何使用 KMeans 在 Spark 中对推文进行聚类?

scala - 如何使用 Scala Spark 中 withColumn 的另一列值组成列名

sql - 如何测试 hive 中的数字状态?

apache-spark - 如何计算执行器内存、执行器数量、执行器核心数和驱动程序内存以使用 Spark 读取 40GB 的文件?

scala - 如何使用spark连接Hbase