删除 pyspark 数据框中值为字符串的行

Remove rows where value is string in pyspark dataframe

我正在尝试使用 Apache Spark 对存储在 MongoDB 数据库中的地理空间数据使用 KMeans。数据具有以下格式,

DataFrame[decimalLatitude: double, decimalLongitude: double, features: vector]

代码如下,其中inputdf是dataframe

vecAssembler = VectorAssembler(
                inputCols=["decimalLatitude", "decimalLongitude"],
                outputCol="features")
inputdf = vecAssembler.transform(inputdf)
kmeans = KMeans(k = 10, seed = 123)
model = kmeans.fit(inputdf.select("features"))

数据集中似乎有一些空字符串,因为我得到以下错误,

com.mongodb.spark.exceptions.MongoTypeConversionException: Cannot cast STRING into a IntegerType (value: BsonString{value=''})

我尝试使用

查找此类行
issuedf = inputdf.where(inputdf.decimalLatitude == '')
issuedf.show()

但是我得到了和上面一样的类型转换错误。我也试过df.replace,但我得到了同样的错误。如何删除存在此类值的所有行?

这个问题可以通过在加载数据时提供数据类型来解决,如下所示,

inputdf = my_spark.read.format("mongo").load(schema=StructType(
    [StructField("decimalLatitude", DoubleType(), True),
     StructField("decimalLongitude", DoubleType(), True)]))

这确保所有值都是 DoubleType。现在可以使用 inputdf.dropna()

删除空值