You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@beam.apache.org by "Chamikara Madhusanka Jayalath (Jira)" <ji...@apache.org> on 2021/10/09 01:02:00 UTC
[jira] [Commented] (BEAM-12986) WriteTables leaves behind temporary
tables on job failure
[ https://issues.apache.org/jira/browse/BEAM-12986?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17426433#comment-17426433 ]
Chamikara Madhusanka Jayalath commented on BEAM-12986:
------------------------------------------------------
This is a known issue. Part of the problem is that currently there's no runner-independent way to cleanup resources when a Beam pipeline fails.
I think aworkaround would be to periodically look for tables that corresponding to failed jobs and delete such tables. The load job names are standardized and follows the pattern here: [https://github.com/apache/beam/blob/49a96b9ca510974cc81231b22ab05a7ae4485888/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigquery/BigQueryResourceNaming.java#L36]
Here "JOB_ID" should map to the ID of the failed job (for supported runners).
> WriteTables leaves behind temporary tables on job failure
> ---------------------------------------------------------
>
> Key: BEAM-12986
> URL: https://issues.apache.org/jira/browse/BEAM-12986
> Project: Beam
> Issue Type: Improvement
> Components: extensions-java-gcp, io-java-gcp
> Affects Versions: 2.29.0
> Reporter: Jan
> Priority: P2
>
> I'm running a job that writes to a BigQuery table using `BigQueryIO.writeTableRows().to(
> new SerializableFunction<ValueInSingleWindow<TableRow>, TableDestination>)`.
>
> I'm noticing that when my job fails, it leaves behind temporary tables (`beam_bq_job_LOAD_*`) in the destination dataset. These tables are created by load jobs started here:
>
> [https://github.com/apache/beam/blob/master/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigquery/WriteTables.java#L273-L284)|https://github.com/apache/beam/blob/master/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigquery/WriteTables.java#L273-L284),]
>
> I'd like to specify a temporary dataset for these load job result tables, but I don't see a way to specify one using the Java SDK. It seems like the load job destination is inferred by changing the table id of the final destination:
>
> [https://github.com/apache/beam/blob/master/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigquery/WriteTables.java#L255]
>
> which makes me think that the configuration I want to set doesn't exist. Is there a workaround to avoid having these tables be left around when the job fails? Could the option be added?
--
This message was sent by Atlassian Jira
(v8.3.4#803005)