Scala 错误:值toList不是(对象,对象)-Spark Shell的成员 val cooccurrences=orders.map(order=> ( 秩序, order.\u 2.productIterator.toList.combinations(2.map)(order\u pair=> ( if(顺序对(0)。\u2

Scala 错误:值toList不是(对象,对象)-Spark Shell的成员 val cooccurrences=orders.map(order=> ( 秩序, order.\u 2.productIterator.toList.combinations(2.map)(order\u pair=> ( if(顺序对(0)。\u2,scala,machine-learning,apache-spark-mllib,Scala,Machine Learning,Apache Spark Mllib,当我提交最后一个方法时,出现以下错误: val cooccurrences = orders.map(order => ( order._1, order._2.productIterator.toList.combinations(2).map(order_pair => ( if (order_pair(0)._2 < order_pair(1)._2) (order_pair(

当我提交最后一个方法时,出现以下错误:

  val cooccurrences = orders.map(order =>
  (
    order._1,
    order._2.productIterator.toList.combinations(2).map(order_pair =>
        (
            if (order_pair(0)._2 < order_pair(1)._2)
                (order_pair(0)._2, order_pair(1)._2)
            else
                (order_pair(1)._2, order_pair(0)._2),
            order_pair(0)._1 * order_pair(1)._1
        )
    )
  )
)
:46:错误:值\u 2不是任何
if(顺序对(0)。\u2<顺序对(1)。\u2)
^
:47:错误:值_2不是任何
(顺序对(0)。\u2,顺序对(1)。\u2)
^
:47:错误:值_2不是任何
(顺序对(0)。\u2,顺序对(1)。\u2)
^
:49:错误:值_2不是任何
(顺序对(1)。2,顺序对(0)。2),
^
:49:错误:值_2不是任何
(顺序对(1)。2,顺序对(0)。2),
^
:50:错误:值_1不是任何
订单对(0)。\u 1*订单对(1)。\u 1
^
有人知道我为什么会犯这样的错误吗?我需要在方法之前声明顺序吗


非常感谢

看起来您正试图按
顺序将
toList
应用于
对象<代码>顺序
的类型为
(对象,对象)
,因此
顺序。_2
的类型为
对象
,没有
列表
方法。 我假设您已经考虑将其应用于
(Order,Order)
对象的序列


一般来说,我建议为更多或更少复杂的类型显式地注释类型注释。

顺序。_2
是一个元组,而
toList
方法不直接应用于元组。您可以使用
order.\u 2.productIterator.toList
在此处获取列表

 <console>:46: error: value _2 is not a member of Any
                   if (order_pair(0)._2 < order_pair(1)._2)
                                     ^
<console>:47: error: value _2 is not a member of Any
                       (order_pair(0)._2, order_pair(1)._2)
                                      ^
<console>:47: error: value _2 is not a member of Any
                       (order_pair(0)._2, order_pair(1)._2)
                                                        ^
<console>:49: error: value _2 is not a member of Any
                       (order_pair(1)._2, order_pair(0)._2),
                                      ^
<console>:49: error: value _2 is not a member of Any
                       (order_pair(1)._2, order_pair(0)._2),
                                                        ^
<console>:50: error: value _1 is not a member of Any
                   order_pair(0)._1 * order_pair(1)._1
                                 ^

您可以映射生成
订单的交易,这是一个
RDD
,其中每个元素的形式为
(valueOfId、valueOfCat、valueofQuantity)
。当你调用
order.\u 2.toList
你在一个对象
valueOfCat
上调用它,这个对象没有这样的方法(它不是一个集合)。

谢谢你的帮助Samar:)我试图用这个新句子来获取列表,但它仍然给我错误。我已经从订单映射
(x.get(“cat”)、x.get(“quantity”)
更新了上面的代码和错误。您的订单似乎总是一个2元素元组。是这样吗?如果是这样,那么我看不出组合(2)
步骤的意义。此外,map函数中的order_对需要一个两元素的元组列表。对于组合(2),我试图知道我在数据中有多少产品组合,但它仍然给我一个错误:(:44:error:value-toList不是(Object,Object)order的成员(order_pair=>^这不是一个可以解决您问题的复制粘贴代码;它只是解释问题所在。请阅读整篇文章。很抱歉,我对Scala编程非常陌生……我正在尝试了解我有哪些产品组合(如果产品a“连接”到B).如果我理解创建协同发生时,我需要调用order.2_toList来调用3个对象(id、cat、quantity),对吗?我不知道怎么做:(
val orders = transactions.map { x => (
    x.get("id"),
    (x.get("cat"), x.get("quantity")))
}