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
)
)
)
)
当我提交最后一个方法时,我收到以下错误:
<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
^
任何人都知道我为什么会收到此错误?我需要在方法之前声明订单吗?
非常感谢!
答案 0 :(得分:0)
您似乎正在尝试将toList
应用于Object
来电中的order._2.toList
。 order
的类型为(Object, Object)
,因此order._2
的类型为Object
,但没有toList
方法。
我假设您已将其应用于(Order, Order)
个对象的序列。
一般来说,我建议为更多或更少复杂的类型显式注释类型注释。
答案 1 :(得分:0)
值order._2
是一个元组,toList
方法不直接应用于元组。您可以使用order._2.productIterator.toList
获取列表
答案 2 :(得分:0)
下面:
val orders = transactions.map { x => (
x.get("id"),
(x.get("cat"), x.get("quantity")))
}
您可以映射orders
中产生的RDD
的事务,其中每个元素的格式为(valueOfId, valueOfCat, valueofQuantity)
。当你致电order._2.toList
时,你在一个没有这种方法的对象valueOfCat
上调用它(它不是一个集合)。