[NIFI]PutHDFS,PutHiveQL 을 이용하여 data insert

이혜지·2020년 11월 16일
0

NiFi

목록 보기
1/7
post-thumbnail
post-custom-banner

환경
OS : CentOs7
Java : 1.8
Hadoop : 3.1.4
Hive : 3.1.0
metastore : mysql 5.7

Hadoop cluster 구성(내 환경)


ActiveNameNode : cwhdp01 | StandbyNameNode : cwhdp02
journalNode : 3 대로 구성

Hive Table 생성

external table 생성

create external table employee (
	    employee_id INT,
	    birthday DATE,
	    first_name STRING,
	    family_name STRING,
	    gender CHAR(1),
	    work_day DATE)
row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
with serdeproperties (
	    "separatorChar" = ",",
	    "quoteChar"     = "'"
)stored as textfile
location '/cwdevtmp/nifi';

managed table 생성
create할때 external 이라는 걸 빼면 default로 managed table로 생성된다.

create table employee (
	    employee_id INT,
	    birthday DATE,
	    first_name STRING,
	    family_name STRING,
	    gender CHAR(1),
	    work_day DATE)
row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
with serdeproperties (
	    "separatorChar" = ",",
	    "quoteChar"     = "'"
)
stored as textfile
location '/cwhdp/warehouse/tablespace/managed/hive/nifi.db'

여기서 잠깐 ~~

in NiFi

전체적인 흐름

  • 사용 processor 와 흐름
    GetFile > PutHDFS > SelectHiveQL > ReplaceText > PutHiveQL

  • 사용 Processor 설명

    • GetFile : local에서 가져올 file을 가져온다. 가져 온 후에 local에서 기존 file은 삭제된다.
    • PutHDFS : 지정한 hdfs directory 위치로 파일을 put
    • SelectHiveQL : put한 파일이 external table에 data가 성공적으로 들어갔는지 확인하기위해 확인
    • ReplaceText : external table에 있는 data를 managed table로 insert를 하기위해 수행할 쿼리
    • PutHiveQL : ReplaceText에 써놓은 sql문을 hiveql문으로 변경해서 쿼리 수행 managed table에 적재
  • 사용한 Controller Services

    HiveConnectionPool - SelectHiveQl,PutHiveQL 사용 시 필수
    property 설정

GetFile


로컬에서 get할 파일 위치를 property에 설정

PutHDFS


HDFS에 put하기
Hadoop Configuration Resources : 로컬에서 core-site.xml, hdfs-site.xml 파일이 있는 위치를 작성해준다.
Directory : hdfs 내에 put할 hdfs 폴더 위치를 작성

SelectHiveQL


HDFS external table에 insert한 data가 잘 들어갔는지 확인하기위해 중간에 넣었음ㅋㅋ
hive에 연결하는 processor기 때문에 HiveConnectionPool이라는 controller services가 필요하다.
HiveQL Select Query : hive 테이블에서 select문으로 data를 조회하는것이기 때문에 여기에 select문을 작성해준다.

ReplaceText


일반 sql 문과는 다른 hiveql로 변환해야하기 때문에 변환할 sql문을 작성. nifi 데이터베이스에 employee external table -> managed table로 insert 하는 sql 문을 작성해준다.

PutHiveQL


SelectHiveQL과 마찬가지로 hive테이블에 접근하는 것이므로 Controller services를 지정해줘야한다. HiveConnectionPool

profile
공유 문화를 지향하는 개발자입니다.
post-custom-banner

0개의 댓글