尝试删除包含空字符串的Spark dataframe列中的行。最初使用了val df2 = df1.na.drop()
,但结果发现许多这些值被编码为""
。
我被困在使用Spark 1.3.1的环境中,也不能依赖DSL。(导入spark.implicit_不起作用。)
尝试删除包含空字符串的Spark dataframe列中的行。最初使用了val df2 = df1.na.drop()
,但结果发现许多这些值被编码为""
。
我被困在使用Spark 1.3.1的环境中,也不能依赖DSL。(导入spark.implicit_不起作用。)
从数据框中删除内容需要使用filter()
函数。
newDF = oldDF.filter("colName != ''")
还是我的理解有误?
oldDF.filter($"colName" =!= "")
来过滤非空列。不要忘记导入org.apache.spark.sql.functions._
和org.apache.spark.sql.types._
。 - Josiah Yoder如果有人不想删除空字符串记录,而是将空字符串转换为某个常数值。
val newdf = df.na.replace(df.columns,Map("" -> "0")) // to convert blank strings to zero
newdf.show()
df.filter(!($"col_name"===""))
我也是spark的新手,所以不确定下面提到的代码是否更复杂,但它能够正常工作。
在这里,我们正在创建一个udf,该函数将空值转换为null。
sqlContext.udf().register("convertToNull",(String abc) -> (abc.trim().length() > 0 ? abc : null),DataTypes.StringType);
crimeDataFrame.selectExpr("C0","convertToNull(C1)","C2","C3").na().drop()
注意:您可以在Scala中使用相同的方法。 https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-sql-udfs.html