2016-09-11 61 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); 
    } 
} 

我刪除所有包含正好一個不同值和第一個值爲空的列。這樣我可以確定,我不會刪除所有值都相同但不爲空的列。