Apache NiFi (12) 썸네일형 리스트형 데이터 적재/변환 연습하기 05_정규식을 사용하여 속성 생성 , 파일 해제 후 속성으로 데이터 수정하고 DB 적재된 데이터 Delete 후 INSERT 하여 데이터 적재 후 파일로 압축하여 SFTP 서버에 적재 📖 데이터 적재 / 변환 시나리오 1. FTP 서버 (172.30.1.3) /nifi_data/raw_dataset/ 디렉토리에서 business_district_data.zip 파일 수집 (원본 유지) 2. 오늘날짜(yyyymmdd) 값이 들어간 time 이름의 속성을 생성 (값을 숫자사용하지 않고 Expression Language 를 사용하여 생성) 3. 수집한 zip 파일 압축해제 4. 파일 명에 오늘 날짜값이 들어간 파일들만 분리 5. 데이터 건수 측정 6. 데이터 수정 1) 파일의 컬럼명을 아래의 값으로 변경 상가업소번호 house_no 상호명 cmpny_nm 지점명 point_nm 상권업종대분류코드 industry_lgcls_cd 상권업종대분류명 industry_lgcls_nm 상권업종중분류.. 데이터 적재 연습하기 04 _ 데이터베이스 적재된 데이터와 FTP서버의 파일데이터 📖 데이터 적재 / 변환 시나리오 _ 데이터베이스 적재된 데이터와 FTP서버의 파일데이터 데이터베이스에 적재된 데이터와 FTP서버의 파일데이터를 합쳐 DB의 nifi 스키마의 company_20230216 테이블에 적재 적재한 데이터를 cvs 형식 변경하여 FTP서버에 파일 지정한다. (DB 데이터 + 파일 데이터) 1. postgres 데이터베이스의 nifi 스키마의 ovs_expns_kor_entprs 테이블에서 나라명이 '라오스'인 데이터만 조회 2. 조회한 데이터를 AVRO 에서 JSON으로 레코드 형식 변환 3. 변환된 JSON 데이터를 한줄씩 분리 ( json 분리 기준은 $.* 로 ) 4. 분리한 JSON 데이터에서 country_nm, exp_plc_nm, region_se 항목을 플로우파.. API 데이터 적재 연습하기 03_Open API 호출한 데이터 DB적재 후 수정하기 📖 API 데이터 적재 시나리오 1. API로 수집하여 FTP 서버 /nifi_dataset/api_dataset 에 적재한 데이터를 get 하기 2. json포맷의 데이터를 csv로 변환 3. 레코드 건수 추출 4. 추출한 레코드 건수를 data_co 컬럼에, 20230215 값이 load_de 컬럼에 들어가도록 하여 postgres 데이터베이스 내 nifi 스키마의 lfr_price_rate_year 테이블에 적재 5. 레코드 적재 후 level_no 컬럼의 값이 1인 데이터만 load_de 컬럼의 값을 0으로 업데이트 실행 된 Flow 적재된 br_20230215.json 파일을 불러온다. GetFTP 프로세스를 사용해서 파일을 불러온다. ConvertRecord를 사용해서 json파일을 읽어와서 .. API 데이터 수집 연습하기 03_Open API 호출하여 데이터 수집 📖 API 데이터 수집 시나리오 1. 공공데이터포털 DATA.GO.KR 가입 후 https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15098962 (한국부동산원_전국지가변동률조사 통계 조회 서비스) Open API 활용신청 후 인증키 발급 2. 파일포맷은 JSON, 1페이지에 페이지당 건수를 100건으로 설정하여 API 호출. 3. 호출한 API데이터에서 data 부분만 추출 4. 수집 및 추출한 데이터의 이름을 이니셜_20230215.json으로 변경 후 FTP서버의 /nifi_data/api_dataset 하위에 저장 공공데이터 포털 회원가입 링크 https://www.data.go.kr/ 공공데이터 포털 국가에서 보유하고 .. 정형 데이터 적재 연습하기 02 📖 정형 데이터 적재 시나리오 02 1. FTP 서버의 /nifi_data/raw_dataset 디렉토리에서 이니셜_20161231.csv 데이터파일을 로컬 NiFi로 수집 2. 레코드 건수 측정 3. 오늘날짜 (년도4자리월일 YYYYMMDD) 형태로 time 이름의 속성 생성 3. 레코드의 컬럼 중 구분, 국가명, 진출지역, 회사명(국문), 회사명(영문), 진출년도, 업종1 컬럼 추출 + 위에서 측정한 레코드 건수를 데이터 건수 (data_co) 컬럼에 넣기 + time 속성의 값을 적재일자(load_de)컬럼에 넣기 3번 항목에 대한 힌트) SELECT ......... '${속성명}' AS "추가할컬럼명", ....... FROM flowfile 3번 항목의 추출대상 컬럼은 ovs_expns_kor.. 정형 데이터 적재 연습하기 01 📖 정형 데이터 적재 시나리오 01 1. FTP 서버의 /nifi_data/raw_dataset 디렉터리에서 이니셜_business_data_20230213.csv 데이터파일을 로컬 NiFi로 수집 [ FTP 서버 연결정보 ] HOST : Host번호 PORT : 21 ID : 서버ID PW : 서버 PW 2. 레코드 건수 측정 3. 레코드의 칼럼명을 서버 DB postgresql의 postgres DB nifi 스키마 내의 business_dist_data 테이블에 맞게 변경 4. 서버DB postgresql DB nifi 스키마 내의 business_dist_data 테이블에 레코드 적재 [ DB 연결정보 ] HOST : Host번호 (서버 Host와 같음) PORT : DB Port번호 DB 명 :.. NiFi Encoding 처리 파일을 불러올때는 잘 읽히지만, QueryRecord 프로세스에서 Write를 등록 했는데도 한글이 깨져보이고, 데이터를 읽어올 수 없었다. 확인해보니 encoding 설정을 안해두었기 때문이다. encoding 설정 # encoding utf-8 java.arg.8=-Dfile.encoding=UTF8 NiFi FTP 서버에 파일 보내기 FTP 서버에 Filezilla를 사용하여 파일을 옮기는 연습을 해보겠습니다. FTP 서버로 파일을 보내는 flow 입니다. PutFTP 프로세스를 생성하고 속성을 설정합니다. HostName : host번호 Port : 서버에 해당되는 포트번호 Remote Path : 경로 설정 (FileZilla에 Remotefile을 생성하여 경로룰 만들어두기) Use UTF-8 Encoding : 한글 설 Relationships 탭까지 설정해주면 완료 프로세스 설정 후 프로세스끼리 연결을 하고 실행 시켜줍니다. flow를 실행하고 FileZilla에 파일이 옮겨진것이 확인된 모습. 왼쪽은 내가 사용하고 있는 pc의 상태이고, 오른쪽은 FTP서버의 지정된 위치에 파일이 옮겨진 모습이다. NiFi DB와 연결해서 CSV 파일 적재하기 이전에는 로컬에 csv 파일 옮기는 작업을 해보았는데, 이번에는 로컬에 올라가있는 csv 파일을 DB로 넣어 보겠습니다. DB 적재하는 fow 입니다. PutDatabaseRecord - 데이터베이스에 플로우파일의 데이터를 적재할 때 사용하는 프로세스 PutDatabaseRecord 프로세스를 생성하고 속성을 설정합니다. Statement Type : INSERT, UPDATE, DELETE, INSERT_IGNORE..등 있습니다. 상태에 맞게 사용하면 됩니다. Database Connection Pooling Service : DBCPConnectionPool 컨트롤러를 연결합니다. Table Name : 데이터를 적재할 테이블 이름을 적어준다. DBCPConnectionPool - 데이터를 수집하거.. Processor, Controller 생성하여 실행해보기 (변수 설정 포함) Processor를 생성하고 sample.cvs 파일을 이동 시켜보는 작업을 진행해 보도록 하겠습니다. ⚙️ Processor 생성하기 1. NiFi 실행시켜 Processor 버튼을 드래그 하여 Processor를 생성한다. 2. Filter 부분에 생성할 Processor 명칭을 적어준다. 명칭을 적으면 검색이 자동으로 되는데 생성할 Processor명을 선택하고 'add'버튼을 눌러주면 생성이 된다. 3. Processor 이름 변경 및 설정을 할 수 있는 탭 4. 파일 수집 스케쥴을 설정할 수 있다. Timer driven , CRON driven 형식으로 스케줄을 설정할 수 있다. - Timer driven : 일 단위, 시 단위, 분 단위, 초 단위 스케줄 값을 설정하여 프로세스의 주기를 관리.. 이전 1 2 다음