Scala:缺少特征中方法计数的参数

时间:2017-10-06 14:16:40

标签: scala apache-spark

在一行代码中,我试图获取RDD的前10行并计算记录(显然应该是10)。但是,当我做一些时,我得到错误:

<console>:24: error: missing arguments for method count in trait 
TraversableOnce;
follow this method with `_' if you want to treat it as a partially applied function

以下是代码:

logfiles.filter(line => line.contains("jpg")).take(10).count

2 个答案:

答案 0 :(得分:3)

take(10)之后,您不再处理RDD,而是处理Traversable(Scala集合类型)。您希望使用size代替count,因为count会使用谓词来过滤:

val count = logfiles.filter(line => line.contains("jpg")).take(10).size

正如您所声明的那样,只要您的RDD至少包含许多项目,您就可以轻松返回10个项目,而您最有可能想要使用RDD.count()

val count = logfiles.filter(line => line.contains("jpg")).count()

答案 1 :(得分:1)

根据RDD文件的建议

def take(num: Int): Array[T] 

返回Array而不是RDD,因此count函数不起作用。

同样在RDD中,没有选择10个元素的本地方式。如果你真的想这样做,你应该将RDD转换为数据帧并在数据帧中使用限制函数

  df.limit(10) will return a dataframe of 10 elements 

您可以在哪里执行计数操作