메인 컨텐츠로 가기

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

InfoSphere DataStage Java 단계와 ICU4J를 사용하여 ETL 작업으로 음역(transliteration)

DataStage의 Java 변환기 스테이지로 Java 음역 모듈 통합하기

Bharath Devaraju Bharath Devaraju , 소프트웨어 엔지니어, IBM
Bharath Devaraju
Bharath Kumar Devaraju는 2009년부터 IBM에 재직 중이며, 현재는 IBM 클라우드 컴퓨팅 이니셔티브의 일환으로 서비스로서의 데이터에 관한 작업 중이다. 또한 QualityStage 인증된 솔루션 개발자이기도 하다. 그는 고객 POC에 관해 광범위하게 일했으며 성장 시장의 사전 영업 활동을 지원한다.

요약:  성장 시장에서 데이터 품질의 중요성이 그 어느 때보다 높아지면서 지저분하고 구조화되지 않은 데이터를 즉시 정리할 필요가 있습니다. 하지만 이러한 연습 도중에 도전과제 중 하나는 국가가 언어적 데이터를 효율적으로 처리하기 위한 도전과제를 작성하는 언어를 복수로 보유할 수 있다는 점입니다. 예를 들어, 인도에서는 각 주의 공식 언어가 다르고 데이터는 영어와 현지 언어 둘 다로 사용 가능하며, 이는 데이터 일관성의 문제를 악화시킵니다. 이 기사는 음역(transliteration) 프로세스 도중에 일관성을 야기하는 방법 및 IBM® InfoSphere® Information Server DataStage®를 사용하여 시나리오를 추출한 다음 변환하고 로드하는 작업(ETL)의 일부로서 언어적 데이터를 준비하는 방법을 설명합니다.

기사 게재일:  2011 년 10 월 05 일
난이도: 중급 원문:  보기 PDF:  A4 and Letter (88KB | 8 pages)Get Adobe® Reader®
페이지뷰:  925 회
의견:  


소개

성장 시장 지역에서 정리하는 공급업체 또는 솔루션 제공업체가 가장 처음 직면하는 도전과제는 방언과 사용 가능 데이터의 언어학적 불일치이다. 수행해야 하는 첫 단계는 데이터 정리 활동으로 진행하기 전에 데이터에서 일관성을 가져오기 위한 음역(transliteration)이다. 정리 솔루션에 수반된 데이터는 대개 대용량이므로, 이러한 연습은 일반적으로 데이터 웨어하우스 프로젝트 도중에 착수되며, ETL 조작 동안 잘 사용된다. IBM DataStage는 다양한 Java™ 스테이지와 tr4j 라이브러리를 제공하여 Java 프로그램을 ETL 작업과 개발하고 통합하는 면에서 지원한다. tr4j 라이브러리는 DataStage 설치 프로그램과 함께 번들로 제공된다.

ICU4J(International Components for Unicode) 라이브러리는 Java용 오픈 소스 라이브러리이며, 국제화 및 유니코드 지원을 제공하기 위해 다양한 소프트웨어 공급업체들이 널리 사용한다.

이 기사는 icu4jtr4j 라이브러리를 사용하여 음역 Java 프로그램을 개발하고 이를 DataStage의 Java 변환기 스테이지와 통합하는 단계를 보여준다.

선수조건

이 기사에 있는 지시사항을 수행하기 위해 다음과 같은 소프트웨어가 필요하다.

  • InfoSphere DataStage 및 Information Services Director(ISD) 8.5
  • ICU4J(링크는 참고자료 섹션 참조)

게다가, DataStage 설계자로부터 설계하여 실행 중인 ETL 작업 관련 기본 레벨 기술과 Java 프로그래밍 관련 중급 레벨 기술도 필요할 것이다. 입력 파일은 UTF-8 또는 UTF-16 형식으로 인코딩되어야 한다.


Java 변환기 스테이지를 사용하여 ETL 작업 설계하기

첫 단계는 ETL 작업을 설계하는 것이며, 이는 소스 파일로부터 입력을 읽고 변환을 수행하는 Java 변환기 스테이지가 있다. 대상은 파일, 데이터베이스 또는 기타 처리 단계가 될 수 있다.

