최근에 로컬에서 환경과 클라우드 환경에서의 결과값이 다르게 나와서 stackoverflow 에 질문을 올린적이 있다. 

https://stackoverflow.com/questions/63460701/in-the-local-environment-the-result-value-and-the-dataflow-result-values-are-di/63465435?noredirect=1#comment112262586_63465435 

 

In the local environment, the result value and the dataflow result values are different

Here is my input data. ㅡ.Input(Local) 'Iot,c c++ python,2015', 'Web,java spring,2016', 'Iot,c c++ spring,2017', 'Iot,c c++ spring,2017', This is the result of running apache-beam in a local enviro...

stackoverflow.com

관련 글을 포스팅해본다.!! 

 

어떤 이슈가 발생했냐면 ParDo 실행시 Local 과 Cloud 상에서 dataflow 로 runner 를 실행했을 때 결과값이 다르게 나왔다. 

counting 값들이... 

 

ParDo 자체가 element들을 기본요소로 프로세스를 진행하는것이라고 한다. 하나의 element들을 바탕으로 연산을 만들고 다음 output을 내보내고 이 과정을 PTransform 이라고 한다. 만약에, 데이터를 집합 단위로 만들꺼면 이 element들은 원하는 대로 동작하지 않을 거라고 한다.  어떤 logic 들을 통해 PCollection 을 생성해야 하는데 여기서 필요한것이 combiners 라고 한다. combiners 는 PCollection을 기본으로 연산을 수행하고 workers들을 통해서 연산이 수행될수 있다고 한다. 

 

또! ParDo 연산에서 어떤 parameter들을 class로 넘겨줘서 우리에게 필요한 연산 과정들을 저장할꺼라면 그리고 그게 element 들이라면 class 안에 들어가서 파라미터를 변경해줄것을 권하고 있다. 

내가 짠 데이터파이프라인 연산에서는 처음에 create 해줘서 사용했는데(순전히,, 테스트용으로) create 가 worker 를 베이스로 하고 있고 이들 worker 노드들은 서로 state를 공유하지 않는다고 한다. 그래서 count 를 했을때 worker 노드별로 각각 수행하게 되었던 것이다. (실제로 내가 겪고 있었던 이슈였다.. 노드들이 서로 다르게 count하는 이유 때문에 결과가 다르게 나왔다.)

'Cloud > Cloud.Dataflow' 카테고리의 다른 글

GCP25 :: dataflow 코드 작성하기 3  (0) 2020.08.24
GCP24 :: dataflow 코드 작성하기 2  (0) 2020.08.24
GCP23 :: dataflow 코드작성하기  (0) 2020.08.24