2016-12-20 12 views
0

BigQueryの2つのテーブルからデータを抽出し、それをCoGroupByKeyで結合しようとしています。 BigQueryの出力はPCollection<TableRow>ですが、CoGroupByKeyにはPCollection<KV<K,V>>が必要です。 PCollection<TableRow>からPCollection<KV<K,V>>に変換するにはどうすればよいですか?でCoGroupにどのキーを知っている必要がありCoGroupByKeyPCollection <TableRow>からPCollectionに変換<KV<K,V>>

答えて

2

- これはKV<K, V>Kあり、そしてVは、このコレクションでは、このキーに関連付けられた値です。複数のコレクションを同じグループにまとめると、各キーごとに、このキーを持つすべての値が各コレクションに表示されます。

PCollection<TableRow>からPCollection<KV<YourKey, TableRow>>に変換する必要があります。ここで、YourKeyは、参加するキーのタイプです(例:あなたの場合はおそらくString、またはIntegerなどである可能性があります。

変換を行うための最適な変換はおそらくです。例えば。ここではタイプStringの仮想的なuserIdフィールドをキーとPCollection<KV<String, TableRow>>PCollection<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"); 
    } 
})); 
関連する問題