Scala 删除Spark中的空白行或半空白半空行
我有一个Spark数据框Scala 删除Spark中的空白行或半空白半空行,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,我有一个Spark数据框 id名称地址 1 xyz数控 无效的 …空行。。。。 3 pqr stw 我需要从数据帧中删除第2行和第3行,并需要以下输出 id名称地址 1 xyz数控 3 pqr stw 我试过使用 df1.filter(($"id" =!= "") && ($"id".isNotNull)).filter(($"name" =!= "") && ($"name".isNotNull)) 但是在这里,我需要通过在列上迭代来对每一列执行此操作,是
id名称地址
1 xyz数控
无效的
…空行。。。。
3 pqr stw
我需要从数据帧中删除第2行和第3行,并需要以下输出
id名称地址
1 xyz数控
3 pqr stw
我试过使用
df1.filter(($"id" =!= "") && ($"id".isNotNull)).filter(($"name" =!= "") && ($"name".isNotNull))
但是在这里,我需要通过在列上迭代来对每一列执行此操作,是否有一种方法可以在整行级别执行此操作,而不是通过在列上迭代来执行此操作。您可以使用以下逻辑
import org.apache.spark.sql.functions._
def filterEmpty = udf((cols: mutable.WrappedArray[String]) => cols.map(_.equals("")).contains(true))
df.na.fill("").filter(filterEmpty(array("id", "name", "address")) =!= true).show(false)
其中,filterEmpty
是一个udf
函数,如果任何列包含空值,它将返回true
na.fill(“”
将数据帧中的所有null
值替换为空值
和filter
函数过滤掉不必要的行
我希望答案是有帮助的看一看问题,迭代数据帧中的所有列。可能重复@Jeremy我可以迭代列…我正在寻找一种转换,它不在单个列上迭代,而是在行的基础上删除。是否有更好的方法来表示
。空行…
?是不是null,null,null
?因此,你的问题有点不清楚。