如何在Dataframe上使用Spark中的DataFrameNaFunctions类提供的函数?

时间:2016-04-08 12:47:23

标签: scala apache-spark

我有一个数据框,我想在该数据框上使用 org.apache.spark.sql.DataFrameNaFunctions replace()功能。

问题:我没有使用dataframe的实例获得这些方法的智能(建议)。我明确地导入了这个类。

我无法找到任何可以让我演示如何使用这些函数或如何将数据框转换为DataFrameNaFunctions类型的东西。

我尝试使用asInstanceof[]方法强制转换它,但它会引发异常。

1 个答案:

答案 0 :(得分:17)

这可能有点令人困惑但说实话很简单。这是一个小例子:

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|
// +-----+----+

要访问org.apache.spark.sql.DataFrameNaFunctions,您可以致电.na.