2016-09-11 31 views
3

有没有办法删除只包含空值的spark数据帧的列? (我使用Scala和星火1.6.2)Spark scala删除只包含空值的列

目前,我这样做:

var validCols: List[String] = List() 
for (col <- df_filtered.columns){ 
    val count = df_filtered 
    .select(col) 
    .distinct 
    .count 
    println(col, count) 
    if (count >= 2){ 
    validCols ++= List(col) 
    } 
} 

建立包含至少两个不同的值列的列表,然后在使用它选择()。

谢谢!

回答

0

我有同样的问题,我想出了一个类似的Java解决方案。在我看来,目前没有其他办法。

for (String column:df.columns()) 
    long count = df.select(column).distinct().count(); 

    if(count == 1 && df.select(column).first().isNullAt(0)){ 
     df = df.drop(column); 
    } 
} 

我删除所有包含正好一个不同值和第一个值为空的列。这样我可以确定,我不会删除所有值都相同但不为空的列。