다음 단계를 수행하여 작업을 설계한다.

  1. DataStage 설계자에서 새로운 병렬 작업을 작성한다.
  2. 팔레트에서 필수 작업 스테이지를 선택한다. 예를 들어, 소스 및 대상으로서 순차 파일 및 Java 변환기 스테이지이다.
  3. 입력 파일 스테이지의 경우 소스 파일의 메타데이터와 위치를 구성한다. Stage 탭에서 파일 스테이지를 두 번 클릭하고 NLS map을 선택한다. 여기에서 입력 파일의 인코딩 유형도 선택해야 한다. 이 예제의 경우 그림 1과 같이 UTF-8을 선택한다.

    그림 1. 입력 파일의 인코딩 유형 지정하기
    스테이지 이름으로 Sequential_File_0 및 맵 이름으로 UTF-8을 보여주는 화면

  4. 출력 파일 스테이지에 이러한 단계를 반복한다. 마지막에 작업은 그림 2와 같이 되어야 한다.

    그림 2. 음역 ETL 작업 설계
    작업이 왼쪽에 Sequential_File_0을 보여주고 DSLink3을 통해 Java_Transformer_1로 이동한 다음에 DSLink$를 통해 Sequential_File_2로 이동함


ICU4J 및 tr4j 라이브러리를 사용하여 음역을 수행하는 Java 프로그램

Icu4j는 지역화 지원을 제공하는 클래스 세트를 제공한다. 음역 기능을 제공하는 기본 클래스는 Transliterator와 Normalizer이다. 이러한 클래스에 대한 자세한 정보는 아래를 참조한다.

  • Transliterator: 이 클래스는 하나의 언어 스크립트에서 다른 언어 스크립트로 문자열을 변환할 수 있는 transliterate() 함수를 제공한다. transliterate 함수는 stateless이며 이전 호출로부터 정보를 보유하지 않는다. transliterate() 함수를 사용하기 전에 대시(-)로 구별되는 필요한 소스 언어와 대상 언어를 이에 제공하여 Transliterator 인스턴스를 초기화해야 한다. 예제: Transliterator.getInstance("Hindi-Latin");
  • Normalizer: 이 클래스는 함수를 제공하여 음역 함수의 출력을 작성되거나 작성 해제된 형식으로 정규화한다. 예를 들어, A-acute와 같은 라틴 문자는 작성된 형식에서 하나로(A) 정규화되거나 작성 해제된 형식에서 두 배로(AA) 정규화된다.

DataStage의 Java 스테이지에 임베드된 Java 프로그램의 경우, 목록 1에 지정된 형식이 되어야 한다. 프로세스 함수는 Java 스테이지로 수행되는 모든 처리 논리가 들어있어야 한다.


리스트 1. Java 변환기 스테이지 내에 임베드되는 Java 프로그램의 형식

public class <classname> extends Stage{
	  public void initialize()    {
	        trace("TableSource.initialize");
	       
	    }

	    public void terminate()    {
	        trace("TableSource.terminate");
	    }
    public int process()    {
				.....
		}
		}

목록 2는 icu4j and tr4j 라이브러리를 사용하여 음역을 수행하기 위한 샘플 프로그램을 보여준다. 이 샘플 코드는 어느 언어로 된 입력이나 라틴어 알파벳으로 음역되어 정규화되는 것을 보여준다. 입력 행은 UTF-8 형식으로 읽는다.


리스트 2. 프로세스 함수 내에서 쓰여진 실제 음역 연산

