2017년 4월 16일 일요일

[TALEND] TALEND의 쿼리 질의기 사용 방법

Talend 기본 SQL Builder 사용하기

본 내용은 간단한 TIP이지만, 많은 사람들이 모르는 것 같아 포스팅합니다. TOS에서 흔히 INPUT 컴퍼넌트에서 사용한 쿼리를 별로의 쿼리 툴에서 조회해야하는 경우가 발생합니다. 이럴때 TOS 내부의 기본 SQL Builder를 이용하여 원하는 쿼리를 조회할 수 있습니다.

SQL Builder 사용

  1. SQL Builder 실행
    1) t(DB)input 또는 t(DB)row 컴퍼넌트에 DB 접속 정보 입력
    • 해당 컴퍼넌트가 DB 접속이 가능해야 SQL Builder를 사용할 수 있습니다.
    • 각종 DB의 Input, row 컴퍼넌트에서 사용 가능


    2) 해당 컴퍼넌트의 Query 입력란 오른쪽의 [SQL Builder]버튼을 클릭


    3) 원하는 쿼리를 입력하고, 실행 버튼 클릭
  2. 참고 사항
    위 [SQL Builder]버튼을 클릭해서 아무런 반응이 없으면, Properties TypeBuilt in으로 변경 후 다시 버튼 클릭

2017년 3월 29일 수요일

[TALEND] 데이터 정렬(Sort)하기

Talend 대용량 데이터 정렬(Sorting)

Studio에서 제공하는 Sorting 기능은 크게 tSortRow와 tExternalSortRow 두개로 나눠져 있습니다. 이는 정렬작업을 Job의 리소스를 이용 하느냐? 외부(외부 프로그램)에서 정렬 작업을 하는냐에 따라 다르게 사용됩니다. 만약 데이터 사이즈가 작은 경우는 일반적인 tSortRow를 이용하면 되지만, 대량 데이터(job이 사용가능한 메모리를 초과하는 사이즈)의 경우는 데이터를 조회하는 과정에서 “java.lang.OutOfMemory” 오류를 만날 확률이 높습니다. 
그럼 tSortRowtExternalSortRow에 대해서 자세히 알아보겠습니다.
  1. tSortRow

    tSortRow는 정렬을 위한 기본 Component이며, 정렬작업을 Job의 메모리 또는 파일(선택 옵션)에서 수행 가능합니다. 다만, 여기서 말한 정렬작업은 정렬이 필요한 데이터를 모두 Job의 메모리에 로딩 후에 이루어집니다. 만약 로딩해야할 데이터(정렬할 데이터) 사이즈가 Job의 메모리보다 크다면 로딩 과정(정렬과정 아님)에서 “java.lang.OutOfMemoryError”가 발생합니다. 따라서 Job의 메모리가 사용가능한 정도로 데이터를 조회해야합니다. (필요하다면 메모리 사이즈 증가 *이전 글 참고)
    [정렬작업을 파일에서 수행하는 방법]
    1) tSortRow 의 Advanced settings에서 Sort on disk 체크
    2) Temp data directory path에 정렬 작업에 쓰일 파일의 디렉토리 경로(파일은 자동으로 생성됨)
    3) 기타 옵션 설정(디렉토리 생성유무 및 버퍼사이즈)
    [주의!] 정렬작업을 파일에서 수행하는 것은 이미 Job의 메모리에 정렬할 데이터가 전체 로드된 후에 파일에서 정렬을 수행합니다.
    정렬할 데이터 로드작업 부터 파일에 쓰기 위해서는 아래 tExternalSortRow를 사용하셔야 합니다.

  2. tExternalSortRow

    tExternalSortRow는 tSortRow의 로딩단계에서 발생하는 “java.lang.OutOfMemoryError”를 물리 칠 수 있는 Componenet입니다. 구동 방식은 조회 된 데이터를 Job의 메모리가 아닌 “①별도의 파일”(Component에서 temp파일을 저장할 디렉토리 지정)로 저장하고, 저장된 파일을 “②별도 외부 정렬 프로그램”을 사용하여 정렬을 수행합니다. 그리고 외부 정렬 프로그램에서 “③정렬된 결과 파일(외부 정렬 프로그램에서 생성한)”을 다시 읽어 다음 Component에 데이터를 넘겨줍니니다.


    [참고1] 해당 Componet의 상세 설명 및 외부 Sorting 프로그램에 대한 자세한 언급은 Talend에서 제공하지 않고 있지 않아서 위 내용정도만 확인되었습니다.
    [참고2] tExternalSortOutput도 동일한 방식으로 구동됩니다.

2017년 3월 16일 목요일

[TALEND] Componet의 Default Encoding Type 변경 방법

Default Encofing Type 변경 방법

  1. Talend Open Studio가 설치된 폴더에서 아래의 경로로 이동
    {Talend Open Studio 설치 폴더}\plugins
    \org.talend.designer.components.localprovider_6.3.0.20161026_1219\components
    \tFileOutputDelimited
  2. tFileOutputDelimited_java.xml 파일을 메모장(Notepad)으로 열기
  3. 찾기 기능(Ctrl+F)을 이용하ISO-8859-15 검색
  4. ISO-8859-15UTF-8로 변경

  5. Talend Open Studio를 재실행 또는 실행된 화면에서 Ctrl+Shift+F3 눌러서 Component Reload 실시
  6. Job에 tFileOutputDelimited Component를 가져와 Default 값으로 UTF-8인지 확인

