我无法理解 Apache Beam 中的连接(例如http://www.waitingforcode.com/apache-beam/joins-apache-beam/read http://www.waitingforcode.com/apache-beam/joins-apache-beam/read) 可以连接整行。
例如:
我有 2 个 CSV 格式的数据集,其中第一行是列标题。
首先:
a,b,c,d
1,2,3,4
5,6,7,8
1,2,5,4
第二:
c,d,e,f
3,4,9,10
我想在 c 列和 d 列上进行左连接,这样我最终会得到:
a,b,c,d,e,f
1,2,3,4,9,10
5,6,7,8,,
1,2,5,4,,
然而,Apache Beam 上的所有文档似乎都说 PCollection 对象需要是类型KV<K, V>
加入时,所以我将我的 PCollection 对象分解为一个集合KV<String, String>
对象(其中键是列标题,值是行值)。但在这种情况下(你只有一个带有值的键),我不知道如何维护行格式。 KV(c,7) 如何“知道”KV(a,5) 来自同一行?是Join https://beam.apache.org/documentation/sdks/javadoc/2.1.0/org/apache/beam/sdk/extensions/joinlibrary/Join.html到底是为了这种事情吗?
到目前为止我的代码:
PCollection<KV<String, String>> flightOutput = ...;
PCollection<KV<String, String>> arrivalWeatherDataForJoin = ...;
PCollection<KV<String, KV<String, String>>> output = Join.leftOuterJoin(flightOutput, arrivalWeatherDataForJoin, "");