当前位置: 首页 > 知识库问答 >
问题:

Scala-没有足够的参数用于方法计数

荀增
2023-03-14

我对Scala和Spark RDD编程相当陌生。我使用的数据集是一个CSV文件,其中包含电影列表(每部电影一行)及其关联的用户评分(以逗号分隔的评分列表)。CSV中的每一列都代表一个不同的用户,以及他/她对电影的评价。因此,用户1对每部电影的评分在左侧第二列中表示:

示例输入:

蜘蛛侠,1,2,3,3

睡眠博士,4,4,,1

我得到以下错误:

Task4.scala:18: error: not enough arguments for method count: (p: ((Int, Int)) => Boolean)Int.
Unspecified value parameter p.
    var moviePairCounts = movieRatings.reduce((movieRating1, movieRating2) => (movieRating1, movieRating2, movieRating1._2.intersect(movieRating2._2).count()

当我执行下面的几行时。对于下面的程序,第二行代码拆分由“,”分隔的所有值,并生成以下结果:

(蜘蛛侠[1,0],[2,1],-1,2],[3,3],[3,4])(睡眠博士[4,0],[4,1],-1,2],-1,3],[1,4])

在第三行,获取count()会抛出一个错误。对于每一部电影(一行),我都会尝试获取公共元素的数量。在上面的例子中,[-1,2]显然是蜘蛛侠和睡眠博士共同拥有的元素。

    val textFile = sc.textFile(args(0))
    
    var movieRatings = textFile.map(line => line.split(","))
                                .map(movingRatingList => (movingRatingList(0), movingRatingList.drop(1)
                                .map(ranking => if (ranking.isEmpty) -1 else ranking.toInt).zipWithIndex));
                                

    
    var moviePairCounts = movieRatings.reduce((movieRating1, movieRating2) => (movieRating1, movieRating2, movieRating1._2.intersect(movieRating2._2).count() )).saveAsTextFile(args(1));

我对3号线的目标输出如下:

(蜘蛛侠,睡眠博士,1)--

谁能给点建议吗?

共有2个答案

公孙盛
2023-03-14

错误消息似乎很清楚:count接受一个参数,但在您的调用中,您正在传递一个空参数列表,即零参数。您需要将一个参数传递给count

季骏祥
2023-03-14

要获取集合中的元素数,请使用lengthsizecount()返回满足某些附加条件的元素数。

或者,您可以使用count对第一个集合的元素进行计数,从而避免构建完整的交叉点,第二个集合包含:

movieRating1._2.count(movieRating2._2.contains(_))
 类似资料:
  • 我试图使用Kotlin在我的Android应用程序中复制以下ListView:https://github.com/bidrohi/kotlinListView。 不幸的是,我得到了一个错误,我无法解决自己。下面是我的代码: 布局如下:https://github.com/bidrohi/kotlinlistview/tree/master/app/src/main/res/layout 我得到的

  • 问题内容: 我对包含不带参数的泛型方法的代码感到困惑,所以这种方法的返回泛型类型是什么,例如: 这是通过以下方式调用的: 接口定义为: 我的问题:是否接受字符串,对象和所有内容。那么什么时候将通用返回类型指定为String呢? 问题答案: 编译器从 LHS 分配中使用的具体类型推断出类型。 从此链接: 如果类型参数未出现在方法参数的类型中,则编译器无法通过检查实际方法参数的类型来推断类型参数。如果

  • 我在使用Apache Flink Scala API时遇到问题 例如,即使我从官方文档中获取示例,scala编译器也会给我大量的编译错误。 代码: Scala IDE为行 这不仅仅是方法:即使我从文件中读取数据,然后尝试做一些像

  • 我想要的:我在下面试过了,但它不起作用。

  • 我有一个比较来自两个不同endpoint的响应的函数。它看起来像这样: 如您所见,调用方可以传入有关如何从两个终结点的响应生成响应字符串的函数。我还有一个响应生成器的默认函数。它们看起来像这样: 这在IntelliJ中编译得很好。然而,当我运行gradle构建时,它失败了,并显示错误 我做错了什么?我在毕业设计中使用了Kotlin 1.6.10。

  • 我试图验证方法的参数是否为空,但我没有找到解决方案。。。 有人可以告诉我该怎么做吗? 我正在尝试这样的事情: