2017-02-23 68 views
0

我試圖過濾一個數據集與NA值..發現org.apache.spark.sql.DataFrameNaFunctions 但它似乎drop()或放(「任何」)似乎不能正常工作..所有人嘗試..或者請在java中共享使用..thank你......Apache Spark org.apache.spark.sql.DataFrameNaFunctions用法的任何示例? ..drop()似乎不起作用?

import org.apache.spark.sql.DataFrameNaFunctions; 
    Dataset<Row> inputDS=spark.read().option("header","true"). 
           csv("inputfile.csv"); 
    inputDS.show(); 

    //Updated dataset...remove null or NAN 
    DataFrameNaFunctions inputDatasetsansNullorNAN=new DataFrameNaFunctions(inputDS); 
    Dataset<Row> inputDSnulldropped=inputDatasetsansNullorNAN.drop(); 
    inputDSnulldropped.show(); 

............ 輸入文件

name item 

1.Alice,牛奶 2. Bob,null 3. NA,
4.測試,a 5. N A,NA 6.空,NA 7.鮑勃,NA 8. 9.

輸出

名稱項 1.Alice牛奶 2.Bob空 3.測試一個 4。 NA NA 5.null NA 6.Bob NA

回答

0

DataFrameNaFunctions從創建吶數據幀的方法,所以你應該做這樣的事情:

val withoutNulls = inputDs.na.drop() 

此外,請注意,csv中的null是通過沒有值(例如, 3,...,4表示3和4之間的列爲空)。如果您使用的是類似「null」字符串的函數,那麼na函數將不起作用。相反,你可能會這樣做:

val withoutNulls = inputDs.filter(!($"columnName" === "null")) 
+0

謝謝..從na獲得DataframeNAFunctions和使用下降工作。我嘗試了其他片段的值,如NA或null ..但沒有得到它使用java ... inputDS.filter(!($ item ==「null」)) – Binu

+0

對不起,===是斯卡拉速記。嘗試inputDs.filter(col(「columnName」)。notEqual(「null」)) –

+0

Thank you..it works fine。 – Binu