Uploaded image for project: 'Spark'
  1. Spark
  2. SPARK-12128

Multiplication on decimals in dataframe returns null

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Invalid
    • 1.5.0, 1.5.1, 1.5.2
    • None
    • Spark Core
    • None
    • Scala 2.11/Spark 1.5.0/1.5.1/1.5.2

    Description

      I hit a weird issue when I tried to multiply to decimals in a select (either in scala or as SQL), and Im assuming I must be missing the point.

      The issue is fairly easy to recreate with something like the following:

      val sqlContext = new org.apache.spark.sql.SQLContext(sc)
      import sqlContext.implicits._
      import org.apache.spark.sql.types.Decimal
      
      case class Trade(quantity: Decimal,price: Decimal)
      
      val data = Seq.fill(100) {
        val price = Decimal(20+scala.util.Random.nextInt(10))
          val quantity = Decimal(20+scala.util.Random.nextInt(10))
      
        Trade(quantity, price)
      }
      
      val trades = sc.parallelize(data).toDF()
      trades.registerTempTable("trades")
      
      trades.select(trades("price")*trades("quantity")).show
      
      sqlContext.sql("select price/quantity,price*quantity,price+quantity,price-quantity from trades").show
      
      

      The odd part is if you run it you will see that the addition/division and subtraction works but the multiplication returns a null.

      Tested on 1.5.1/1.5.2 (Scala 2.10 and 2.11)

      ie.

      +------------------+
      
      |(price * quantity)|
      
      +------------------+
      
      |              null|
      
      |              null|
      
      |              null|
      
      |              null|
      
      |              null|
      
      +------------------+
      
      
      
      +--------------------+----+--------------------+--------------------+
      
      |                 _c0| _c1|                 _c2|                 _c3|
      
      +--------------------+----+--------------------+--------------------+
      
      |0.952380952380952381|null|41.00000000000000...|-1.00000000000000...|
      
      |1.380952380952380952|null|50.00000000000000...|8.000000000000000000|
      
      |1.272727272727272727|null|50.00000000000000...|6.000000000000000000|
      
      |0.833333333333333333|null|44.00000000000000...|-4.00000000000000...|
      
      |1.000000000000000000|null|58.00000000000000...|               0E-18|
      
      +--------------------+----+--------------------+--------------------+
      

      Attachments

        Activity

          People

            Unassigned Unassigned
            philip.dodds@gmail.com Philip Dodds
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: