I 구글 BigQuery를 표하고 내가 술집 서브 주제로 전체 테이블을 스트리밍 할이스트림의 BigQuery 테이블/
을 할 수있는 쉬운/빠른 방법이 될해야하는지?
미리 감사드립니다.
I 구글 BigQuery를 표하고 내가 술집 서브 주제로 전체 테이블을 스트리밍 할이스트림의 BigQuery 테이블/
을 할 수있는 쉬운/빠른 방법이 될해야하는지?
미리 감사드립니다.
정말 테이블 크기에 따라 다릅니다.
작은 테이블 (수천 개의 레코드, 몇 개의 열)은 전체 테이블을 쿼리하고 응답을 JSON 배열로 변환하고 pub-sub로 푸시하는 프로세스를 설정할 수 있습니다.
가 큰 테이블이 있다면 (수백만/기록 수십억, 수백 개의 컬럼) 당신이 줄을 파일로 내 보낸 다음 술집 서브
그것은 또한 당신의 분할 정책에 따라 달라집니다로/배를 준비하는 - 테이블을 날짜별로 파티션하도록 설정하면 내보내기 대신 다시 쿼리 할 수 있습니다.
마지막으로 중요한 것은 빈도에 달려 있습니다. 이것은 한 번 거래 (내보내기) 또는 연속 프로세스 (최신 데이터 만 쿼리하기 위해 테이블 데코레이터 사용)입니까?
정말로 도움이되는 답변을 원하면 좀 더 자세한 정보가 필요합니다.
편집 테이블의 크기에 대한 귀하의 의견을 바탕으로
, 내가 가장 좋은 방법은 스크립트를 가지고있을 거라고 생각하는 것 : 줄 바꿈으로 GCS에
내보내기 테이블 구분 된 JSON
파일을 처리하고 (행 단위로 읽음) 펍 서브
대부분의 프로그래밍 언어에는 client libraries이 있습니다. 필자는 Python과 유사한 작업을 수행했으며, 상당히 간단합니다.
내가 아는 가장 쉬운 방법은 BigQuery 및 Pub/Sub에 액세스하는 방법을 기본적으로 알고있는 Google Cloud Dataflow를 이용하는 것입니다.
이론적으로 다음과 같은 파이썬 선으로 쉽게해야한다 :
p = beam.Pipeline(options=pipeline_options)
tablerows = p | 'read' >> beam.io.Read(
beam.io.BigQuerySource('clouddataflow-readonly:samples.weather_stations'))
tablerows | 'write' >> beam.io.Write(
beam.io.PubSubSink('projects/fh-dataflow/topics/bq2pubsub-topic'))
파이썬/데이터 흐름/BigQuery에/PubSub 작동하지 않는 오늘날의 조합 (파이썬 데이터 흐름이 keep an eye on the changelog 베타 버전이지만).
우리는 자바에서도 동일한 작업을 수행 할 수 있으며 잘 작동합니다. 방금 테스트했습니다.
gcloud --project myproject beta pubsub subscriptions pull --auto-ack sub1
호스트 데이터 흐름 스크린 샷 :
메시지가 함께있는 경우Pipeline p = Pipeline.create(PipelineOptionsFactory.fromArgs(args).withValidation().create());
PCollection<TableRow> weatherData = p.apply(
BigQueryIO.Read.named("ReadWeatherStations").from("clouddataflow-readonly:samples.weather_stations"));
weatherData.apply(ParDo.named("tableRow2string").of(new DoFn<TableRow, String>() {
@Override
public void processElement(DoFn<TableRow, String>.ProcessContext c) throws Exception {
c.output(c.element().toString());
}
})).apply(PubsubIO.Write.named("WriteToPubsub").topic("projects/myproject/topics/bq2pubsub-topic"));
p.run();
테스트 : 그것은 로컬, 또한 호스트 데이터 흐름 주자로 실행
github에서이 예제의 전체 스크립트를 사용할 수 있습니까? 나는 pub/sub에서 bigquery로 이것을 역으로 전개하는 데 관심이있다. 감사 – Evan
테이블에 3M 행과 ~ 7 개의 열이 있습니다 – MoShe
한 번 업로드하거나 계속 하시겠습니까? –
계속되지는 않지만 한 번 해보고 싶습니다. :) – MoShe