2016-12-20 91 views

回答

2

CoGroupByKey需要知道哪些關鍵CoGroup通過 - 這是KV<K, V>KV是與此集合在這個鍵關聯的值。對幾個集合進行共同分組的結果會爲每個集合中的每個關鍵字提供此關鍵字的所有值。

因此,您需要將PCollection<TableRow>轉換爲PCollection<KV<YourKey, TableRow>>,其中YourKey是您想要連接它們的鍵的類型,例如,在你的情況下,也許它可能是StringInteger,或其他東西。

進行轉換的最佳轉換大概是WithKeys。例如。這裏有一個示例代碼轉換PCollection<TableRow>String類型的假想userId場鍵控PCollection<KV<String, TableRow>>

PCollection<TableRow> rows = ...; 
PCollection<KV<String, TableRow>> rowsKeyedByUser = rows 
    .apply(WithKeys.of(new SerializableFunction<TableRow, String>() { 
    @Override 
    public String apply(TableRow row) { 
    return (String)row.get("userId"); 
    } 
})); 
相關問題