在一行代码中,我试图获取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
答案 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
您可以在哪里执行计数操作