試圖刪除其中Spark數據框列包含空白字符串的行。最初做val df2 = df1.na.drop()
但事實證明,這些值中的很多被編碼爲""
。從Spark數據框中刪除空白字符串
我卡在使用Spark 1.3.1,也不能依靠DSL。 (導入spark.implicit_不工作。)
試圖刪除其中Spark數據框列包含空白字符串的行。最初做val df2 = df1.na.drop()
但事實證明,這些值中的很多被編碼爲""
。從Spark數據框中刪除空白字符串
我卡在使用Spark 1.3.1,也不能依靠DSL。 (導入spark.implicit_不工作。)
從數據框中刪除東西需要filter()
。
newDF = oldDF.filter("colName != ''")
還是我誤解你的問題?
如何使用Where子句 –
'WHERE colName IS NOT NULL'或'WHERE colName IS NOT EMPTY'來寫這個東西......我想。 – Kristian
或者,用DataFrames/Datasets,'oldDF.filter($「colName」=!=「」)'。別忘了'import org.apache.spark.sql.functions._ import org.apache.spark.sql.types._' –
我也是新的火花所以我不知道下面提到的代碼是否更復雜或沒有,但它的工作原理。
這裏我們正在創建udf,它將空值轉換爲null。
sqlContext.udf().register("convertToNull",(String abc) -> (abc.trim().length() > 0 ? abc : null),DataTypes.StringType);
上面的代碼後,你可以在選擇子句中使用「convertToNull」(適用於字符串),使所有字段爲空這是空白的,比使用.na()。拖放()。
crimeDataFrame.selectExpr("C0","convertToNull(C1)","C2","C3").na().drop()
注:您可以使用同樣的方法在階。 https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-sql-udfs.html
如果有人不想用空白字符串刪除記錄,但只是將空白字符串轉換爲某個常量值。
val newdf = df.na.replace(df.columns,Map("" -> "0")) // to convert blank strings to zero
newdf.show()
你想用空白字符串做什麼?放下線? – eliasah