स्पार्क-खोल में, मैं निम्नलिखित कोड चलाता हूं:
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 नहीं?
क्या स्पार्क में एक बग है?
आपकी सहायता के लिए धन्यवाद.
उत्तर:
जवाब के लिए 0 № 1धन्यवाद ccheneson और hveiga। जवाब यह है कि मैपिंग परिणाम को ^ ^ 31 से बड़ा बनाता है, इंटरगर की सीमा को चलाता है। इसलिए, संख्या नकारात्मक क्षेत्र में कूदती है।