<기타 Component 변경 방법>

tFileOutputDelimited외 Component도 아래 경로에서 변경을 원하는 Component명의 폴더를 찾아, 위 방법으로 XML파일을 수정하면 됩니다.
  • 기본 경로 : {Talend Open Studio 설치 폴더nm}\plugins \org.talend.designer.components.localprovider_6.3.0.20161026_1219 \components\

2017년 3월 3일 금요일

[TALEND] Shared DB Connection 사용 방법

<설정 방법>

  1. Parent Job에서 ①DB Connection Component 추가 후 ②DB 접속 정보 설정
    Use or register a shared DB Connection 옵션에 DB Connection 명 입력
       * DB Connection 명은 임의의 고유한(Unique) 값을 지정해주시면 됩니다.


  2. tRunjob 에서 Child job 선택

  3. Child Job에도 ①DB Connection Component 추가 후 Use or register a shared DB Connection 옵션에 Parent Job에서 지정한 DB Connection 명 입력
    Child Job의 DB 접속 정보는 입력 불필요


  4. Parent Job을 수행 후 Child Job 정상 실행 확인

[TALEND] Schema 한글 컬럼 사용하기

<설정방법>

  1. [Window] -> [Preferences] 목록에서 [Talend] -> [Specific Setting]
    Allow specific chracters (UTF-8,..) for columns of schemas 체크



  2. Schema에 한글 컬럼 생성 후 실행




<활용 예>

  1. 한글(또는 일본어)컬럼을 사용하는 DB 이행 시, 설정 후 사용
  2. 한글(또는 일본어)컬럼을 사용하는 파일(엑셀) 등을 처리할 때 사용

2017년 1월 4일 수요일

[TALEND] context 사용하기

context란?

  1. Job Build 이후에도 context에 등록한 변수의 값을 수정할 수 있는 Properties 값
  2. context는 Job의 모든 componetn가 공유하여 사용 가능한 전역변수


사용방법

  1. Build 후 수정 가능한 Properties 값으로 사용
    • Job을 Build를 하면 job 파일 내부에는 Defualt.properties 라는 파일이 생성되며, context 내용이 입력됨
      Job이 실행되면 Defualt.properties 파일에 등록된 변수의 값을 사용하기 때문에, DB 정보 변경 등의 상황에 Job을 수정/Build하지 않고 Defualt.properties 파일 변경만으로 변경 내용을 반영할 수 있음




  2. Job 전역 변수로 사용
    • Component(tJava, tJavaRow 등) 내부에서 선언한 변수는 해당 Component와 연관된 범위안에서만 사용할 수 있는 지역변수임
    • job 내부에서 모든 Component가 공유할 수 있는 변수를 사용하기 위해 context 등록하여 사용

그 외 전역 변수 사용 방법

  • GlobalMap 사용
    • 변수 선언
      tSetGlobalVar component를 사용하여 변수 선언
      또는 tJava 에서 globalMap.put("var1","Passion Factory");로 선언


    • 변수 사용
      변수 사용 시, (String)globalMap.get("var1") 으로 변수 호출

2016년 12월 22일 목요일

[TALEND] java.lang.OutOfMemoryError 해결 방법

OutOfMemory 원인과 해결 방안

<발생 원인>

  1. Job실행 시, Load & Transform하는 데이터가 메모리 사이즈보다 큰 경우
  2. 처리과정에서 buffer기능을 사용하여 메모리를 많이 사용하는 경우

<해결 방안>

  1. Job을 특정 조건으로 여러개 Job 으로 분리하여 처리
    큰 사이즈의 XML 파일을 처리 중 에러가 발생하면, 여러개 XML로 Split하여 처리
  2. JVM Heap 메모리 사이즈를 늘려서 실행
    JAVA 32bit 인 경우, 최대 Heap 메모리 사이즈가 4GB

[JVM Heap 메모리 사이즈 늘리는 방법]

  1. [프로젝트 단위]로 설정하는 방법(Job의 기본 값)
    1) [Window] -> [Preferences] 클릭
    2) [Talend] -> [Run/Debug] -> [Job Run VM arguments]에서 메모리 설정 변경
  2. [단일 Job 단위]로 설정하는 방법(Job별 별도 설정)
    1) [Run] -> [Advanced settings] 에서 [Use specific JVM arguments] 체크 박스 클릭
    체크가 되어 있지 않으면, 프로젝트 단위에서 설정한 사이즈가 기본 값으로 설정됨
    2) 메모리 사이즈를 변경
    위 화면에서 설정한 옵션 의미
    -Xms1024M : 초기 Heap 메모리를 1GB로 설정
    -Xmx10G : 최대 Heap 메모리를 10GB로 설정(Java가 64bit 일 경우에만)

[TALEND] TALEND의 쿼리 질의기 사용 방법

Talend 기본 SQL Builder 사용하기 본 내용은 간단한 TIP이지만, 많은 사람들이 모르는 것 같아 포스팅합니다. TOS에서 흔히 INPUT 컴퍼넌트에서 사용한 쿼리를 별로의 쿼리 툴에서 조회해야하는 경우가 발생합니다. 이럴때 TOS...