使用Scala和Apache Spark进行过滤

问题描述:

我创建了一个包含一些列的未标记数据集。其中一列的值是法国,德国,法国和英国使用Scala和Apache Spark进行过滤

我知道如何使用下面的代码进行过滤和计数。

val b =data.filter(_.contains("France")).count 

但是,我不知道如何计算法国以外的值。

我想下面的代码,但它给我错误的结果

val a =data.filter(x=>x!="France").count 

PS:我的问题是类似Is there a way to filter a field not containing something in a spark dataframe using scala?一点,但我正在寻找一些简单的答案。

+0

你怎么知道这是不正确的?它是否返回所有记录的数量? –

+0

它返回5而不是2 – neoguy

+1

这种情况下'data'或'_'是什么?您需要检查数据框中某行的特定列是否与“法国”不相等。你不应该检查一行是否包含“法国”。 –

您正试图过滤那些等于“法国”的元素。 试试这个

val a=data.filter(!_.contains("France")).count 

要cricket_007的点,应该是这样的

val myDSCount = data.filter(row => row._1 != "France").count() 

我不知道你的数据是在什么样的列,所以row._1会更改为正确的号码。您可以运行以下命令以查看所有列:

data.printSchema