HDFS 불러오기

HDFS 불러오기

HDFS에 저장된 데이터를 Batch Pipeline으로 불러오기 위해 사용하는 노드이다.

  • File 브라우저를 통해 데이터가 저장된 클러스터와 저장경로를 선택할 수 있다.

impdata002

  • HDFS에 저장된 데이터의 delimeter와 header 포함여부를 선택할 수 있다.
  • Schema를 자동 파싱하여 이후 구성할 ETL 작업에서 사용할 수 있다.

impdata003

좌측 [데이터불러오기]노드 중 [HDFS불러오기]노드를 drag & drop 한 후 Property 항목을 입력한다. Property 패널의 [더보기+] 버튼을 누르면 입력가능한 전체 Property 항목을 볼 수 있다.

  1. file : File 브라우저에서 불러올 hdfs 파일 경로를 입력한다(직접 IP/경로를 입력, 또는 브라우저를 열어서 선택).

  2. format : 불러올 파일의 형식을 정한다(json, parquet, orc, csv, text 중 택1).

  3. delimiter : 구분자를 입력한다.

  4. sampling : 전체 데이터가 많을 경우 일부만 sampling해서 사용할 수 있다. default는 100%(샘플링하지 않고 전체 데이터 모두 사용)이며, 80%, 50%, 30%, 10%, 5%, 1% 선택 가능하다.

  5. option : 사용 가능한 옵션(헤더유무, nanValue, nullValue)을 설정한다.

    keyvalue설명
    headertrue / falsetrue : 헤더 설정, false : 헤더 미설정
    nullValue입력값데이터에 포함된 입력값을 na처리
    nanValue입력값데이터에 포함된 입력값을 na처리

    불러오기 데이터에 "NULL"이라는 문자열이 있을 경우 이를 실제 null로 볼것인지 설정하는 옵션이다. NaN=NULL 으로 하면 NULL 문자를 실제 na로 인식하게 변경한다.

    HIVE의 경우 null 데이터가 "NULL"이라는 문자로 표기되며, 이런 데이터를 추출해서 활용할 경우 default로 "NULL"이란 문자가 저장되므로 이를 실제 null값으로 변환하는 작업이 필요하다.

  6. cluster : 자동입력됨

  7. hightAvailability : 고가용성 사용 여부를 체크한다(7,8,9 에서 상세 정보 입력).

  8. nameservices : 고가용성 호스트 명을 입력한다.

  9. namenode1 : 호스트 명을 통해 접속할 실제 이중화 IP를 입력한다.

  10. namenode2 : 호스트 명을 통해 접속할 실제 이중화 IP를 입력한다.

  11. schema : column 및 dataType을 정의한다(우측 버튼 이용하여 전체 파싱 및 일부 추가 가능).

- schemad의 [자동파싱열기] 버튼을 클릭
- 샘플링을 통한 파싱이 기본이나, 전체 파싱이 필요할 경우 [전체파싱] 버튼을 사용한다. 이럴 경우 파싱에 시간이 더 소요된다.

property 패널의 option 처리방법

아래는 nullValue, nanValue를 처리하는 방법이다.

nullValue 처리

HDFS에서 불러오는 데이터에 "NULL"이라는 문자열이 있고, 실제로는 null 값일 경우 아래와 같이 설정한다.

  • 실제 null 값인데 "NULL"이란 문자열로 입력됨

impdata012

  • property 패널의 5.option에서 [+] 버튼 클릭 후 아래와 같이 key, value 설정

impdata013

  • nullValue 설정 결과는 다음과 같음

impdata014

nanValue 처리(추가정리필요)

HDFS에서 불러오는 데이터를 숫자 타입으로 파싱하고 싶은데 "NAN"과 같은 문자열이 입력되어 있을 경우 문자열컬럼으로 인식된다. 이럴 경우 문자열을 NaN(Not a Number)이란 키워드로 대체한 후 숫자타입 필드로 변경할 수 있다.

설정방법은 다음과 같다.

  • "NAN"이란 문자열이 입력되어 자동파싱 결과 String type으로 매핑됨

impdata015

  • property 패널의 5.option에서 [+] 버튼 클릭 후 key, value 설정 후 11. schema에서 image_width 컬럼을 IntegerType()으로 변환

impdata016

  • nullValue 설정 결과는 다음과 같음

impdata017

note

nanvalue 설정결과 이상여부 개발팀 확인필요(사용법미숙 or 기능오류)