목록2025/03 (21)
엔지니어 블로그

이전에 생성해둔 api 서버를 호출해서 데이터를 PubSub에 Publish 하는 작업을 할 차례다. 필요 작업은 다음과 같다.1.Airflow Connection 등록-> Airflwo가 PubSub에 접근할 수 있도록 Connection을 등록2.Publish Task 작성-> DAG에 데이터를 Publish 할 수 있도록 task 작성 1.Airflow Connection 등록먼저 connection 등록이다. Airflow 상단 메뉴에 Admin-Connection을 클릭하면 Connection 등록이 가능하다. + 버튼을 눌러 등록해보자 + 버튼을 눌러보면 다음과 같은 화면이 나온다. 여기서 필수로 작성해야 하는 것은 * 처리 되어있다. 추가로 Keyfile 내용을 작성하면 된다. Keyfile..
컴파일러는 어떻게 동작하는가?1.컴파일러는 단순한 프로그램이다컴파일러는 고수준언어를 저수준 언어로 번역하는 프로그램이다. 텍스트 형태로 작성된 소스파일을 컴파일러에 input하면 CPU가 실행할 수 있는 기계어로 작성된 실행파일을 output 한다. CPU는 추상적인 명령어를 이해할 수 없기때문에 이러한 작업이 동반된다.2.토큰 추출하기컴파일러는 소스코드를 번역하기 위해 토큰을 추출한다. 토큰을 추출하기 위해서는 먼저, 각 항목을 잘게 쪼갠다. 이후 각 항목의 정보와 추가정보를 결합하고 이것을 토큰이라고 부른다. 이렇게 토큰을 추출하는 과정을 어휘분석(lexical analysis)라고 부른다.3.토큰이 표현하고자 하는 의미토큰을 추출한 이후에는 전달하고자 하는 토큰 의도를 표현해야한다.while (표현..

프로젝트를 하던 중 지금 토이 프로젝트를 하고있지만, 현업에서 진행하는 프로젝트라면 지속적으로 쌓이는 데이터의 양이 엄청날 것 같았다. 그래서 현재 Spark에서 Bigquery로 데이터를 전송하는 부분을 손보게 되었다. 이전 아키텍처와 거의 동일하고, 중간에 Cloud Storage가 들어갔다. 하단의 Base Data Load 부분은 정적 데이터의 적재를 뜻한다. 실시간으로 생성되는 데이터가 아닌, 현업이라면 DB에 이미 존재했어야 할 유저 정보, 지리정보 등의 데이터가 포함된다. 이 데이터를 업로드 하는 부분에서 고민이 생겼다. 현업에서 처리한다면 어떻게 했어야할까??Static한 데이터기 때문에 변화가 자주 없는 탓에 GCP 콘솔에서 직접 업로드 할까 생각했지만, 현업이라는 상황을 가정해봤을 때..
CPU는 똑똑한 바보CPU는 스위치의 개폐만으로 0,1을 표현하고 더 나아가 Boolean 논리를 나타낼 수 있는 것에서 착안하여 만들어졌다. CPU는 생각보다 단순하다. A 지점에서 데이터를 가져와 간단한 연산 후 B 지점으로 옮기는 작업만 수행할 뿐이다. 하지만 굉장한 장점 하나가 단순함을 모두 상쇄한다. CPU는 속도가 매우 빠르다. 인간의 계산 속도를 아득히 뛰어넘을 정도다. 이러한 장점을 토대로 CPU는 인간에게 제 2의 두뇌가 되어줬다.인간은 제 2의 두뇌, CPU를 제어하고 작업을 시키기 위해 CPU의 언어를 사용해야했다. CPU가 인간의 언어를 이해할 수 없기 때문이다. 그래서 0과1로 작성된 천공카드를 통해 CPU에게 명령어를 전달했고, CPU는 명령어를 수행했다. 이 0,1로 작성된 내..

문제상황현재 spark에서 Cloud Storage로 parquet를 업로드 중이다. 근데 업로드 할 때마다 새로운 폴더가 생성되고 그 하위에 parquet가 저장되어 BigQuery에서 다수의 parquet를 동시에 읽을수가 없다. 동일한 경로를 지정하면 already exist 에러가 발생했다. 그래서 찾아본 것이 .mode("append") 옵션이다. 해결간단하게도 spark가 CloudStroage에 parquet를 저장할 때 옵션 하나만 추가해주면 된다.df.write.mode("append").format("parquet").save(parquet_path) 이후 다시 parquet를 추가해보면 아래처럼 한 폴더에 여러 parquet가 저장될 수 있다.