들어가며최근 들어, 팀 내에서도 그리고 글또에서도 새로운 환경에서 ETL 파이프라인을 구축해 볼 기회가 생김에 따라 Airflow를 이전보다는 조금 더 깊게 알아야 할 필요성이 생겼다. 이에 따라, Airflow를 공부하며 관련된 내용들을 정리해보는 중인데, 오늘은 나와 같은 초보자의 관점에서 Airflow를 테스트 환경을 구성하고 DAG을 만들고 실행하는 과정에서 몇 가지 기본적인 개념들을 다루어보고자 한다.DAG란?Airflow is a platform that lets you build and run workflows. A workflow is represented as a DAG (a Directed Acyclic Graph), and contains individual pieces ..
슬랙 무료 플랜의 경우, 90일 단위로 주기적으로 메시지 함을 비웁니다. 이에 따라 추후 백업 및 활용 용도로 메시지를 저장하는 프로젝트를 진행했었습니다. https://gibles-deepmind.tistory.com/entry/%EC%9A%B0%EB%8B%B9%ED%83%95%ED%83%95-%EC%8A%AC%EB%9E%99-%EB%A9%94%EC%8B%9C%EC%A7%80-%EC%A0%80%EC%9E%A5%EA%B8%B01-%EC%8A%AC%EB%9E%99-%EB%A9%94%EC%8B%9C%EC%A7%80-%EB%84%8C-%EB%88%84%EA%B5%AC%EB%83%90 우당탕탕 슬랙 메시지 저장기(1) - 슬랙 메시지 넌 누구냐? 슬랙 무료 플랜의 경우, 90일 단위로 주기적으로 메시지 함을 비..
슬랙 무료 플랜의 경우, 90일 단위로 주기적으로 메시지 함을 비웁니다. 이에 따라 추후 백업 및 활용 용도로 메시지를 저장하는 프로젝트를 진행했었습니다. ※음슴체주의※ - 슬랙에서 데이터를 저장하는 방법은 크게 두 가지가 있음 - 하나는 설정 및 관리 → 워크 스페이스 설정 → 데이터 가져오기/내보내기 → 데이터 내보내기 - 다른 하나는 API를 이용하는 방법. https://api.slack.com/methods/conversations.history - API를 이용해 슬랙 데이터를 저장하는 방법에 대해 시리즈 글로 남길 예정. (본 글은 성윤님께서 진행하신 genie 프로젝트를 기반으로 작성하였습니다.) https://github.com/geultto/genie GitHub - geultto/g..
들어가며 - Grab은 스마트폰 기반의 동남아시아 승차 공유 서비스이다(- 위키 백과 -). - 지금은 그랩페이, 익스프래스, 프레쉬... 등 다양한 사업 분야 진출해 있는 소위 말하는 "슈퍼앱"이다. - 지금은 처분했지만 한동안 그랩의 "주주"였다. - 그래서, 조금은 뜬금없지만 언젠가 재진입할 날을 고대하며, 그랩의 테크 블로그 글 들에 대해 번역해보려 한다. Grab Food - 오늘 번역하려고 하는 글을 Grab의 여러 서비스들 중 Grab Food를 대상으로 한다. https://www.grab.com/global/ko/food/ Grab Food | 동남아시아에서 간편한 음식 배달을 원하시면 다운로드하세요 동남아시아에서 여러분의 입맛을 사로잡을 음식을 GrabFood를 통해 모두 주문하세요. ..
자~데이터 담으러 가자(feat.안내상님, 송곳) - 들뜬 마음으로 마트에 방문한 A씨. - 어라? 그런데 구매하려고 했던 바나나가 없다. - 바나나 다 팔렸나요? 질문을 남긴 안씨. 직원C씨는 알아 보고 오겠다는 말을 남긴채.. 다시 돌아오지 않았다. - 왜 직원은 돌아 오지 않았을까? 1. 화장실이 급해서 2. 갑자기 관둠 고민에 빠진 직원 - 정답은 둘다 아니다. - C씨는 A씨의 질문을 받자 말자 곧장 마트 창고로 달려갔다. - 창고에도 남은 바나나가 없었다. - 하지만, C씨는 일전에 있는 재고를 없다고 하여 혼난 적이 있다 - 또 혼나기 싫었던 C씨 확실히 확인하기 위해 사내 데이터 베이스에 먼저 접속했다. 상품 상태 테이블 발주일자 상품명 발주물량 상태 업데이트일자 2023-03-10 Sup..
Interface 인터페이스란? 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면. 즉 사용자가 기기를 쉽게 동작시키는데, 도움을 주는 시스템 - 위키백과 인터페이스의 정의는 "접점"/"경계면"이다. 그리고, 그 접점/경계면을 통해 정보나 신호를 주고 받는다. 대표적인 인터페이스의 예시로 컴퓨터 본체 뒷면을 들 수 있다. HDMI 포트는 HDMI 케이블을 연결하여 정보를 모니터로 송출하는 인터페이스다. 모니터는 HDMI 포트라는 인터페이스를 통해 본체와 상호작용(본체의 정보를 수신하여 출력)한다. 이처럼 인터페이스는 두 가지 기능을 한다. 1. 두 대상이 만날 수 있는 접점을 제공한다. 2. 두 대상이 상호작용(=정보교환) 할 수 있도록 한다. 그런데, 한 가지 중..
지난 며칠 간 빅쿼리를 파이썬과 연동해서 사용하였다. pip install google-cloud-bigquery 파이썬과 연동해서 사용하기 위해서는 Client 객체를 사용해야 한다. 공식 Documnet에서 Client 인스턴스에서 사용할 수 있는 method 목록을 확인할 수 있다. https://cloud.google.com/python/docs/reference/bigquery/latest/google.cloud.bigquery.client.Client#google_cloud_bigquery_client_Client_query Class Client (3.4.0) | Python client library | Google Cloud Send feedback Class Client (3.4.0) ..
핵심내용 도커 컨테이너를 정리하는 방법에 대해서 다루고자 한다. 일단 정지용 도커 컨테이너를 삭제하기 전에 우선, 도커를 먼저 정지해야 한다. 왜냐하면, stop후 삭제하는 과정을 통해 삭제하는데 필요한 충분한 시간을 벌 수 있기 때문이다. (다만, 정지를 하지 않고도 삭제를 강제할 수 있기는 하다.) 그래서, 컨테이너를 삭제하기 전에 도커를 먼저 정지해야 한다. 1. 하나의 컨테이너를 정지하는 경우 docker stop [OPTIONS] CONTAINER [CONTAINER...] 컨테이너 아이디나, 혹은 이름을 넣어준다. 2. 여러개의 컨테이너를 정지하는 경우 docker stop container1 container2 컨테이너 이름이나 아이디를 띄어쓰기로 입력해준다. 3. 특정 이미지와 연관된 모든..
핵심내용 pyspark의 데이터프레임과 pandas 데이터프레임의 type hint를 비교해봅니다. type hint 비교 아래와 같이 라이브러리를 생성해줍니다. from pyspark.sql import * from pyspark.sql.types import * from pyspark.sql.functions import * import pandas as pd 그리고, pandas의 DataFrame과 pyspark의 DataFrame의 type을 비교해봅시다. print(type(spark.sql("select 1"))) print(type(pd.DataFrame([]))) 시작은 다르지만, 끝은 모두 DataFrame으로 동일합니다. 여기서 주목할점은 다음과 같은 라이브러리 임포트 형식인데요. f..
핵심 내용 Spark를 사용하며, 고수준API인 Dataframe객체를 이용하다 보니 RDD 함수를 사용할 일이 잘 없었다. 그러다가, 최근 들어 flatMap을 유용하게 사용하고 있는데 오늘은 flatMap 함수에 대해서 다루어 보려고 한다. 글의 목표 - Map 함수에 대해 이해하기 - Map함수와 flatMap함수의 차이 이해하기 - flatMap함수를 이용하여 explode해보기 (본 글에서 RDD에 대해 따로 다루지는 않습니다. 관련된 내용은 아래 글을 참고해주세요.) https://gibles-deepmind.tistory.com/136 [PySpark] 자료 구조와 연산 원리 - 스파크 누구냐 넌? 핵심내용 스파크의 고유한 자료 구조와 연산 특징에 대해서 다루어보고자 합니다. ※스파크 설치 ..