write_truncate를 사용하여 Google Dataflow / Beam을 통해 Biqquery 파티션 테이블에 데이터로드

Sirius 02/21/2017. 1 answers, 336 views
python google-bigquery google-bigquery google-cloud-dataflow google-cloud-dataflow apache-beam

그래서 우리가 매일 "WRITE_TRUNCATE" 옵션을 사용하여 작업 한 새로운 테이블을 생성하기 위해 사용했던 기존 설정은 우리의 데이터 플로우 작업을 통해 분할 된 테이블을 사용하도록 코드를 업데이트 할 때 write_truncate와 함께 작동하지 않습니다.

그것은 쓰기 기질 "WRITE_APPEND"( 에서 이해, 내가 테이블을 삭제하려고 시도하고, 그것을 다시 시도)에서 설정으로 완벽하게 작동합니다. 왜냐하면 나는 테이블 장식자를 제공하기 때문에 새로운 테이블을 만들지 못합니다. 표.

파이썬 코드를 사용한 샘플 코드 조각 :

beam.io.Write('Write({})'.format(date), beam.io.BigQuerySink(output_table_name + '$' + date, create_disposition=beam.io.BigQueryDisposition.CREATE_NEVER, write_disposition=beam.io.BigQueryDisposition.WRITE_TRUNCATE) 

오류를 제공합니다 :

Table IDs must be alphanumeric

테이블을 다시 만들려고했기 때문에 인수에 파티션 데코레이터를 제공합니다.

다음은 내가 시도한 것들 중 일부입니다 :

  1. write_disposition을 WRITE_APPEND로 업데이트하면 작동하지만 동일한 날짜에 다시 실행하면 데이터가 중복되므로 목적에 맞지 않습니다.
  2. 사용

bq --apilog /tmp/log.txt load --replace --source_format=NEWLINE_DELIMITED_JSON 'table.$20160101' sample_json.json

명령, 어떤 로그를 볼 수 있는지, 내가 찾은 링크 를 기반으로 잘라내는 방법이 실제로 작동하는지 확인합니다.

  1. 다른 링크를 사용해 보았지만 이것도 WRITE_APPEND를 사용합니다.

write_truncate 메서드를 사용하여 데이터 흐름 작업에서 분할 된 테이블에 쓰는 방법이 있습니까?

추가 세부 정보가 필요한지 알려주십시오. 감사

4 Comments
Pablo 02/21/2017
파티션 데코레이터로 테이블을 만들지 못하는 것은 버그 일 수 있습니다. 확인하고 다시 연락하도록하겠습니다.
Pablo 02/21/2017
'테이블 ID는 영숫자 여야합니다.'에 대한 스택 추적을 제공 할 수 있습니까?
Pablo 02/21/2017
나는 IO dev에 확인했다. 이것이 현재 지원되지 않는 것 같습니다. : /
Sirius 02/22/2017
Pablo :)에 대한 답장을 보내 주셔서 감사합니다, 나는 단지 TRUNCATE에 대한 테이블을 지우지 않고 그 파티션에 대한 모든 행을 지우지 않기를 바랄뿐입니다. 그러나 그런 식으로는 작동하지 않습니다.

1 Answers


community wiki 03/17/2017.

이 시점에서 지원되지 않는 것 같습니다. IO dev에서 찾은 신용은 @Pablo로 이동합니다.

Github 페이지의 Beam 문서 에 따르면, JIRA 페이지 는 그러한 기능을 요청하는 데 적절할 것입니다. 기능 요청을 제출하고 의견에 링크를 게시하여 커뮤니티의 다른 사람들이 후속 조치를 취하고 지원을받을 수 있도록하는 것이 좋습니다.

Related questions

Hot questions

Language

Popular Tags