GoogleデータフローCoGbkResultを使用して2つのテーブルを内部結合として結合しています。Google Dataflow内部結合はリスト内の結合を与えます[]
テーブルに正常に参加することができました。 出力をテキストファイルに書き出していて、結合を確認できました。しかし、結合は一致する結果をリストに入れます。
このようなものです。
301%103%203%2017-09-20 07:49:46[2%google, 3%google, 1%microsoft]
301%105%200%2017-09-17 11:48:59[2%google, 3%google, 1%microsoft]
301%103%203%2017-09-20 07:49:46
はtable_1からです。 2%google
、3%google
、1%microsoft
は、表2の結合の結果と一致しています。私は私が一列に出力を得ることができるか疑問
public void processElement(ProcessContext c) {
KV<String, CoGbkResult> e = c.element();
String Ad_ID = e.getKey();
Iterable<String> Ad_Info = null;
Ad_Info = e.getValue().getAll(AdInfoTag);
for (String ImpressionInfo : c.element().getValue().getAll(ImpressionInfoTag)) {
// Generate a string that combines information from both collection values
c.output(KV.of(Ad_ID, "%" + ImpressionInfo + Ad_Info));
}
}
:後
は私processElement
方法です。例:
301%103%203%2017-09-20 07:49:46 2%google
01%103%203%2017-09-20 07:49:46 3%google
01%103%203%2017-09-20 07:49:46 1%microsoft
301%105%200%2017-09-17 11:48:59 2%google 1%microsoft
301%105%200%2017-09-17 11:48:59 3%google
301%105%200%2017-09-17 11:48:59 1%microsoft
出力のフォーマット方法を完全には明確にしていません。特に、あなたの例では、接頭辞 "301%105%200%2017-09-17 11:48:59"を持つ3つの異なる行があり、そのうちの1行には "2%google"と "1%microsoft"ライン上に。それは意図的なのでしょうか? –
@Ben Chambers ...これは、別々の解析を行うときに機能します。問題は、私はtoString – KosiB