2016-04-08 5 views
7

Ho un dataframe e voglio utilizzare una delle funzioni replace() di org.apache.spark.sql.DataFrameNaFunctions su quel dataframe.Come utilizzare le funzioni fornite dalla classe DataFrameNaFunctions in Spark, su un Dataframe?

Problema: Non ottengo questi metodi in intelligenza (suggerimenti) con l'istanza di dataframe. Ho importato quella classe in modo esplicito.

Non riesco a trovare elementi che possano darmi qualche dimostrazione su come utilizzare queste funzioni o su come trasmettere dataframe a tipo di DataFrameNaFunctions.

Ho provato a trasmettere utilizzando il metodo asInstanceof[] ma genera un'eccezione.

risposta

15

Questo può essere un po 'confuso ma è abbastanza semplice per essere onesti. Ecco un piccolo esempio:

scala> val df = sqlContext.read.format("com.databricks.spark.csv").option("header","true").option("inferSchema","true").load("na_test.csv") 
// df: org.apache.spark.sql.DataFrame = [name: string, age: int] 

scala> df.show() 
// +-----+----+ 
// | name| age| 
// +-----+----+ 
// |alice| 35| 
// | bob|null| 
// |  | 24| 
// +-----+----+ 

scala> df.na.fill(10.0,Seq("age")) 
// res4: org.apache.spark.sql.DataFrame = [name: string, age: int] 

// scala> df.na.fill(10.0,Seq("age")).show 
// +-----+---+ 
// | name|age| 
// +-----+---+ 
// |alice| 35| 
// | bob| 10| 
// |  | 24| 
// +-----+---+ 

scala> df.na.replace("age", Map(35 -> 61,24 -> 12))).show() 
// +-----+----+ 
// | name| age| 
// +-----+----+ 
// |alice| 61| 
// | bob|null| 
// |  | 12| 
// +-----+----+ 

Per accedere org.apache.spark.sql.DataFrameNaFunctions è possibile chiamare .na.

+2

ya .. Tu sei in realtà proprio. Mi dispiace tanto per questo tipo di stupida domanda. Ma non avevo idea di quella .na variabile può accedere alle funzioni di DataFrameNaFunctions. Davvero, grazie per esserti avvicinato. @eliasah –

Problemi correlati