0
В Спарк-оболочки, я запускаю следующий код:большое целое число в Спарк
scala> val input = sc.parallelize(List(1, 2, 4, 1881824400))
input: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at <console>:21
scala> val result = input.map(x => 2*x)
result: org.apache.spark.rdd.RDD[Int] = MapPartitionsRDD[1] at map at <console>:23
scala> println(result.collect().mkString(","))
2,4,8,-531318496
Почему результат 2 * 1881824400 = -531318496? не 3763648800?
Это ошибка в искры?
Благодарим за помощь.
Я считаю, что это переполнение http://stackoverflow.com/questions/3001836/how-does-java-handle-integer-underflows-and-overflows-and-how-would-you-check-fo – ccheneson
2 * 1881824400 больше максимального числа, которое равно 2^31 - 1. Вы должны использовать BigInteger вместо Int, чтобы иметь возможность получить ожидаемое значение. – hveiga
Я понял. Благодаря! –