【发布时间】:2019-08-09 04:34:55
【问题描述】:
这是预期的行为吗?我想提出一个关于 Spark 的问题,但这似乎是一个基本的功能,很难想象这里有一个错误。我错过了什么?
Python
import numpy as np
>>> np.nan < 0.0
False
>>> np.nan > 0.0
False
PySpark
from pyspark.sql.functions import col
df = spark.createDataFrame([(np.nan, 0.0),(0.0, np.nan)])
df.show()
#+---+---+
#| _1| _2|
#+---+---+
#|NaN|0.0|
#|0.0|NaN|
#+---+---+
df.printSchema()
#root
# |-- _1: double (nullable = true)
# |-- _2: double (nullable = true)
df.select(col("_1")> col("_2")).show()
#+---------+
#|(_1 > _2)|
#+---------+
#| true|
#| false|
#+---------+
【问题讨论】:
-
似乎他们正在使用类似
Double.compare的东西在存在 NaN 的情况下进行排序,导致您看到true值,但我没有找到任何关于这件事。
标签: python numpy apache-spark pyspark nan