목록전체 글 (105)
imhamburger 님의 블로그
1. Apache Zeppelin process died 오류 맥에서 Zeppelin을 start했는데 위와 같은 오류가 발생했다.위와 같은 오류가 발생하는 이유는 2가지이다.localhost:8080에 이미 무언가가 돌아가고 있거나설치한 자바의 JAVA_HOME 경로가 잘못되었거나나는 설치한 자바의 경로가 잘못되어 위의 오류 메세지가 떴다. 따라서, .zshrc 에 아래 코드를 추가해주니 해결할 수 있었다. (참고로 나는 jdk 17버전을 설치하였다.)export JAVA_HOME=/usr/local/opt/openjdk@17export PATH=$JAVA_HOME/bin:$PATH 자바를 설치하면 아래와 같은 설명이 나오는데 꼭 읽어보고 추가해줘야할 건 추가해주자. 다시 실행한 결과, + spark..
3일간의 팀프로젝트가 끝났다. 지난번에 팀프로젝트를 진행하면서 발생한 에러들을 기록해놨었는데 오늘도 2일차에 발생한 에러들을 이어서 정리해보려고 한다. 제 4 장: 파이썬 함수에 있는 변수는 Bash Command에 적용되지 않는다. 우리는 에어플로우가 실행될 때마다 같은 데이터가 누적되어 쌓이는 것이 아닌 멱등성을 고려해 데이터가 존재한다면 삭제한 후 Load하고 없다면 데이터를 삭제하지 않고 Load하는 방식으로 데이터 파이프라인을 설계하였다. 따라서 branch_fun이라는 함수를 만들어 조건문을 넣었고 BranchOperator에서 명령을 분리해준다. def branch_fun(ds_nodash): import os home_dir = os.path.expanduser("~") month=int(..
1. requests로 영화데이터 가져오기 사전에 영화진흥위원회에 가입하여 Key를 발급받아야 한다.import requestsimport osimport pandas as pd#영화진흥위원회에서 정해진 REST 방식을 이용하여 url 요청형식 맞추기def gen_url(dt="20120101", url_param={}): base_url = "http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json" key = get_key() url = f"{base_url}?key={key}&targetDt={dt}" for key, value in url_param.items()..
7월 한달동안 배운 내용들이 참 많다. 터미널을 다루는 것부터 vim, bash, 깃&깃허브, pyenv, pdm, Airflow, sql, pandas 등..초기엔 vim과 깃&깃허브 다루는 것에 집중하였다면 지금은 간단한 기능도 만들고 배포하고 써보고하는 등 간단한 것이지만 무언가를 만들 수 있다는게 조금은 신기하다. 그리고 실제로 만들어야 하는... 팀프로젝트가 시작되었다. 8월 2일 금요일부터 첫 팀프로젝트를 시작하였다. 프로젝트를 완성하는데 주어진 시간은 3일이다.팀구성은 3인 1조인데 우리의 팀이름은 "play gogo" 로 정했다. (이유는 딱히 없다..) 팀프로젝트 과제는 영화 박스오피스 데이터 수집 / 처리 / 보관 및 활용이었고 필수적으로 해야하는 건 다음과 같다.영화 박스오피스 데이터..
파이썬의 requests 는 HTTP 요청을 보내고 응답을 받는 데 사용되는 라이브러리이다. HTTP뿐만 아니라 GET, POST, PUT, DELETE 등을 지원한다. 예를들어, 내가 외부데이터를 가져다가 쓰고싶을 때 requests를 이용하면 된다. (공식문서)참고로 requests는 파이썬 내장 모듈이 아니기때문에 설치를 해줘야한다. 설치방법은 다음과 같다.pip install requestspdm install requests #pdm 가상환경에서 설치할 때 GET 요청import requestsurl = "{GET 요청을 보낼 url}"r = requests.get(url)#optioncheck = r.status_code #status_code가 200을 출력하면 True 값이니 오류가 없다는..
1. max_active_runs 와 max_active_tasks에어플로우에선 다양한 옵션을 제공하는 데 그중 max_active 옵션이 있다. max_active_runs : 최대 몇개의 실행을 활성화할지max_active_tasks : 최대 몇개의 task를 활성화할지 지정해줄 수 있다.with DAG( 'movie', default_args={ 'depends_on_past': False, 'retries': 1, 'retry_delay': timedelta(seconds=3), }, max_active_runs=1, max_active_tasks=3, description='hello world DAG', schedul..
에어플로우에는 다양한 오퍼레이터를 제공한다. 이번엔 지난글에서 다룬 BashOperator말고 PythonOperator를 다뤄보자. 1. PythonOperatorfrom airflow.operators.python import PythonOperatordef print_context(ds=None, **kwargs): print("::group::All kwargs") task = PythonOperator( task_id="print_the_context", python_callable=print_context )PythonOperator는 Dags에 Python 함수(내가 만든 기능)를 입력하고 task 에서 py..
API를 통해 어떤 데이터를 불러올 때 나에게 발급된 키를 공개하지않기 위해 os.getenv를 사용한다.깃헙에 나의 코드를 push할 때 나의 개인 키가 공개되어서는 안되기 때문이다. 따라서 환경변수를 불러올 수 있는 os.getenv를 사용할 수 있다.사용하는 방법은 우선 로컬환경에서 키를 지정한다. 예를들어 "abcdef"라는 키를 발급받았고 해당 키를 이용해야한다고 하였을 때,터미널창에 아래와 같이 입력한다.export API_KEY="abcdef"API_KEY라는 변수에 내 키값을 담는다. 그럼 파이썬파일에서 다음과 같이 이용할 수 있다.import osdef get_key(): key = os.getenv('API_KEY')os.getenv는 로컬 환경에서 변수를 불러오기 때문에 내가 지..
pdm은 이전글에서도 설명한대로 의존성 관리도구이며 pyenv처럼 가상환경 기능을 제공한다.여러가지 모듈을 pdm 가상환경에 설치하여 다양한 기능을 테스트해 볼 수 있다. 당연히 의존성 관리 도구이기 때문에 설치한 모듈을 관리할 수 있다. 관리할 수 있다는건 생성, 삭제, 수정이 용이하다는 것이다. pdm 가상환경을 구축하는 건 매우 간단하다. pdm을 실행하고자 하는 경로로 이동하여 아래 코드를 차례대로 입력하면 된다.pdm init #pdm 실행source .venv/bin/activate #pdm 가상환경 실행 만약 가상환경이 실행이 되지 않는다면 venv가 없기때문이다. 아래 코드로 따라서 별도로 설치하고 다시 실행하면 된다.pdm venv create #venv 생성 여기 드는 의문! 그냥 가상..
파라미터값에 default를 둘 수 있으며, 보통 많이 사용하는 파라미터값을 default로 설정한다.def gen_path(filename, path='/data/csv', home='~/my/airflow'): print(f"{home}{path}/{filename}") >>> gen_path('file') #입력값>> ~/my/airflow/data/csv/file #출력값위 코드에서 'path'와 'home'을 default값으로 각각 경로를 설정하였다.그럼 입력할 때 이미 default 값이 설정되어 있기때문에 출력값은 입력값과 default값이 합쳐져 나온다. 만약 default값이 앞으로 온다면?에러가 날 것이다. default 파라미터값은 앞에 올 수 없다.def add..