2016-12-08 4 views
1

Google Cloud Storage에서 CSV 파일을 가져 와서 병합하고 BigQuery에 쓰도록 예정된 ETL 작업을 작성하려고합니다.Google Cloud Dataflow CSV 파일 병합 및 BigQuery 작성 방법

CSV의 읽기 부분을 파악할 수 있었고 데이터 흐름 문서가 병합 옵션을 이해하는 데 도움이되지 않기 때문에 병합이 중단되었습니다.

PCollection<String> File1 = p.apply(TextIO.Read.from("gs://**/DataFile1.csv")); 
PCollection<String> File2 = p.apply(TextIO.Read.from("gs://**/DataFile2.csv")); 

이미 정의 된 BigQuery 테이블에 file1 및 file2 내용을 병합하고 기록하십시오.

파일 1 예 :

Order,Status,Follow,substatus Order1, open, Yes, staged Order2, InProcess,No, withbackoffice

파일 2 예 :

Order,Status,Follow,substatus Order3, open, Yes, staged Order4, InProcess,No, withbackoffice BigQuery를 테이블 컬럼 내가 함께 병합하는 방법을 알고

Order,Status,Follow,substatus - Order1, open, Yes, staged - Order2, InProcess,No, withbackoffice - Order3, open, Yes, staged - Order4, InProcess,No, withbackoffice

으로 할 수 있어야한다 평범한 자바지만, 입을 열지 못한다. 클라우드 데이터 흐름에서이 작업을 수행하는 데 도움이되는 적절한 PTransform을 제거하십시오. 친절하게 도와주세요! 감사.

+0

정확히 병합을 의미합니까? 교차 가입/카 티지 제품? CoGroupByKey 변환 (https://cloud.google.com/dataflow/model/group-by-key#join)을 사용할 수 있습니다. –

+0

응답 해 주셔서 감사합니다. 나는 연합을 의미한다. 위의 예 에서처럼 파일 1에는 n 개의 행이 있고 파일 2에는 m 개의 행이 있습니다. CSV 헤더는 동일하므로 스키마가 동일합니다. BigQuery의 출력은 CSV 헤더 및 행 n + m이있는 열입니다. 단순한 연합. 또한 이전에 링크를 보았습니다. 그것은이 주제에 대한 예제 나 도움을 제공하지 않습니다. – Raju

+0

여기에 설명 된대로 Bigquery에 두 개의 pcollection을 간단하게 작성할 수 있습니다. https://cloud.google.com/dataflow/model/bigquery-io#writing-to-bigquery (BigQueryIO.Write.WriteDisposition.WRITE_APPEND를 사용하는 것 같습니다)). –

답변

0

두 개의 PCollection을 하나의 "연결"하는 방법을 묻는 것처럼 보입니다. 그 대답은 Flatten transform입니다. 그런 다음 연결된 컬렉션을 일반적인 방식으로 BigQuery에 작성할 수 있습니다.

+0

고마워요! Flatten 변환은 트릭을 한 것입니다! – Raju

관련 문제