public String toBaseCharacters(final String sText) {
		    if (sText == null || sText.length() == 0)
		        return sText;

		    final char[] chars = sText.toCharArray();
		    final int iSize = chars.length;
		    final StringBuilder sb = new StringBuilder(iSize);
		   for (int i = 0; i < iSize; i++) {
		        String sLetter = new String(new char[] { chars[i] });
		        sLetter = Normalizer.normalize(sLetter, Normalizer.NFKD);

		        try {
		            byte[] bLetter = sLetter.getBytes("UTF-8");
		            sb.append((char) bLetter[0]);
		        } catch (UnsupportedEncodingException e) {
		        }
		    }
		    return sb.toString();
		}
		
   public int process()    {
	    	try {
	    		
	         //  do {
	        		Transliterator t=Transliterator.getInstance("Any-Latin");
	        		
	            	Row inputRow = readRow();
	            
	        		
	            	  if (inputRow == null) {
	                      return OUTPUT_STATUS_END_OF_DATA;
	                  }

	                  boolean  reject      = false;
	                  int      columnCount = inputRow.getColumnCount();
	                  Row      outputRow   = createOutputRow();

	   for (int columnNumber = 0; columnNumber < columnCount; columnNumber++) 
		  {
	                String value = inputRow.getValueAsString(columnNumber,"UTF-8");

	                      if ((value == null) || (value.indexOf('*') >= 0)) {
	                          reject = true;
	                          outputRow.setValueAsString(columnNumber, value);
	                      } else {
	          outputRow.setValueAsString(
					columnNumber,toBaseCharacters(
								t.transliterate(value)));
	                      }
	                  }

	                  if (reject) {
	                      rejectRow(outputRow);
	                  } else {
	                      writeRow(outputRow);
	                  }
					......



ETL 작업의 Java 변환기 스테이지와 Java 프로그램 통합하기

Java 변환기 스테이지의 특성 페이지에서 표 1에 표시된 세부사항을 제공한다.


표 1. 설정되는 Java 변환기 스테이지의 다양한 특성

특성 이름삽입되는 값
클래스 경로icu4j jar의 항목 경로 언급
위의 예제 its/opt에서 배치된 Java Programs 패키지가 들어있는 폴더의 경로 지정
변환기 클래스 이름음역 Java 프로그램의 클래스 이름 제공

그림 3은 이러한 특성이 설정된 화면을 보여준다.


그림 3. Java Transformer Stage 특성 페이지
화면은 스테이지 이름, 변환기 클래스 이름 및 사용자 클래스 경로의 입력 필드를 표시함

이 단계 이후에 음역 ETL 작업을 실행할 모든 준비가 되었다. 작업을 컴파일하고 실행한다. 입력으로서 작업에서부터 연산을 정리하는 것까지 출력을 사용할 수도 있다.


예외 조건

다음과 같이 발생할 수 있는 예외 조건에 유의한다.

  • 작업이 완료되었지만 출력 파일에 음역된 출력이 들어있지 않은 경우, 입력 파일이 UTF 인코딩 외의 다른 것, 예를 들어 UCS로 저장되었는지 확인한다. 그러한 경우 적절한 편집기를 사용하고 입력 파일의 인코딩을 변경한다.
  • DataStage tr4j 라이브러리는 메시지를 DataStage 디렉터에 로그하여 디버깅을 용이하게 하는 함수를 제공한다. 예를 들어, error()info()이다.

결론

이 기사는 ICU4J 라이브러리와 수행해야 하는 다양한 구성 설정을 사용하여 음역을 수행하는 방법의 질문을 해결했다. 이는 InfoSphere Information Server DataStage를 사용하여 음역을 달성하는 방법을 보여주었다. 음역은 여러 언어적 도전과제를 해결하는 데 핵심 컴포넌트로서 역할을 할 것이며, 예측 가능성을 통한 표준화 규칙 세트를 빌드하는 데 기초를 제공한다. 따라서, 이 기사는 Information Server DataStage를 사용하여 음역 도전과제를 해결하는 방법을 보여주었다.


참고자료

교육

제품 및 기술

토론

필자소개

Bharath Devaraju

Bharath Kumar Devaraju는 2009년부터 IBM에 재직 중이며, 현재는 IBM 클라우드 컴퓨팅 이니셔티브의 일환으로 서비스로서의 데이터에 관한 작업 중이다. 또한 QualityStage 인증된 솔루션 개발자이기도 하다. 그는 고객 POC에 관해 광범위하게 일했으며 성장 시장의 사전 영업 활동을 지원한다.

잘못된 도움말 신고

부정사용 신고

감사합니다. 이 항목은 운영자가 관심을 표시했습니다.


잘못된 도움말 신고

부정사용 신고

제출실패 신고. 나중에 다시 실행해주세요.


디벨로퍼웍스 로그인


IBM ID가 필요하세요?
IBM ID를 잊으셨습니까?


비밀번호를 잊으셨습니까?
비밀번호 변경

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

화면상에 보여지는 닉네임을 정하세요.

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

3개의 &이나 대쉬를 포함해주시고 31글자내로 제한해주세요.


developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


아티클 순위

의견

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=20
Zone=Information Management, 오픈 소스, 자바
ArticleID=763501
ArticleTitle=InfoSphere DataStage Java 단계와 ICU4J를 사용하여 ETL 작업으로 음역(transliteration)
publish-date=10052011

태그

Help
검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오.

태그를 더 많이 보거나 적게 보기 위해 슬라이더 막대를 사용하십시오.

인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다.

내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.

검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오. 인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다. 내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.