본문 바로가기

[Airflow] Local 개발환경 설정(2)_Dag 개발 앞서 Local 개발환경 설정(1)_설치를 통해 로컬에 Airflow를 설치를 해보았다. 이번에는 로컬에 설치된 Airflow를 이용하여 dag를 개발할 수 있는 환경을 만들어 보고자 한다. 개발 환경 Mac OS(Catalina) Intellij 이전 포스팅에서도 이야기했듯, 2가지 git repository를 사용하는데 airflow-devel repository : 로컬에 airflow 모듈을 설정 airflow-dags repository : dag를 생성하고, 이를 통해 Production Level의 서버에 배포 하는 역할을 한다. 이 airflow-dags repository는 git submodule을 이용하여 로컬에 설치한 airflow-devel/dags로 추가한다. 1. git sub..
[Sqoop] Parameter 'directory' is not a directory 에러 해결하기 .bash_profile 이나 ${SQOOP_HOME}/conf/sqoop_env.sh에 HADOOP_MAPRED_HOME 환경변수를 지정했음에도 계속 아래와 같이 HADOOP_MAPRED_HOME을 /usr/lib/hadoop-mapreduce의 경로에서 읽어 에러가 발생한다. 20/02/10 17:41:18 INFO orm.CompilationManager: HADOOP_MAPRED_HOME is /usr/lib/hadoop-mapreduce 20/02/10 17:41:18 ERROR tool.ImportTool: Import failed: Parameter 'directory' is not a directory해결 1 : hadoop-mapred-home 파라미터 설정 sqoop im..
[Airflow] Local 개발환경 설정(1)_설치 로컬에서 airflow dag를 생성하거나, 커스텀 오퍼레이터를 생성하기 위해서 로컬에 airflow를 세팅하고, dag를 개발하는 환경을 구축해 보고자 한다. 요구사항 os: Mac OS(Catalina) github Homebrew direnv를 설치하기 위함 direnv direnv는 해당 디렉토리에 .envrc 파일을 읽어 자동으로 python virtualenv 환경을 활성화 시켜주는 역할을 한다. 구조 github에 2개의 repository를 생성한다.(airflow-devel, airflow-dags) airflow-devel: 로컬에서 테스트 하기 위한 root 프로젝트, 이 프로젝트는 로컬 테스트 환경에서만 사용한다. airflow-dags: 로컬 및 실제 Airflow 클러스터에서 실..
[Airflow] BashOperator 확장을 통한 Spark Custom Operator 이전 포스팅을 통해 SparkSubmitOperator을 사용해보았다. 하지만 포스팅 말미에도 적어놓았지만 SparkSubmitOperator의 이슈때문에(yarn queue를 지정하기 어려운점) BashOperator를 상속하여 SparkBashOperator를 만들어 보았다. BashOperator를 이용하여 spark_submit을 직접 호출하는 형태임으로, 상황에 따라 Spark Binary, Hadoop Binary, Hadoop Config 등 설정이 필요하다. 전체 코드 from airflow.operators.bash_operator import BashOperator from airflow.utils.decorators import apply_defaults import re class ..
[기타] Chrome NET::ERR_CERT_REVOKED 해결방법 Self-signed certificate 인증서를 생성하여 HTTPS를 적용하게 되면 위의 이미지처럼 크롬에서 NET::ERR_CERT_REVOKED 에러가 발생하며 HTTPS 접근이 불가능하다. (Safari나 Firefox에서는 접근 가능하다) 해결방법 NET::ERR_CERT_REVOKED 에러 페이지의 흰 배경을 마우스로 클릭한다. (해당 크롬 창으로 포커스를 맞춘다) thisisunsafe 를 키보드로 입력한다. 주의할점은 thisisunsafe를 입력시에 어떤 인풋박스에 입력하는것이 아니라 허공에(?) 키보드타이핑을 해야한다.(무언가 인풋박스에 입력을 한다던가 하는게 아니다) 정상적으로 적용이 된다면 해당 키워드를 입력함과 동시에 자동으로 페이지가 리로드 되고 에러페이지 없이 정상적으로 접근..
[Kudu] 시간 기준의 Range Partition 시 주의점(timezone, UTC) 잘못된 내용으로 조만간 새로 포스팅 할 계획입니다. Kudu는 시간 컬럼을 저장할 때 unixtime_micros를 이용해서 저장한다. 만약 이 컬럼을 통해 연도별,월별,일별 등 시간으로 Range Partition을 설정할 경우 주의할 점이 있다. Kudu는 질의 엔진이 따로 포함되어 있지 않기 때문에 kudu-client 라이브러리를 사용하여 테이블 생성 및 파티션을 설정하거나, Impala Hive Presto 와 같은 질의엔진을 통해 CREATE TABLE DDL을 통해 테이블을 생성할 수 있다. 이때 질의 엔진을 통해 테이블을 생성할 경우 주의해야 한다. 만약 아래와 같이 날짜를 기준으로 파티션을 했다고 가정해보자. -- query with presto CREATE TABLE sample ( u..
[Nifi]Could Not Generate Extensions Documentation 에러 해결 방법 커스텀 프로세서 생성 후 mvn clean package를 통해 .nar파일을 생성하는데, 아래와 같은 에러가 발생했다. [ERROR] Could not generate extensions' documentation org.apache.maven.plugin.MojoExecutionException: Failed to create Extension Documentation at org.apache.nifi.NarMojo.generateDocumentation (NarMojo.java:596) at org.apache.nifi.NarMojo.execute (NarMojo.java:499) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMo..
[Java] invalid source release 에러 해결 Error:java: invalid source release: 11 프로젝트를 진행하다보면 위와같은 에러를 보일때가 있는데, Intellij의 설정을 수정하여 해결할 수 있다. 방법1 1) Language Level 수정 Intellij에서 File -> Project Structure -> Project Settings -> Project 메뉴의 Project Language Level 을 수정한다 그리고 File -> Project Structure -> Project Settings -> Modules 메뉴의 Source Language Level을 수정한다. 방법1 2) Java Compiler 수정 Intellij에서 Preference -> Build,Execution,Deployment -..