在Scalding中考虑以下代码:
我们说我在烫伤TypedPipe[(Int, Int)]
中有以下元组:
(1, 2)
(1, 3)
(2, 1)
(2, 2)
在此管道上,我可以调用groupBy(t => t._1)
生成Grouped[Int, (Int, Int)]
,它仍然代表相同的数据,但按元组的第1项分组。
现在,让我们说我对得到的对象求和,所以总流量是这样的:
def sumGroup(a : TypedPipe[(Int, Int)]) : Grouped[Int, (Int, Int)] =
{
a.groupBy(t => t._1).sum
}
在初始示例中执行此操作的结果将导致以下元组:
(1, (2, 5))
(2 (4, 3))
现在我们确定每个键只有一个项目(对于键#34; 1",我们只有一个结果元组),因为这是sum
的行为。但是,sum返回的类型仍然是Grouped[Int, (Int, Int)]
,这并没有表明每个键只能有一个项目的事实。
是否有像Grouped[K, V]
这样的特定类型会传达出只有一个" V"给定" K"的价值价值?如果没有,为什么会这样?
当我们可以确定双方每个键确实只有一个值时,优化连接似乎很有用。