GCP
GCP14 :: streaming 데이터 처리
GCP14 :: streaming 데이터 처리
2020.08.18ㅡ. 시작 클라우드 pub/sub 을 이용합니다. (서버리스 실시간 메시지 서비스) 클라우드 pub/sub 의 기능은 초당 백만 개 이상의 메시지로 확장시킬 수 있습니다. 전체 데이터 플로우는 빅쿼리 이벤트 테이블에서 데이터를 읽어들여서 클라우드 pub/sub로 메시지를 송신하는 것을 의미합니다. pub/sub으로 전송되는 코드가 실패할경우에 자동으로 재시작할 수 있도록 구글 컨테이너 엔진을 사용해 도커 컨테이너에서 시뮬레이션을 스크립트를 다시 재시작 해야 합니다. ㅡ. workflow bigQuery에서 데이터를 불러와서 topic에 넣고 subscription 에서는 topic의 내용을 받아와서 dataflow로 ETL처리후에 bigQuery로 내보내는 과정을 수행합니다. ㅡ. 정지시간 pub/sub..
GCP13 :: dataflow Map 활용, Lambda
GCP13 :: dataflow Map 활용, Lambda
2020.08.18Lambda 를 사용하기 전 import apache_beam as beam def strip_header_and_newline(text): return text.strip('\n') def strip_header_and_newline2(text): return text.strip('#') with beam.Pipeline() as pipeline: plants = ( pipeline | 'Gardening plants' >> beam.Create([ '# 🍓Strawberry\n', '# 🥕Carrot\n', '# 🍆Eggplant\n', '# 🍅Tomato\n', '# 🥔Potato\n', ]) | 'Strip header' >> beam.Map(strip_header_and_newline) #| '..
GCP12 :: Apache Beam, Map() vs FlatMap()
GCP12 :: Apache Beam, Map() vs FlatMap()
2020.08.15ㅡ. Map() vs FlatMap() Map() 에서는 Input 과 Output 이 일대일 관계로 나타나 있습니다. FlatMap() 에서는 Input 에 대해 여러개의 출력을 반환할 수 있습니다. 또한, FlatMap() 과 함께 사용되는 yield 키워드는 더이상 반환할 데이터가 없을 때까지 한번, 하나 데이터를 반환하게 됩니다. 위 메소드는 병렬처리할 때 방법이 서로 다릅니다.
GCP11 :: Google Cloud Platform 명령어 정리
GCP11 :: Google Cloud Platform 명령어 정리
2020.08.15Google Cloud Platform 관련 실습을 진행하다 모르는 명령어 관련 정리 하고자 합니다. 1) bq mk flights bq 명령줄 도구를 사용해서 쿼리를 실행하고 데이터를 로드할 수 있습니다. e.g) bq mk new_dataset or bq mk new_dataset.new_table --bq help CLI 명령어로 쳐보면 mk는 Create a dataset, table, view, or transfer configuration with this name 으로 설명되어 있습니다. --bq help load 에서 구체적인 스키마에 관련된 정보를 확인해볼 수 있습니다.
GCP10 :: Dataflow 정리
GCP10 :: Dataflow 정리
2020.08.14ㅡ. Dataflow 란? Dataflow 란 무엇일까? 많은 데이터를 가져와서 (수 GB, 수 TB) 데이터와 결합 하여 의미 있는 데이터를 산출 하는 과정을 의미합니다. 배치 과정에서 위에서와 같이 말할 수 있지만 스트리밍 변환 과정도 존재합니다. 예를들어, 스트리밍 변환은 데이터가 도착할때 추가적인 데이터를 추가해서 반환한다던지, Filter 를 거쳐서 해당 데이터만 반환한다던지 특징이 있습니다. ㅡ. Apache Beam 이러한 로직들을 구현하게 도와주는것이 Apache Beam 에서 코드를 작성하면 됩니다. 그래서 Apache Beam으로 데이터 파이프라인을 구축하는 방법에 대해 알아야 합니다. Apache Beam에서 파이프라인은 상위 컨테이너(파이프라인) 파이프라인을 통해 흘러가는 데이터(P..
GCP09 :: Apache Beam Functions
GCP09 :: Apache Beam Functions
2020.08.14Filter Filter를 위한 함수를 생성하고 datapipeline을 생성할때 해당 함수를 걸어주면 Filter 가 진행됩니다. e.g) | 'Filter' >> beam.Filter([function-name]) 굳이, 함수를 생성하지 않고도 lambda 를 생성하여 Filter를 거는 방법도 있습니다. e.g) beam.Filter(lambda plant : plant['duration'] == 'perennial' ) => key가 duration 이고 value가 perennial 인것을 Filter Map str.strip function을 사용하는데 strip가 의미하는것은 화이트스페이스, \n, tabs등을 제거해서 보여준다. 이외에도 replace 기능들을 제공해줍니다. Pardo 한줄..
GCP07 :: Dataflow(작성중)
GCP07 :: Dataflow(작성중)
2020.08.12기본적으로 Input -> PCollection -> PCollection -> Output (workflow) 를 가집니다. Google Cloud Platform Console에 들어가보면 Stream, Batch 각각에 대해 다양한 템플릿을 제공하고 있습니다. 프로젝트 방향에 맞게 데이터파이프라인을 구축하는데 많은 도움이 됩니다. 임시 위치는 구글 문서를 참고하면 스테이징된 파이프라인 작업 라고 나와있다. 실제 파이프라인 작업과 유사한 상태를 의미한다고 생각합니다. ㅡ. Custom Template 구글 문서를 참고해보면 런타임 매개변수를 사용해서 파이프라인 내에서 실행되는 함수(e.g, DoFn) 전달해서 템플릿 기반의 파이프라인을 실행 및 맞춤 설정할 수 있다고 소개 되어 있습니다. 즉, 런타임..
GCP06 :: Google Cloud Pub/Sub Dataflow를 사용한 Stream 처리방법
GCP06 :: Google Cloud Pub/Sub Dataflow를 사용한 Stream 처리방법
2020.08.12템플릿에서 작업 만들기를 진행하였습니다. `Cloud Dataflow template` 부분에서 PubSub to BigQuery를 선택합니다. Pub/Sub Topic to BigQuery 선택 하였습니다. (수정) 그 다음에 pub/sub 으로 가서 주제를 생성해줍니다. 이름은 pubsubdemo 로 설정하였습니다. 주제 이름을 복사해서 dataflow의 Input Pub/Sub Topic에 넣어줍니다. bigQuery로 이동해서 데이터세트를 생성하였습니다. demo 그리고 테이블도 생성하였습니다. 다시 dataflow로 가서 BigQuery output table에 [project-id]:[dataset-name].[table-name] 으로 입력합니다. storage위치는 gs://[project..
GCP05 :: Google Cloud Pub/Sub example
GCP05 :: Google Cloud Pub/Sub example
2020.08.12google cloud pub/sub 동작 원리를 알기 위해 간단한 예제를 수행해 보겠습니다. test라는 주제를 만들고 전송 유형(pull), 구독 만료(31일), 확인 기간(10초), 메시지 보관 기간(7일) 로 구독을 만들었습니다. 다시 구독 탭으로 돌아오면 구독이름과 주제이름으로 만들어진것을 확인할 수 있습니다. 메시지를 게시하기 위해서 cloud shell 을 이용해 추가하였습니다. 혹은 console 에서 직접 추가할 수 있습니다. 위 CLI를 통해서 게시된 메시지를 pull할 수 있습니다. 위에는 메시지를 게시 하지 않았습니다. Hello-World 를 게시하고 CLI에서 메시지를 pull하면 확인할 수 있습니다.
GCP04 :: Google Cloud Pub/Sub Dataflow를 사용한 Stream 처리방법[작성중]
GCP04 :: Google Cloud Pub/Sub Dataflow를 사용한 Stream 처리방법[작성중]
2020.08.12Cloud Storage에 포함되어 있는 csv로 bigQuery-table을 생성합니다. Google-Cloud-Platform 에서 Pub/Sub 부분에 topic을 생성합니다. BigQuery로 내보내기를 통해서 pub/sub에서 publisher 가 받은것을 Dataflow 를 통해서 bigQuery로 전달해 줄 것입니다. bigQuery로 내보내기 했을때 위와 같이 web 페이지가 로딩됩니다. 여기서 BigQuery output table 과 임시 위치를 각각 [project-id]:[schema-name].[table-name], gs://[bucket-name]/[foder-name] 으로 지정해줍니다. output table이 저장되는 위치이고 임시 위치(bucket)에서 publisher..
GCP03 :: Cloud Function 이미지에서 글자 추출(2)
GCP03 :: Cloud Function 이미지에서 글자 추출(2)
2020.06.03Main.py 에 들어가는 코드의 개요는 다음과 같습니다. VISION API 와 bigQuery 각각에 대해 코드에서 API로 사용할 수 있도록 객체로 생성합니다. e.g ) vision_client = vision.ImageAnnotatorClient(), bigQuery_client = bigquery.Client() Google Cloud Storage event 를 가지고 있는 bucket 의 이름을 이용하여 Google Cloud Storage 의 URL을 생성합니다. 그리고, Vision API에서는 GCS URL을 제공하고 TEXT로 추출합니다. 최종적으로는 bigQuery insert 문을 활용하여 query를 정의하고 bigQuery를 실행시킵니다. python 에서는 requireme..
GCP02 :: Cloud Function 이미지에서 글자 추출
GCP02 :: Cloud Function 이미지에서 글자 추출
2020.06.03개요는 다음과 같습니다. Cloud Function 에서 python으로 작성된 언어를 기반으로 Google Cloud Storage 에 이미지가 업로드 되면 감지하여 Vision API 를 활용해 글자를 추출하여 bigQuery 적재 이후 데이터 분석을 진행합니다. 이번에는 Cloud Function 에 대한 설정을 진행하겠습니다. 이 다음에서는 책에서 주는 코드로 Cloud Function 을 생성하고 이미지를 Bucket에 업로드 한뒤, 이를 bigQuery 로 분석하여 결과적으로는 Query로 조회하는 결과를 확인해보겠습니다. !!! 출처 : 구글 클라우드 플랫폼 쪼개기