Java 使用ApacheBeam将insert发送到BigQuery时如何指定insertId
BigQuery支持流式插入的重复数据消除。如何使用Apache Beam使用此功能 为了帮助确保数据一致性,可以为每个插入的行提供insertId。BigQuery会记住此ID至少一分钟。如果您尝试在该时间段内流式传输同一组行,并且设置了insertId属性,则BigQuery将使用insertId属性尽力消除重复数据。您可能必须重试插入,因为在某些错误情况下无法确定流式插入的状态,例如系统和BigQuery之间的网络错误或BigQuery内部错误。如果重试插入,请对同一组行使用相同的插入ID,以便BigQuery可以尝试消除重复数据。有关更多信息,请参阅流式插入的疑难解答 我在Java文档中找不到这样的功能。 在中,他建议在TableRow中设置insertId。这是正确的吗 BigQuery客户端库具有此功能Java 使用ApacheBeam将insert发送到BigQuery时如何指定insertId,java,google-cloud-platform,google-bigquery,apache-beam,apache-beam-io,Java,Google Cloud Platform,Google Bigquery,Apache Beam,Apache Beam Io,BigQuery支持流式插入的重复数据消除。如何使用Apache Beam使用此功能 为了帮助确保数据一致性,可以为每个插入的行提供insertId。BigQuery会记住此ID至少一分钟。如果您尝试在该时间段内流式传输同一组行,并且设置了insertId属性,则BigQuery将使用insertId属性尽力消除重复数据。您可能必须重试插入,因为在某些错误情况下无法确定流式插入的状态,例如系统和BigQuery之间的网络错误或BigQuery内部错误。如果重试插入,请对同一组行使用相同的插入I
- Pub/Sub+Beam/Dataflow+BigQuery:“恰好一次”应该得到保证,您不需要太担心这一点。当您要求Dataflow使用而不是现在使用插入到BigQuery时,这种保证更为有力
- Kafka+Beam/Dataflow+BigQuery:如果一条消息可以从Kafka发出多次(例如,如果制作人重试插入),则需要注意重复数据消除。无论是在BigQuery中(根据您的注释,当前实现),还是在带有
转换的数据流中.apply(Distinct.create())
.apply(Distinct.create())
转换的信息。因此,如果你能在文件中提到这一点,那将是很有帮助的。