Frank Rosner created SPARK-9971: ----------------------------------- Summary: MaxFunction not working correctly with columns containing Double.NaN Key: SPARK-9971 URL: https://issues.apache.org/jira/browse/SPARK-9971 Project: Spark Issue Type: Bug Components: SQL Affects Versions: 1.4.1 Reporter: Frank Rosner
h5. Problem Description When using the {{max}} function on a {{DoubleType}} column that contains {{Double.NaN}} values, the returned maximum value will be {{Double.NaN}}. This is because it compares all values with the running maximum. However, {{x < Double.NaN}} will always lead false for all {{x: Double}}, so will {{x > Double.NaN}}. h5. How to Reproduce {code} import org.apache.spark.sql.{SQLContext, Row} import org.apache.spark.sql.types._ val sql = new SQLContext(sc) val rdd = sc.makeRDD(List(Row(Double.NaN), Row(-10d), Row(0d))) val dataFrame = sql.createDataFrame(rdd, StructType(List( StructField("col", DoubleType, false) ))) dataFrame.select(max("col")).first // returns org.apache.spark.sql.Row = [NaN] {code} h5. Solution The {{max}} and {{min}} functions should ignore NaN values, as they are not numbers. If a column contains only NaN values, then the maximum and minimum is not defined. -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org For additional commands, e-mail: issues-h...@spark.apache.org