[ https://issues.apache.org/jira/browse/SPARK-9971?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14696760#comment-14696760 ]
Frank Rosner commented on SPARK-9971: ------------------------------------- I would like to provide a patch to make the following unit tests in {{DataFrameFunctionsSuite}} succeed: {code} test("max function ignoring Double.NaN") { val df = Seq( (Double.NaN, Double.NaN), (-10d, Double.NaN), (10d, Double.NaN) ).toDF("col1", "col2") checkAnswer( df.select(max("col1")), Seq(Row(10d)) ) checkAnswer( df.select(max("col2")), Seq(Row(Double.NaN)) ) } test("min function ignoring Double.NaN") { val df = Seq( (Double.NaN, Double.NaN), (-10d, Double.NaN), (10d, Double.NaN) ).toDF("col1", "col2") checkAnswer( df.select(min("col1")), Seq(Row(-10d)) ) checkAnswer( df.select(min("col1")), Seq(Row(Double.NaN)) ) } {code} > 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 > Priority: Minor > > h4. 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}}. > h4. 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} > h4. 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