stlogic · web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을...

364
CDAP 4.3.3 설설설 설설설 설설설

Upload: others

Post on 21-Mar-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

CDAP 4.3.3 설명서

사용자 가이드

Page 2: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

목차

CDAP 사용자 가이드 : 소개..........................................................................................................1

개관 - CDAP 소개..........................................................................................................................2

CDAP 튜토리얼..............................................................................................................................4

예제: 고객 주소에서 배달 경로 만들기...............................................................................5

예제 : New York Times XML Feed Data 작업.....................................................................14

예제 : 주식 선택 파이프라인 구축.....................................................................................26

예제 : IoT 장치 데이터 분석 및 마스킹.............................................................................38

예제 : 사기 분류 기계 학습 모델 작성...............................................................................52

CDAP 파이프라인........................................................................................................................64

CDAP 파이프 라인 소개 (개념 및 디자인)........................................................................66

시작하기................................................................................................................................71

CDAP 스튜디오.....................................................................................................................87

파이프 라인 생성하기..........................................................................................................92

파이프 라인 실행하기........................................................................................................113

플러그인 관리.....................................................................................................................113

데이터 준비 설명서...................................................................................................................128

DataPrep 개념.......................................................................................................................130

성능 평가.............................................................................................................................133

제외 (제한) 및 별칭 지시문...............................................................................................136

Directives..............................................................................................................................139

Catalog Lookup.............................................................................................................139

Change Column Case....................................................................................................141

Changing Case..............................................................................................................143

Page 3: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Cleanse Column Names................................................................................................145

Columns Replace..........................................................................................................147

Copy..............................................................................................................................149

Cut Character................................................................................................................151

Decode..........................................................................................................................153

Diff Date.......................................................................................................................155

Drop..............................................................................................................................157

Encode..........................................................................................................................159

Extract Regex Groups...................................................................................................161

Fail on condition...........................................................................................................163

Fill Null or Empty.........................................................................................................165

Filter Row If Matched...................................................................................................167

Filter Row If True.........................................................................................................169

Filter Rows On..............................................................................................................171

Find and Replace..........................................................................................................173

Flatten...........................................................................................................................175

Format Date..................................................................................................................179

Format UNIX Timestamp.............................................................................................182

Generate UUID.............................................................................................................184

Hash..............................................................................................................................186

Increment a transient variable.......................................................................................191

Indexsplit Indexsplit.....................................................................................................192

Invoke HTTP................................................................................................................193

JSON Path.....................................................................................................................196

Keep..............................................................................................................................201

Mask Number...............................................................................................................203

Page 4: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Mask Shuffle.................................................................................................................205

Merge............................................................................................................................207

Parse AVRO File..........................................................................................................210

Parse AVRO Encoded Messages..................................................................................212

Parse as CSV.................................................................................................................213

Parse as Date.................................................................................................................216

Parse as Excel...............................................................................................................218

Parse as Fixed Length...................................................................................................219

Parse as HL7.................................................................................................................221

Parse as JSON...............................................................................................................224

Parser as Log.................................................................................................................227

Parse as Simple Date.....................................................................................................232

Parse as XML................................................................................................................233

Parse XML to JSON.....................................................................................................234

Quantize........................................................................................................................235

Rename.........................................................................................................................238

Send to Error.................................................................................................................240

Set Charset....................................................................................................................242

Set Column...................................................................................................................243

Set Columns..................................................................................................................245

Set Record Delim..........................................................................................................249

Set Type........................................................................................................................250

Set a transient variable..................................................................................................251

Split By Separator.........................................................................................................252

Split Email....................................................................................................................253

Split to Columns...........................................................................................................256

Page 5: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Split to Rows.................................................................................................................259

Split URL......................................................................................................................262

Stemming......................................................................................................................265

Swap..............................................................................................................................267

Table Lookup................................................................................................................269

Text Distance................................................................................................................271

Text Metric...................................................................................................................274

Trimming Spaces..........................................................................................................277

URL Decode.................................................................................................................280

URL Encode.................................................................................................................282

Write as CSV................................................................................................................284

Write as JSON Map......................................................................................................286

Write as JSON object....................................................................................................288

XPath Directives...........................................................................................................290

Functions.......................................................................................................................291

JSON Functions............................................................................................................291

Type Functions.............................................................................................................294

Geofence Functions......................................................................................................297

Data Quality Functions.................................................................................................299

Date Manipulation Functions........................................................................................302

Data Definition Manipulation Functions......................................................................305

Services.........................................................................................................................308

Administration and Management Services...................................................................308

Connection Properties...................................................................................................314

Connection Service.......................................................................................................315

지시문 실행.................................................................................................................322

Page 6: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

요청 포맷 사양(Request Format Specification).........................................................324

Schema Registry...........................................................................................................327

Data Prep Service..........................................................................................................329

Page 7: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

CDAP 사용자 가이드 : 소개

CDAP 에 오신 것을 환영합니다!

CDAP 는 Hadoop 솔루션을 제공하기 위한 오픈 소스, Apache 2.0 라이선스, 분산 어플리케이션 프레임 워크입니다. 기본 Hadoop 기술을 통합하고 추상화하여 클라우드 또는 온 프레미스(on-premise)에서 복잡한 데이터 분석 어플리케이션을 작성, 배포 및 관리하기 위한 간편하고 사용하기 쉬운 API 와 그래픽 UI 를 제공합니다.이 안내서는 CDAP 의 UI 기능을 사용하는 방법을 설명하며 데이터 과학자 또는 비즈니스 분석가를 위해 작성되었습니다. 이 가이드에는 실습 튜토리얼과 UI 기능에 대한 전체 설명서가 포함되어 있습니다.

CDAP 를 관리하거나 CDAP 용 어플리케이션을 개발하는 경우 다른 설명서(관리 설명서, 개발자 설명서)를 참조하십시오.

1

Page 8: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

개관 - CDAP 소개

Cask Data Application Platform (CDAP)은 빅 데이터 어플리케이션을 위한 통합 플렛폼(Unified Integration Platform) 입니다. 낮은 수준의 코드를 작성하고 디버깅 할 필요없이 거대한 데이터 세트를 처리하고 분석 할 수 있는 간단하고 사용하기 쉬운 추상화(abstraction)를 제공하여 신속한 가치 창출을 가능하게 합니다. 데이터 통합, 검색 및 데이터 과학에서부터 어플리케이션 개발, 보안, 운영 및 거버넌스(govenance)에 이르는 최신 Big Data 기술을 통합합니다. CDAP 는 누구든지 Big Data 에 액세스 할 수 있도록 친숙한 UI 를 제공합니다.

CDAP 는 데이터 작업을 위한 두 가지 시각적 인터페이스를 제공합니다.

Data Preparation 는 간단한 포인트 앤 클릭 변환 지시문(point-and-click transformation directives)를 사용하여 탐색(explore), 정리(cleanse), 준비(prepare) 및 변환(transform) 할 수 있는 대화형 UI 입니다. Data Preparation(데이터 준비)에 대해 자세히 알아보십시오.

Data Pipelines 을 사용하면 데이터 소스(data sources), 변환(transformations) 및 싱크(sinks)를 연결하여 데이터 파이프 라인을 인터랙티브하게 구축 할 수 있습니다. 또한 프로덕션 준비가 완료되고 수익이 중요한 환경에서 데이터 처리를 운영하는 데 도움이 되는 파이프 라인에 대한 로그, 메트릭 및 기타 관리 기능에 대한 통찰력을 제공합니다. 데이터 파이프 라인 섹션 에서 자세히 알아보십시오.

CDAP 에 대한 추가 정보

Cask Data Application Platform (CDAP)은 Apache ™ Hadoop®에서 데이터 어플리케이션을 구축 및 배포하는 오픈 소스 프레임 워크입니다.

CDAP 는 데이터 과학자들이 대규모 데이터 세트를 쉽게 사용할 수 있도록 도와주는 시각적 도구를 제공합니다:

Data Collection: Data Preparation 및 Data Pipelines 둘 다 파일, 데이터베이스 또는 실시간 스트림에 저장된 데이터를 수집하기위한 간단한 UI 를 제공합니다.

2

Page 9: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Data Exploration: Data Preparation 를 통해 데이터를 스프레드 시트 형식으로 보고 탐색 할 수 있습니다. 파이프 라인에 배포하기 전에 데이터에 간단한 변환을 적용 할 수도 있습니다.

Data Processing: 사용자의 Data Preparation 변환 및 사용자 정의 프로그래밍 논리는 파이프 라인에 배포 될 때 Spark 및 MapReduce 작업으로 자동 변환됩니다. 결과적으로 방대한 양의 데이터를 매우 신속하게 분석 할 수 있습니다.

Data Storage: CDAP 는 데이터에 액세스하기 위한 공통 시각적 및 RESTful 인터페이스를 제공하는 내부 데이터 세트를 사용합니다. 데이터 세트의 추상화로 같은 파이프 라인이나 프로그램에서 여러 데이터 형식 및 데이터베이스 형식 (예를 들어, Avro 또는 RDBMS)을 사용하는 것이 간단합니다. 따라서, 복잡한 데이터 형식에 대한 낮은 수준의 세부 사항을 염려 할 필요가 없습니다.

CDAP 를 사용하면 데이터 과학자 및 분석가가 자신의 데이터를 탐색하고 프로덕션 준비가 완료된 파이프 라인을 쉽게 배포 할 수 있습니다. CDAP 를 시작하려면 CDAP 를 여기에서 다운로드하고 이 튜토리얼을 따라 컴퓨터에서 CDAP 을 설정하십시오.

고급 사용자

CDP 는 Data Preparation, Data Pipelines 및 Metatada 에서 제공하는 기능 외에도 사용자 정의 Java 어플리케이션을 신속하게 개발하고 배포 할 수 있는 전체 통합 플렛폼(Unified Integration Platform) 입니다. 단체에서 사용자 정의 어플리케이션을 개발해야 하는 경우 개발자 설명서를 참조하십시오.

3

Page 10: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

CDAP 튜토리얼

아래의 튜토리얼들은 CDAP UI 를 사용하는 방법과 일반적인 사용 사례를 해결하는 방법을 이해하는 데 필요한 신속한 과정을 제공합니다.

고객 주소에서 배달 경로 만들기: 이 튜토리얼에서는 CDAP 의 Data Preparation 및 Data Pipelines 을 사용하여 MySQL 데이터베이스에 저장된 고객 데이터를 정리(clean), 준비(prepare) 및 저장(store)하는 방법을 보여줍니다. CDAP 를 데이터 소스에 연결하는 방법, 기본 변환을 적용하는 방법 및 CDAP 데이터 세트에 쓰는 방법을 학습합니다.

뉴욕 타임즈 XML 피드 데이터 작업: 이 튜토리얼에서는 CDAP 의 Data Preparation 및 Data Pipelines 을 사용하여 New York Times XML 피드에서 가져온 업무상 중요한 정보를 추출하여 제공하는 방법을 보여줍니다.

주식 선택 파이프 라인 구축: 이 튜토리얼에서는 CDAP 의 Data Preparation 및 Data Pipelines 을 사용하여 시장 데이터를 적재하고 구매해야 하는 주식을 식별하는 주식 선택 파이프 라인을 작성하는 방법을 보여줍니다.

IoT 장치 데이터 분석 및 마스킹: 이 자습서에서는 CDAP 의 Data Preparation 및 Data Pipelines 을 사용하여 JSON 형식으로 전송된 IoT 장치 데이터를 정리, 준비, 마스크 및 저장하는 방법을 보여줍니다.

사기 분류 기계 학습 모델: 이 학습서에서는 CDAP 를 사용하여 CDAP 의 포인트 앤 클릭 인터페이스를 사용하여 신용 사기를 예측하는 기업용 기계 학습(Machine Learning)을 작성하고 조작하는 방법을 학습합니다.

4

Page 11: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

예제: 고객 주소에서 배달 경로 만들기

소개

이 튜토리얼에서는 CDAP 의 Data Preparation 및 Data Pipeline 을 사용하여 MySQL 데이터베이스에서 고객 데이터를 정리(clean), 준비(prepare) 및 저장(store)하는 방법을 보여줍니다. CDAP 를 데이터 소스에 연결하는 방법, 기본 변환을 적용하는 방법 및 CDAP 데이터 세트에 쓰는 방법을 학습합니다.

시나리오

고객 주소 데이터를 사용하여 진행중인 프로모션을 위한 고객 맞춤 마케팅 자료를 만들고 이를 사서함에 배포하려고 합니다. 그러나 이 캠페인에 두 가지 제약 조건이 있습니다.

캘리포니아, 워싱턴 또는 오레곤의 고객만을 대상으로 합니다.

연료와 돈을 절약하기 위해, 자동차에서 쉽게 접근 할 수 있는 (Roads 또는 Courts가 아닌) Avenues 인 거리에만 배달을 합니다.

데이터

튜토리얼을 완료하는 데 필요한 데이터가 들어있는 .zip 파일을 다운로드하려면 아래를 클릭하십시오.

Zipfile

비디오 튜토리얼

https://youtu.be/AzQuoIE-jak

5

Page 12: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

단계별 학습

데이터 불러오기

시작하려면 고객 데이터를 불러와야 합니다. demo.sql 은 고객 데이터를 포함합니다. shell에서 MySQL 에 로그인 (mysql -u root 와 유사함)하고 (CREATE DATABASE demo;를 실행하여) demo 라는 데이터베이스를 만듭니다. 그런 다음 mysql 을 종료하십시오(‘exit;’’).

shell 에서 demo.sql 과 동일한 디렉토리로 이동하고 mysql -u root -p demo < demo.sql 을 실행하십시오. 데이터베이스 demo 에는 이제 고객 데이터가 있는 customer 테이블이 있어야합니다.

CDAP 를 열고 상단바 사용하여 Data Preparation 를 시작하십시오. 왼쪽 사이드 바 (아직 표시되지 않는 경우 왼쪽 상단 구석의 화살표를 통해 열 수 있음)에서 “Add Connection”를 클릭하십시오. 그리고 “Database” 소스를 선택하십시오.

MySQL 드라이버가 설치되어 있는 경우 이 단계를 건너 뜁니다. 그렇지 않은 경우 프롬프트를 종료하고 오른쪽 상단의 “Cask Market” 을 클릭하십시오. 왼쪽 메뉴 표시 줄에서 “Drivers”를 선택하십시오. MySQL JDBC 드라이버를 클릭한 다음 화면상의 마법사를 따라 드라이버를 설치하십시오.

“Add Connection” 프롬프트에서 데이터베이스의 이름을 정하십시오 (사용자 자신이 알아볼 수 있는 이름임). host 는 localhost 를, port 는 3306 를 입력하고 username/password 를 수정하십시오 (아래 그림의 예에서는 암호가 없는 root 사용자임). “Test Connection”를 클릭하여 연결이 작동하는지 확인하고 Database 에서 demo 를 선택하십시오.

6

Page 13: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

데이터베이스에 연결했으면 선택한 데이터베이스 이름을 클릭하십시오. 왼쪽 패널의 “Database” 헤더 아래에 있습니다. 그런 다음 customer 테이블을 선택하십시오. 그러면 행 / 열 형식으로 표시된 고객 데이터를 볼 수 있습니다.

다음으로 states.json 파일을 가져와야 합니다. 왼쪽 상단 구석의 흰색 화살표가 있는 회색 테이블을 클릭하고 시스템에 states.json 이 저장된 위치를 탐색합니다. 파일을 한 번 클릭하면 업로드 할 수 있습니다.

주(State) 이름 축약시키기

배달 차량의 nagivation 시스템은 “Califonia”가 아닌 “CA”와 같이 축약 된 주(state) 이름이 포함된 주소만 인식합니다. 그러나 고객 데이터에는 전체 주 이름만 포함됩니다. 방금 가져온 states.json 파일에는 전체 주 이름과 축약 된 주 이름이 있는 두 개의 열이 있습니다. 이를 하나의 맵으로 사용하여 고객 데이터의 주이름을 업데이트 할 수 있습니다.

매핑(mapping)을 만들려면 states.json 탭을 엽니다. Data Prep UI 에서 이 탭을 선택하십시오. body옆에 있는 아이콘(▼)을 사용하여 “Parse” 및 “JSON”을 선택하십시오. 이 지시문을 두 번 적용하십시오.

7

Page 14: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

두 번 적용하는 이유는 먼저 array 수준에서 파싱(parsing)한 다음 array 내의 각 JSON 객체 수준에서 파싱(parsing)해야 하기 때문입니다. title 을 클릭하고 text 를 바꾸어 body_name 이름을 name 으로, body_abbreviation 을 abbreviation 으로 변경하십시오.

이제 “Create Pipeline”을 클릭하고 “Batch”를 선택하십시오. 이제, Pipeline UI 를 사용하고 있으며, “File” 스테이지에서 “Wrangler” 스테이지로의 연결을 볼 수 있을 것입니다. 이 “Wrangler”스테이지는 Wrangler 에서 방금 적용한 지시문들(두 번 적용한 JSON 에 대한 파싱)을 나타냅니다.

“왼쪽 사이드 바에서 Sink” “를 클릭하고 CDAP Table Dataset” “과 Avro Time Partitioned Dataset” 플러그인을 모두 선택하십시오. “Wrangler”스테이지의 output 을 “CDAP Table Dataset”에 연결하십시오. “CDAP Table Dataset” 스테이지를 클릭하고 “Row Field”로 “name”을 추가하십시오.

Pipeline 이름을 “StateNamePipeline”으로 지정하십시오. 그런 다음 “Deploy”를 클릭하여 이 파이프라인을 배포하십시오. 이어서 “Run”을 클릭하여 이 파이프라인을 실행하십시오.

8

Page 15: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

고객 데이터의 주 이름을 전체에서 축약형으로 업데이트하는 데 사용할 수 있는 CDAP Table Dataset 을 만들었습니다.

고객 데이터의 주 이름 업데이트

이제 전체 주 이름을 축약어로 바꿀 수 있습니다. Data Preparation 으로 돌아가서 customer 탭을 선택하십시오.

null state 값에 대한 조회를 수행 할 수 없으므로 null state 값이 없는지 확인해야합니다. 이렇게 하려면 state 의 왼쪽에 있는 아이콘(▼)을 선택하십시오. 아래 그림과 같이 Filter 로 이동 한 다음, Remove Rows 를 클릭하고 If 조건에 value is empty 를 선택하여 값이 비어 있는 경우 해당 행을 지우는 필터를 적용합니다.

이제 : ref :`table-lookup <table-lookup> `지시문를 사용하여 전체 state 이름을 대체하십시오.

9

Page 16: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

CDAP 에서 지시문은 변환을 수행하기 위해 Data Preparation 에서 사용되는 명령입니다. table-lookup 지시문은 CDAP 테이블에 저장된 데이터를 사용하여 열에 저장된 값을 다른 테이블에 매핑하는 데 사용되는 지시문입니다. 예를 들어 StateNameTable 을 사용하여 축약된 주 이름을 조회합니다.

지시문은 table-lookup <column> <table> 형식을 띱니다. 이 경우 열은 state 이고 테이블은 StateNameTable 입니다. 아래 그림과 같이 화면 하단의 명령 프롬프트에서 전체 지시문 (table-lookup state StateNameTable)을 적용합니다.

새 열인 state_abbreviation 이 나타나는 것을 볼 수 있을 것입니다.

화면 하단의 명령 프롬프트에 입력 된 명령은 각 열의 드롭 다운 메뉴를 통해 적용되는 명령과 동일한 방식으로 적용됩니다. 실제로 드롭 다운 메뉴에서 필터를 선택하면 Data Preparation 은 자동으로 동등한 지시문을 생성하고 적용합니다. 오른쪽 사이드 바에 있는 Directives 를 선택하면 이를 볼 수 있습니다. 지시문 옆에 있는 “x”를 클릭하면 해당 변환이 제거됩니다.

더 이상 전체 주 이름이 필요하지 않으므로 이 열을 삭제할 수 있습니다. state 의 왼쪽에 있는 아이콘(▼)을 선택하고 Delete Column 을 선택하십시오. 또한 state_abbreviation 의 이름을 바꿀 수 있습니다. 열 이름을 더블클릭하면 텍스트를 편집 할 수 있게 됩니다. 열 이름을 “State”로 바꿔주십시오.

올바른 주(States) 선택

캘리포니아, 오레곤, 워싱턴 등 태평양 연안의 소비자만을 타겟팅하십시오. 따라서 state에 있는 CA, OR 또는 WA 이외의 값을 포함하는 모든 행을 제거해야 합니다.

이렇게 하려면 state 이름의 왼쪽에 있는 아이콘(▼)으로 이동하십시오. 이 아이콘을 선택하고 Filter 를 선택하십시오. Keep Rows 을 선택하고 드롭 다운 메뉴를 사용하여 if 를 value matches regex 로 선택하십시오.

10

Page 17: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

CA, OR 또는 WA 와 일치하는 정규식(regex)이 필요합니다. 정규식 ^ (CA | OR | WA) $는 아래와 같습니다.

필터를 적용하면 원하는 조건과 일치하는 state 만 남습니다.

올바른 Street Type 선택하기

Avenue 에있는 주소에만 배달하는 것이 (이 경로는 중앙에 위치하므로) 연료와 비용면에서 효율적이라고 생각하기 때문에 “Avenue”라는 단어가 포함 된 주소만 남겨 둡시다.

이 작업은 처음에 보이는 것과는 달리 간단하지 않습니다. 주(states)의 경우에는, 열에 추가 텍스트가 없으므로 주 이름을 간단하게 필터링 할 수 있습니다. 그러나 주소는 다음과 같습니다.

11

Page 18: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

61 Summit Avenue

즉, 단순히 열을 “Avenue”와 동일하게 하는 필터링을 적용하면 안된다는 것 입니다.

이 문제를 해결하기 위해, Contains 기능을 사용합니다. address 열에서 아이콘(▼)을 선택하고 Filter 와 Keep Value 를 선택하십시오. 다음, If 를 value contains 으로 선택하고, Avenue 를 입력하십시오. 또한 ignore case 를 선택하십시오. Apply 를 클릭하여 필터를 적용합니다.

단 한 명의 고객만 남게 되는 것을 볼 수 있을 것입니다. 처음에는 의아해 할 수 있습니다. 그러나 Data Preparation 에는 데이터 세트의 처음 100 개 값만 표시됩니다. 이는 Data Preparation 가 전체 데이터 집합에 커다란 병렬 처리 작업을 보내기 전에 데이터의 일부분에서 변환 효과를 볼 수 있게 하기 때문입니다.

마지막 단계 : 데이터 정리

12

Page 19: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이 마지막 단계는 네비게이션 시스템(navigation system)이 액세스 할 수 있는 데이터 세트에 데이터를 기록하기 전에 데이터를 정리하고 준비하는 데 필요합니다.

네비게이션 시스템에는 country 이름이 필요하지 않으므로 country 열은 사용할 수 없습니다. country 옆에 있는 아이콘(▼)을 선택하고 Delete Column 를 선택하십시오. USA 값이 포함된 열이 표시되어야 합니다.

이제 데이터가 준비되고 데이터 세트에 쓸 준비가 되었습니다.

데이터 세트에 쓰기

마지막 단계는 깨끗한 데이터를 데이터 세트에 작성하는 것입니다. Data Preparation 작업은 데이터 변환을 위한 작은 세트(100 개 레코드) 만 선택하는 반면 Data Pipeline 은 머신들의 한 클러스터에서 이러한 동일한 변환을 병렬화하는 Spark 또는 MapReduce 작업을 실행합니다. 이를 통해 방대한 양의 데이터에 대한 복잡한 변환을 매우 신속하게 적용 할 수 있습니다.

Create Pipeline 을 클릭하고 Batch Pipeline 을 선택하십시오. MySQL 데이터베이스가 실시간 데이터 소스가 아니기 때문에 Batch 가 필요합니다.

Data pipeline UI 에서 Database stage (customer 로 표시됨) 가 Wrangler 스테이지 에 연결되어 있는 것을 볼 수 있습니다. Wrangler state 는 Data Preparation 에서 적용한 모든 변환을 포

함합니다.

왼쪽 바의 “Sink”섹션으로 이동하여 Avro Time Partitioned Dataset sink 를 선택하십시오. Wrangler 의 출력을 이 싱크에 연결하십시오. Avro Time Partitioned Dataset 싱크를 더블클릭하고 CampaignSink 라는 이름을 지정합니다. 마찬가지로 파이프라인의 이름을 CampaignPipeline 으로 지정합니다.

이제 pipeline 을 배치 할 수 있습니다. 오른쪽 상단 구석에 있는 Deploy 를 클릭하십시오. 배포가 완료되면 Run 을 클릭합니다.

Pipeline 이 실행되면 Avro Time Partitioned Dataset sink 를 더블클릭하십시오. 팝업 메뉴에서 View Details 라는 버튼이 표시됩니다. 이 view 를 선택했으면 눈모양 아이콘을 선택하십시오. Excute 를 클릭하여 필드에 미리 채워진 SQL 쿼리를 실행합니다. 아래에 SQL 쿼리 결과가 나타납니다. 이 쿼리 옆에 있는 눈모양 아이콘을 클릭하면 Pipeline 결과가 표시됩니다.

13

Page 20: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

준비된 데이터는 이제 CampaignSink 데이터 세트에 저장되며 RESTful 인터페이스 또는 CDAP UI 를 통해 직접 액세스 할 수 있습니다.

예제 : New York Times XML Feed Data 작업

소개

이 튜토리얼에서는 CDAP 의 Data Preparation 및 Data Pipelines 을 사용하여 New York Times XML 피드 에서 가져온 업무상 중요한 정보를 추출하여 제공하는 방법을 보여줍니다.

시나리오

여러 대륙에 걸쳐 지주회사들을 가지고 있는 다국적 기업인 귀하의 조직은 New York Times 와 같은 여러 다른 뉴스 사이트로부터 나오는 RSS XML 데이터 피드를 모니터링하는 데 관심이 있습니다. 여러 지역에 대한 기사를 관련 분석가에게 전달하려고 합니다.

14

Page 21: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

브라질에 대한 이야기가 웹 앱을 통해 라틴 아메리카의 분석가에게 표시되는 데이터 세트에 쓰여 지길 원합니다.

러시아에 관한 이야기가 웹 앱을 통해 아시아 애널리스트에게 표시되는 데이터 세트에 쓰여 지길 원합니다.

데이터

아래를 클릭하여 튜토리얼을 완료하는 데 필요한 데이터가 들어있는 .xml 파일을 다운로드하십시오.

nytimes-world.xml

비디오 튜토리얼

https://youtu.be/e-5K4cxwGrc

단계별 학습

데이터 불러오기

먼저 위의 데이터 섹션에서 파일을 다운로드 하십시오.

시작하려면 CDAP 홈페이지에서 Data Preparation 탭으로 이동하십시오. Data Preparation에서 왼쪽에 있는 화살표를 선택하십시오. File System 에서 nytimes-world.xml 을 업로드하십시오.

Wrangling the XML

body 열에 XML 데이터의 단일 행이 표시 되어야 합니다. body 열의 드롭 다운 메뉴에서 Parse> XML to JSON 을 선택하십시오. Depth 가 1 인 변형을 적용하십시오.

15

Page 22: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

화면의 오른쪽에는 데이터 선택 및 지시문을 제어하는 데 사용되는 두 개의 탭이 있습니다: Columns 및 Directives. Columns 테이블을 선택하고 body_rss_channel_item 옆의 선택상자에 체크표시하십시오.

16

Page 23: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

체크된 열이 강조 표시된 것을 볼 수 있습니다. 열 이름 옆에 있는 캐럿 아이콘(caret icon)을 사용하여 Keep Selected Columns 를 선택하십시오.

Keep Selected Columns 는 유지하려는 부분만 선택하여 많은 수의 열을 삭제할 수 있는 유용한 지시문입니다.

다른 모든 열들을 삭제해야 합니다. 이제 body_rss_channel_item 을 선택하고 Parse > JSON with Depth 1 을 적용합니다.

이 지시문을 한번 더 적용하십시오. 총 16 개의 열이 나타납니다. 각 행에는 하나의 뉴욕 타임스 스토리의 메타 데이터가 포함되어 있습니다.

마지막으로, 우리에게 유용한 정보가 포함되지 않은 모든 열을 제거합니다. Columns 탭에서 다음을 선택합니다.

body_rss_channel_item_link

body_rss_channel_item_dc:creator

17

Page 24: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

body_rss_channel_item_title

body_rss_channel_item_category

body_rss_channel_item_pubDate

이 열 중 하나에서 드롭 다운 캐럿을 선택하고 Keep Selected Columns 을 선택합니다.

위의 열의 이름을 순서에 맞추어 다음과 같이 바꿉니다.

link

creator

title

category

pubDate

이름을 클릭하여 열 이름을 편집하여 편집 할 수 있습니다.

카테고리 데이터에서 국가 추출하기

귀하의 목표는 아시아 팀이 모니터링하는 데이터베이스에 러시아에 관한 이야기를 보내고 브라질에 관한 이야기를 라틴 아메리카 팀이 모니터링하는 데이터베이스에 보냅니다.

카테고리 열을 살펴보면 JSON 객체에 다음 형식의 URL 이 포함되어 있음을 알 수 있습니다.

18

Page 25: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

http://www.nytimes.com/namespaces/keywords/nyt_geo

nyt_geo 태그를 사용하면 관심 지리적 지역으로 필터링 할 수 있습니다.

이제 관심있는 영역을 검색 할 수 있도록 이 JSON 을 파싱(parsing)하려고 합니다. 카테고리 열의 캐럿 드롭 다운 옵션에서 Parse> JSON 을 선택하십시오. 이 지시문을 카테고리 열에 한 번 더 적용하십시오.

이제 category_domain 과 category_content 라는 두 개의 새 열이 생깁니다.

category_domain 드롭 다운 메뉴에서 Filter> Keep Rows> 값이 포함된 경우를 선택하십시오. 행에 nyt_geo 가 포함되어 있으면 행을 유지하도록 지정하십시오. Apply 을 클릭하십시오.

그러면 지리적 카테고리로 태그된 기사만 남습니다. category_domain 열을 단일 값으로 필터링 했으므로 드롭 다운 메뉴에서 열 삭제를 선택하여 이 열을 삭제할 수 있습니다.

튜토리얼 마지막 부분에서 작성하는 파이프라인에서, 러시아 이야기와 브라질 이야기를 다른 데이터베이스로 보낼 수 있을 것입니다.

URL 정리하기

먼저 링크 열이 다음 형식으로 되어 있는지 확인합니다.

http://www.nytimes.com/2016/09/24/world/asia/chinese-medicine-paul-unschuld.html?partner=rss&emc=rss

19

Page 26: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

partner=rss&emc=rss 접미어를 정리하는 것이 좋습니다. 또한 http://www.nytimes.com 을 기준으로 상대 경로만으로 나타내려 합니다. 예를 들어, 위의 URL 은 다음과 같이 될 것입니다.

/2016/09/24/world/asia/chinese-medicine-paul-unschuld.html

Extract Fields 기능을 사용하여 이 작업을 수행 할 수 있습니다. Extract Field 는 URL, 전자 메일, SSN 등과 같은 데이터의 특성들을 자동으로 파싱 할 수 있는 강력한 도구 모음을 제공합니다.

link 열 드롭 다운에서 Extract Fields> Using Patterns 을 선택하십시오.

패턴을 사용하여 Extract Fields 메뉴에서 Start/End pattern 를 선택하십시오. 시작 패턴을 http://www.nytimes.com 으로 지정하고 끝 패턴을 ?partner=rss&emc=rss 로 지정하십시오.

Extract 을 클릭하십시오. 이제 링크 열을 삭제하고 link_1_1 의 이름을 link 로 바꾸십시오.

날짜 포맷팅

String 타입인 pubDate 열을 Date 객체(object)로 변환하려고 합니다. pubDate 열에서 Parse > Natural Date 를 선택하십시오. timezone 는 GMT 입니다.

이 지시문을 적용하면 Date 객체가 포함된 pubDate_1 이라는 새 열이 표시됩니다. pubDate 열을 삭제하고 이 새 열의 이름을 pubDate 로 바꿀 수 있습니다.

작성자 이름 정리

20

Page 27: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

마지막으로 모든 작성자 이름은 KIRK SEMPLE 과 같이 대문자입니다. Kirk Semple 과 같은 보다 전문적인 형식으로 이름을 제공하는 것이 좋습니다.

작성자 열을 선택하십시오. Format > To TitleCase 에 적용하십시오. 이제 모든 저자 이름이 적절한 제목으로 바뀌었음을 알 수 있습니다.

파이프라인 만들기

이제 데이터를 준비 했으므로 브라질 / 러시아 데이터베이스에 레코드를 보낼 파이프라인을 만들 수 있습니다.

먼저 Pipleline 생성을 클릭하십시오. Batch Pipeline 을 선택하십시오.

다음과 같은 파이프라인이 화면에 표시됩니다.

21

Page 28: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

두 개의 Avro Time Partitioned Dataset sink 를 캔버스에 추가하고 (변형 메뉴에서) 두 개의 Python 을 추가합니다.

캔버스를 아래 표시된 형식으로 배열하십시오.

위에서 네 번째 옵션인 Align 버튼을 클릭하여 노드를 정렬 할 수 있습니다.

상위 Python node configuration 을 엽니다. 미리 채워진 코드를 다음 스니펫으로 대체하십시오.

def transform(record, emitter, context): if (record['category_content'] == 'Brazil'): emitter.emit(record)

이 코드는 category 가 'Brazil'이라고 태그된 경우에만 싱크에 레코드를 전달합니다.

22

Page 29: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Label 을 BrazilEvaluator 로 변경하고 설정 창을 종료하십시오.

이제 BrazilEvaluator 가 기록할 싱크에 대한 configuration 을 엽니다. Label 및 Dataset Name을 모두 BrazilSink 로 변경하십시오.

브라질을 러시아로 대체하고, 파이프라인의 다른 지점에 대해 위의 과정을 반복합니다.

페이지 상단의 Name your pipeline text 을 클릭하고 NewYorkTimesPipeline 으로 파이프라인 이름을 지정합니다.

이제 파이프라인이 아래 이미지와 유사해 보일 것입니다.

pipeline 을 배포하면 더 이상 노드나 설정을 편집 할 수 없습니다. 따라서 파이프라인을 배포하기 전에 데이터 플로우가 의도 한대로 작동하는지 확인하려고 합니다.

그렇게 하려면 Preview 를 클릭하십시오.

Run 을 클릭하면 타이머가 파이프라인이 실행된 시간을 추적하기 시작합니다. 완료되면 각 노드를 통과한 레코드를 볼 수 있습니다. 예를 들어 BrazilEvaluator 를 클릭하면 브라질과 일치하는 레코드만 통과 한 것을 볼 수 있습니다.

23

Page 30: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이제 Deploy 를 클릭하고 배포된 파이프라인을 실행할 수 있습니다.

결과 쿼리하기

BrazilSink 를 클릭하여 configuration 을 보고 오른쪽 상단 모서리에 있는 View Details 를 선택할 수 있습니다.

데이터 세트 페이지가 열리면 오른쪽 상단의 눈 모양 아이콘을 클릭합니다. Execute the window 를 클릭하십시오. 쿼리가 실행되면 눈 아이콘을 클릭하여 결과의 일부분을 봅니다.

24

Page 31: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

축하합니다! New York Times XML 데이터를 정리하고 지리학적으로 분리하여 두 개의 데이터베이스에 기록했습니다.

25

Page 32: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

예제 : 주식 선택 파이프라인 구축

소개

이 튜토리얼에서는 CDAP 의 Data Preparation 및 Data Pipelines 을 사용하여 시장 데이터를 적재(ingest)하고 구입해야 하는 주식 집합을 식별하는 주식 선택 파이프라인을 작성하는 방법을 보여줍니다.

시나리오

당신은 금융 산업에서 일하고 미국 주식 시장에서 거래합니다. 구매할 최고 주식을 선택하려면 많은 변수와 함께 많은 양의 시장 데이터를 적재하고 이 데이터를 처리한 다음 선택된 주식을 산출해야 합니다.

Greenblatt 의 Magic Formula 의 기준을 사용하는 주식 선택 파이프라인을 작성하려고 합니다.

선택된 주식을 뉴욕 증권 거래소 (NYSE)에 제출하는 프로그램에 의해 읽혀질 데이터베이스에 주식 선택을 기록하려고 합니다.

튜토리얼을 완료하는 데 필요한 데이터가 포함된 .csv 파일을 다운로드하려면 아래를 클릭하십시오.

stock_data.csv

비디오 튜토리얼

https://youtu.be/_LB3_qm5yQM

단계별 연습

26

Page 33: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

데이터 불러오기

먼저 위의 데이터 섹션에서 파일을 다운로드하십시오.

시작하려면 CDAP 홈페이지에서 Data Preparation 탭으로 이동하십시오. Data Preparation에서 왼쪽에 있는 화살표를 선택하십시오.

File System 에서 stock_data.csv 를 업로드하십시오.

배경

주식 선택 파이프라인을 구축하고 있습니다. 파이프라인은 NYSE 의 모든 주식을 파이프라인의 각 단계에 도입하고 구매 고려중인 주식 수를 줄입니다.

이 튜토리얼에서는 Greenblatt 의 Magic Formula 로 알려진 인기있는 전략을 구현하고 있습니다. 다음과 같이 계획을 약간 조정할 것입니다.

1. 적어도 5 천만 달러가 넘는 시가 총액(market capitalization)을 설정하십시오.

2. 유틸리티(utility) 및 금융 주식(financial stocks)을 제외합니다.

3. 회사의 자본 수익률(company's return on capital) = EBIT / (순 고정 자산(net fixed assets) + 운전 자본(working capital))를 결정합니다.

4. 선택한 시가 총액(market capitalization)을 초과하는 모든 회사들을 가장 높은 자본 수익률을 기준으로 순위를 매기십시오.

5. 최고 순위의 20 개 기업에 투자하십시오.

최소 시가 총액 (Minimum Market Capitalization) 설정

첫째, 최소 시가 총액(minimum market capitalization) 을 설정하려고 합니다.

stock_data.csv 탭을 선택하여 시작하십시오. body 열에 대한 드롭 다운 메뉴를 선택하고 'Set First Row as Header' 옵션을 선택하고 Parse > CSV 를 적용하십시오. body열의 드롭 다운 메뉴에서 Delete Column 를 선택하여 body 열을 삭제하십시오.

회사의 시가 총액을 계산하려면 주가(share price)에 발행 주식수(the number of outstanding shares)를 곱한 값을 구하십시오. 이것을 다음과 같이 표현할 것 입니다:

estimated_shares_outstanding * (high + low) / 2

27

Page 34: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

estimated_shares_outstanding * (high + low) / 2

high 와 low 는 주식의 일일 최고 및 최저 값입니다.

사용자 정의 JEXL 표현식을 사용하여 market_capitalization 을 계산할 수 있습니다.

먼저 모든 관련 변수의 유형을 올바른 데이터 유형으로 설정해야 합니다. 현재 high, low 및 estimated_shares_outstanding 은 모두 문자열입니다.

화면 맨 아래에 다음 지시문을 입력하십시오.

그러면 데이터 유형이 double 로 바뀝니다. low 및 estimated_shares_outstanding 에 대해 이를 반복합니다. 이 세 열은 모두 double 이어야 합니다.

이제 estimated_shares_outstanding 드롭 다운 열을 선택하고 Custom Transform 옵션을 선택하십시오.

28

Page 35: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

계산 결과는 (사용자 정의 표현식에서 선택한 열이었기 때문에) estimated_shares_outstanding 에 저장되었으므로, 열 이름을 한 번 클릭하고 새 텍스트를 입력하여 market_capitalization 의 이름을 바꿉니다.

마지막으로 시가 총액(market capitalization)이 $ 50m 달러 미만인 모든 회사를 걸러 내고 싶습니다. 화면에서 데이터를 검색하면 Data Preparation 에 표시된 회사 중 시가 총액이 $ 50m 미만인 회사는 없습니다. 그러나 Data Preparation 에서는 데이터 집합의 100 개 행 만을 샘플링하므로 데이터의 다른 위치에 $ 50m 이하의 시가 총액이 있는 회사가 있을 수 있습니다.

이러한 소형 회사를 걸러 내려면 market_capitalization 열을 선택하여 Filter 옵션을 선택하십시오. 아래와 같이 Custom condition 을 “>50000000”으로 적용하십시오.

29

Page 36: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

금융 및 유틸리티 주식 제외

다음 단계는 금융 및 유틸리티 주식(financial and utility stocks) 을 제외하는 것입니다. 이것 은 최소 시가 총액(minimum market capitalization) 설정과 비슷한 단계입니다.

gics_sector 열의 드롭 다운을 선택하고 Filter 를 선택하십시오. 열에 “Financials”가 포함되어 있으면 “Remove Rows”를 선택하십시오 (아래 그림 참조). “Utilities”에 대해 이 설정을 반복하십시오.

30

Page 37: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

자본 수익률 (Return on Capital, ROC) 계산

우리의 최종 목표는 자본 수익률 (Return on Capital, ROC) 를 계산하는 것입니다. ROC 는 다음과 같이 정의됩니다:

EBIT / (net fixed assets + working capital)

또는 본 예제의 열을 사용하면 다음과 같습니다:` earnings_before_interest_and_tax / (fixed_assets + (total_equity - total_liabilities))`

각 회사의 ROC 를 계산하려면 먼저 earnings_before_interest_and_tax, fixed_assets, current_assets 및 current_liabilities 열의 유형을 String 에서 Double 로 변환해야합니다. 이는 set-type 지시문을 사용하여 수행 할 수 있습니다. 예를 들어 set-type fixed_assets double 을 적용해야합니다 (화면 하단의 지시문 프롬프트에 있음).

31

Page 38: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이 열을 변환 한 후 total_equity 열에서 드롭 다운 메뉴를 선택하고 “Custom Transformation”을 선택하십시오. earnings_before_interest_and_tax / (fixed_assets + (total_equity - total_liabilities)) 변환을 적용하십시오.

결과가 total_equity 열에 저장되었으므로 이 열의 이름을 roc 로 바꿉니다.

마지막으로 ROC 를 십진수가 아닌 백분율로 표시하려고 합니다.

roc 열에 대한 드롭 다운 메뉴를 선택하십시오. Calculate > Multiply 를 선택하고 100 을 곱합니다. 이제 roc 열에 자본 수익률(return on capital)이 백분율로 표시됩니다.

32

Page 39: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

상위 20 개 주식을 선택하기 위한 파이프라인 만들기

Data Preparation 는 100 개의 레코드만 표시하고 작동하기 때문에 전체 데이터 세트에 대한 논리를 조작 할 방법이 필요합니다. “Create Pipeline”을 클릭하고 Batch 를 선택하십시오.

이 섹션에서는 모든 주식 데이터를 적재하고 위의 기준으로 필터링하고 ROC 를 사용하여 상위 20 개의 주식을 선택하고 데이터 집합에 쓰는 파이프라인을 만듭니다.

파이프라인을 처음 만들 때 아래와 같이 나타납니다.

33

Page 40: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Wrangler (Data Preparation) 노드의 출력을 상위 20 개의 주식을 선택할 노드로 공급하는 방법이 필요합니다.

Top-N 플러그인을 위해 Cask Market 으로 이동합시다. CDAP 에는 많은 유용한 플러그인이 번들로 제공됩니다. 그러나 Cask Market 은 빅 데이터 애플리케이션을 위한 오픈 앱 스토어로 많은 것들이 포함되어 있습니다.

오른쪽 상단 모서리에있는 Cask Market 을 클릭합니다.

34

Page 41: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

“Plugins”섹션에서 “Top-N”을 선택하십시오.

35

Page 42: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Top-N 어플리케이션을 배포합니다. “StockPipeline”이라는 이름으로 파이프라인을 저장하고 페이지를 새로 고칩니다. Top-N 플러그인이 화면 왼쪽의 플러그인 메뉴에 있는 Analytics 섹션에 나타납니다.

캔버스에 Top-N 노드를 추가하고 Avro Time Partitioned Dataset sink 를 추가합니다.

Avro Time Partitioned Dataset sink 의 이름을 StockSink 로 설정하고 “Database Name”에 StockSink 을 입력하십시오.

Top-N 플러그인에서 필드를 “roc”(순위를 지정하려는 행이므로)로 지정하고 size 를 20으로 설정하십시오 (상위 20 개 주식을 원하므로).

아래 그림처럼 순서대로 노드를 연결하십시오.

36

Page 43: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이제 “Deploy”(오른쪽 상단 모서리에 있음)를 클릭하십시오. 파이프라인이 배치되면 “Run”을 누릅니다.

StockSink 를 클릭하고 “View Details”를 선택하십시오. 여기서 쿼리를 실행하여 선택한 상위 20 개의 주식을 볼 수 있습니다. 상위 5 위가 BBBY, BIIB, AME, AMAT 및 BMY 순서대로 표시됩니다.

NYSE 에서 거래를 실행할 수 있는 프로그램에 대한 RESTful 호출을 사용하여 데이터베이스에 쿼리를 실행할 수 있습니다.

37

Page 44: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

예제 : IoT 장치 데이터 분석 및 마스킹

소개

이 튜토리얼에서는 CDAP 의 Data Preparation 및 Data Pipelines 을 사용하여 JSON 형식으로 전송된 IoT 장치 데이터를 정리(clean), 준비(prepare), 마스크(mask) 및 저장(store)하는 방법을 보여줍니다.

시나리오

FitBit 장치 데이터를 JSON 형식으로 받습니다. 외부 계약자와 데이터를 공유하는 데 관심이 있지만 공유 전에 개인 식별 정보를 제거하기 위해 데이터를 마스킹 (data masking)해야 합니다.

FitBit JSON 데이터를 파싱(parsing)하고, UNIX timestamp 를 추출하고, 장치의 ID를 마스크 처리하고, 결과를 해시(hash)하고, CDAP 테이블에 저장합니다.

계약자(contractor)가 사용할 데이터베이스에 마스크 결과를 작성합니다.

데이터

튜토리얼을 완료하는 데 필요한 데이터가 들어있는 .json 파일을 다운로드하려면 아래를 클릭하십시오.

FitBit_Device.json

비디오 튜토리얼

https://youtu.be/V8e6yr8hpZA

38

Page 45: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

단계별 학습

데이터 불러오기

위의 데이터 섹션에 링크된 데이터를 다운로드하십시오. Data Preparation 를 열고 FitBit_Device.json 을 “File”로 업로드하십시오.

데이터가 body 열에 로드되면 body 열의 드롭 다운 메뉴에서 Parse > JSON (Depth 1)을 선택합니다. 이렇게 하면 array 의 각 JSON 객체가 포함된 행이 만들어집니다.

39

Page 46: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

JSON 필드들을 열로 분할하려면 Parse > JSON 지시문을 본문 열에 한 번 더 적용하십시오.

이제 body_device_id, body_calories_burnt, body_duration, body_timestamp 라는 네 개의 열이 생깁니다.

드롭 다운 메뉴를 선택하고 Delete Column 를 선택하여 body_duration 열을 삭제하십시오. 모든 행의 값이 60 이므로 이 열은 필요하지 않습니다.

장치 ID 마스킹

40

Page 47: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이 데이터에는 FitBit 장치 ID 가 들어 있습니다. 이것은 개인적으로 식별되는 정보로서 잠재적으로 데이터가 수집된 사용자에게 피해를 줄 수 있습니다. 악의적인 행위자가 중요한 개인 정보를 도용하지 못하도록 이 데이터를 가려야(mask) 합니다.

이렇게 하려면 body_device_id 열의 드롭 다운 메뉴에서 Mask Data 지시문을 적용하면 됩니다.

41

Page 48: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

마지막 Show last 4 characters only 를 선택하십시오. 이렇게하면 마지막 4 자를 제외한 모든 문자가 해시로 마스킹됩니다. 셔플링(Shuffling)은 원래 정보를 재구성 할 수 없도록 열의 숫자 / 문자를 무작위로 섞습니다.

42

Page 49: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

UNIX Timestamp 에서 시간 추출하기

body_timestamp 는 1970 년 1 월 1 일 이후의 경과 시간 (초)을 나타내는 UNIX timestamp 로 형식이 지정됩니다.

데이터의 시간을 찾으려면 timestamp 의 모듈로(modulo)를 하루의 초수인 86400까지 계산해야 합니다. 정확한 작업은 다음과 같으며, 자정 이후의 시간을 산출합니다.

body_timestamp % 86400

먼저 body_timestamp 유형이 String 임을 알게 될 것입니다. String 에서 수학 연산을 수행 할 수 없습니다! 이 문제를 해결하려면 body_timestamp 를 float 와 같은 적절한 데이터 유형으로 변환해야합니다.

그렇게하려면, 화면 하단의 프롬프트에 다음 지시문을 입력하십시오.

set-type 지시문은 다른 데이터 유형 간의 변환에 사용됩니다. 여기서 String 을 부동소수점 10 진수를 나타내는 데 사용되는 Float 으로 변환했습니다.

43

Page 50: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이제 적절한 데이터 형식으로 timestamp 를 얻었으므로 위에서 설명한대로 모듈로(modulo)를 계산할 수 있습니다. body_timestamp 의 드롭 다운 메뉴를 사용하여 모듈로 연산을 적용 할 수 있습니다. Calculate > Modulo 를 선택한 다음 86400 을 지정하십시오.

아래 그림과 같이 계산된 timestamp 를 확인할 수 있습니다. 이 값은 자정 이후 초단위 시간을 나타냅니다. 예를 들어, 첫 번째 행에는 3070.0 값이 포함되어 있습니다. 이는 FitBit 데이터가 자정 이후 3070.0 초 후에 읽혔다는 것을 의미합니다.

잘못된 데이터 처리를 위한 옵션 검사

데이터를 스캔하면 모든 데이터가 유효한 것은 아닌 것을 알게 될 것입니다. 13 행은 body_calories_burnt 를 -7 로 나열합니다. 이는 음수의 칼로리를 (예 : 도넛을 먹는 것) 태우는 것에서 비롯된 것일 수 있지만, FitBit 에서 잘못 읽은 것 일 확률이 더 큽니다.

44

Page 51: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이 잘못된 데이터를 처리하기 전에 body_calories_burnt 의 데이터 유형을 String 에서 Float로 변경해야합니다. 이 작업은 set-type body_calories_burnt Float 지시문을 적용하여 수행 할 수 있습니다.

이제 잘못된 데이터를 처리 할 수 있습니다.

먼저 send-to-error 지시문을 살펴 보겠습니다. send-to-error 는 파이프라인에서 처리 될 때 레코드를 오류로 표시하고 데이터 플로우의 다음 노드가 아닌 오류 노드에 레코드가 기록되도록합니다.

이 지시문을 적용하면 다음이 표시됩니다.

45

Page 52: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

왜 이런 결과가 나온 걸까요?

Data Preparation 에서는 FitBit.json 파일인 단일 “record”를 적재했습니다. 이 단일 레코드를 여러 개의 출력 레코드로 분리했지만 여전히 단일 입력 레코드입니다. 따라서 send-to-error 를 적용 할 때 전체 레코드를 오류로 표시합니다. 따라서 데이터가 표시되지 않습니다.

send-to-error 는 모든 부분이 유효하지 않은 한, 데이터 전체를 승인하고 싶지 않을 때 매우 유용합니다.

이 경우 분석의 전체 결과에 영향을 미치지 않으므로 오류를 포함하는 읽기를 해도 문제 없습니다.

send-to-error 지시문을 제거하려면 오른쪽 사이드 바에서 send-to-error 옆의 “x”(지시문 12 번)를 클릭하십시오.

46

Page 53: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

그러면 데이터가 다시 나타날 것입니다.

레코드를 오류로 보내는 대신 Filter 를 적용 할 수 있습니다. Data Pipelines 에 오류 레코드가 생성되지는 않지만 처리 할 때 잘못된 데이터가 제거됩니다.

body_calories_burnt 열에서 Filter 를 선택한 다음 Custom condition 에서 Remove Rows 를 선택하십시오. 조건을 0 보다 작게 지정하십시오.

47

Page 54: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

그러면 오류가 있는 행이 제거되었음을 알 수 있습니다.

전송을위한 데이터 인코딩

전송시, 일반 텍스트는 Base64 로 인코딩 될 때 전송 오류에 보다 강합니다. 따라서 Base64에서 모든 열을 인코딩하려고합니다.

먼저 body_calories_burnt 및 body_timestamp 를 지시문 set-type body_calories_burnt String 과 set-type body_timestamp String 을 적용하여 문자열로 변환합니다.

이제 어느 하나의 열의 드롭 다운 메뉴에서 Encode 을 선택한 다음 Base64 를 선택하십시오.

48

Page 55: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

모든 열에 대해 이 단계를 반복하십시오. 이제 데이터가 Base64 형식으로 인코딩됩니다. 원래 열을 삭제하십시오.

49

Page 56: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

테이블에 결과 저장하기

마지막으로, CDAP Table Dataset 에 데이터를 기록하여, 마스크 된 데이터를 연구할 분석가에게 보낼 수 있습니다.

CDAP Table Dataset 에는 각 행에 고유 식별자가 필요합니다. 고유 한 장치 ID 를 마스크했기 때문에 마지막 4 자리의 Base64 인코딩이 일치 할 수 있습니다. 덮어 쓰여질 행이 없도록 하려면 generate-uuid 지시문을 사용합니다.

UUID 는 고유 식별자입니다. generate-uuid 는 각 행에 대해 UUID 를 생성합니다. 화면 맨 아래에 프롬프트에서 generate-uuid uuid 를 입력하면 uuid 라는 새 열이 만들어집니다.

이제 데이터를 CDAP Table Dataset 로 가져올 준비가 되었습니다.

오른쪽 상단 구석에있는 Ingest Data 를 클릭하십시오.

Table 를 선택하고 이 표의 이름을 “FitBitTable”로 지정하십시오. 이 값이 고유하다는 것을 알고 있으므로 행 키는 uuid 로 지정해야합니다.

50

Page 57: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Ingest Data 를 클릭하십시오. 작업이 완료되면 Explore Data 을 클릭하십시오.

화면에 표시되는 쿼리를 실행하십시오. 방금 작성한 데이터가 테이블에 기록 된 것을 볼 수 있습니다!

51

Page 58: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

52

Page 59: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

예제 : 사기 분류 기계 학습 모델 작성

소개

이 튜토리얼에서는 CDAP 를 사용하여 CDAP 의 포인트 앤 클릭 인터페이스(point-and-click interface)만 사용하여 신용 사기를 예측하는 기업용 기계 학습(Machine Learning)을 구축하고 운영하는 방법을 학습할 것입니다.

시나리오

당신은 많은 신용 카드 거래를 처리하고 있습니다. 사기성 거래를 확인하는 것은 비즈니스에 매우 중요합니다.

레이블이 달린 데이터를 사용하여 로지스틱 회귀 모델(Logistic Regression model) 을 학습시키려고 합니다.

실시간으로 모델에 이벤트를 보내고 사기성인 것으로 예상되는 것을 보길 원합니다.

데이터

튜토리얼을 완료하는 데 필요한 데이터가 포함된 .csv 파일을 다운로드하려면 아래 링크를 클릭하십시오.

fraud_train.csv

비디오 튜토리얼

https://youtu.be/bt_qTj63c04

53

Page 60: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

단계별 학습

데이터 불러오기

위의 데이터 섹션에 링크된 데이터를 다운로드하십시오. 데이터 준비를 열고 fraud_train.csv 를 “File”로 업로드하십시오. 이것은 모델을 훈련시키는 데 사용될 데이터입니다.

데이터 정리 및 탐색

먼저 데이터를 파싱(parsing)해야합니다.

body 열 드롭 다운 메뉴에서 Parse > CSV 를 선택하여 첫 번째 행을 머리글로 설정합니다.

그런 다음 body 열 드롭 다운에서 Delete Column 를 선택합니다. id 열은 회귀 분석에서 사용하지 않으므로 삭제할 수도 있습니다.

Amount 를 제외하고 모두 정규화 된 8 개의 예측 변수가 있습니다:

normalized_total_spent_last_24_hours: 지난 24 시간 동안 소비된 총계입니다.

normalized_merchant_fraud_risk : 가맹점의 사기 거래 기록.

normalized_time_since_last_transaction : 마지막 구매 이후의 시간.

normalized_average_transaction : 평균 거래(transaction) 크기.

normalized_time_till_expiration : 카드가 만료 될 때까지의 시간.

normalized_daily_average_transaction : 하루 평균 거래 수입니다.

normalized_change_in_merchant_sales : 전날 판매점 판매 변경.

Amount : 거래에 소비된 금액입니다.

데이터의 첫 번째 행은 아래 그림과 같아야 합니다.

54

Page 61: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

모델 구축 절차 개요

로지스틱 회귀 모델을 구축하는 과정은 학습(training) 및 테스트(testing)의 두 단계로 나뉩니다. 학습 과정에서는, 데이터를 준비하고 Logistic Regression 플러그인을 학습시킵니다. 이 부분에서는 “fraud_train.csv”파일을 사용할 것 입니다.

테스트를 위해 학습된 모델을 사용하여 이전에는 보이지 않던 거래들의 결과를 예측합니다.

학습: 상호 작용 효과 포착

회귀 분석에서 상호 작용 효과를 포착하기 위해 두 변수를 결합하는 변수를 만듭니다.

특히 normalized_total_spent_last_24_hours 와 normalized_average_transaction 의 비율인 24_hour_to_average_ratio 라는 합성 변수를 생성하려고 합니다.

먼저 normalized_total_spent_last_24_hours 유형을 Double 로 설정해야합니다. 현재는 String입니다. 그렇게 하려면, 화면 하단의 프롬프트에 다음 지시문을 입력하십시오.

55

Page 62: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

normalized_average_transaction 에 대해 이 절차를 반복하여 해당 데이터 유형이 Double이되도록하십시오.

이제 상호 작용 변수(interaction variable)를 만들 수 있습니다. 둘 중 하나의 열의 드롭 다운 메뉴를 선택하고 Custom Transform 을 적용하여 이 작업을 수행 할 수 있습니다. 그러나 사용자 정의 변환은 현재 열의 값을 바꿉니다. 따라서 먼저 normalized_total_spent_last_24_hours 를 복사하고 이름을 twentyfour_hour_to_average_ratio로 바꾸고 열 구분의 결과를 이 열에 저장해야 합니다.

normalized_total_spent_last_24_hours 를 복사하려면 드롭 다운 메뉴와 Copy Column 를 선택하십시오. 새 열의 이름을 twentyfour_hour_to_average_ratio 로 바꾸고 Apply 를 누릅니다.

56

Page 63: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이제 상호 작용 변수를 계산할 수 있습니다. twentyfour_hour_to_average_ratio 에 대한 드롭 다운 메뉴를 선택하고 Custom Transform 을 선택하십시오. 아래 그림과 같이 변환을 적용하십시오.

57

Page 64: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

결과가 twentyfour_hour_to_average_ratio 열에 저장되어 있음을 알 수 있습니다.

마지막으로 모든 열의 유형을 Double 으로 설정해야합니다. 위와 같이 set-type 지시문을 사용하여 이를 수행하십시오. 또는 다음의 지시문을 붙여 넣을 수도 있습니다.

set-type normalized_merchant_fraud_risk Doubleset-type normalized_time_since_last_transaction Doubleset-type normalized_days_till_expiration Doubleset-type normalized_change_in_merchant_sales Doubleset-type normalized_transaction_time Doubleset-type Amount Doubleset-type Class Double

학습(Training) : 파이프라인에서 모델 배포

오른쪽 상단에서 “Create Pipeline”을 클릭하십시오. Batch 를 선택하십시오.

다음 구성이 화면에 표시됩니다.58

Page 65: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

로지스틱 회귀 모델을 학습시킬 것이므로 이제 로지스틱 회귀 플러그인을 캔버스에 추가하려고 합니다. Cask Market 에서 제공되는 이 플러그인을 다운로드해야 합니다.

“글로벌 탐색 바에서 Cask Market” 을 선택하십시오. application “메뉴에서 Logistic Regression Analytics” 를 찾아 플러그인을 배포하십시오.

이제 파이프라인 “을 LogisticRegressionTrainer” 로 저장하십시오.

페이지를 새로 고치고 왼쪽 메뉴의 “Sink”탭 아래에 “Logistic Regression Trainer”가 있습니다. 이 플러그인을 캔버스에 추가하고 “Wrangler” 스테이지에 연결하면, 아래 그림과 같은 구성을 띨 것입니다.

59

Page 66: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

캔버스를 보면 여러 스테이지에서 오른쪽 상단에 작은 노란색 숫자가 표시되어있는 것을 볼 수 있습니다. 이 값은 파이프라인을 배포하고 실행하기 전에 몇 개의 필드를 구성해야하는지 알려줍니다.

File 스테이지를 열고 Label 및 reference name 을 변경하여 이름을 “CreditCardSource”로 바꿉니다. 마찬가지로 “Wrangler”의 이름을 “CreditTransform”으로, “LogisticRegressionTrainer”을 “FraudTrainerSink”로 변경하십시오.

Trainer configuration 에서 Label Field 를 Class 로 지정하십시오. 이것은 로지스틱 회귀 모델이 예측할 수 있는 필드입니다. 또한 FileSet Name 에 “FraudModel”값을 지정합니다. 이 값은 훈련된 모델이 저장되는 파일 세트입니다.

60

Page 67: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

구성된 파이프라인은 아래 그림과 같은 파이프라인으로 나타납니다.

파이프라인 구성을 테스트하려면 오른쪽 상단 모서리에서 Preview 를 클릭한 다음 Run 을 클릭하십시오. 미리보기가 완료되면 LogisticRegressionTrainer 를 열고 Preview 탭에서 플로우를 거친 레코드를 볼 수 있습니다.

이제 “Deploy”를 클릭하고 파이프라인을 실행할 수 있습니다.

61

Page 68: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

테스트(Testing) : Unknown 이벤트 평가

“fraud_train.csv”파일로 작업하고 있던 Data Preparation 으로 돌아갑니다. “Create Pipeline”을 다시 클릭하십시오.

File 노드를 삭제하십시오. 그 자리에서 “CDAP Stream”소스를 “Wrangler”스테이지에 연결하십시오. Wrangler 스테이지에는 테스트 데이터에 적용하려는 모든 변형이 있으므로 이 원래 절차를 반복했습니다.

“CDAP Stream”을 “FraudStream”으로 명명하고 duration 를 10m 로 지정하십시오.

“LogisticRegressionClassifier” “를 캔버스에 추가하고 Avro Time Partitioned Dataset” 싱크를추가하십시오. “Wrangler” “를 CreditTransform”, “LogisiticRegressionClassifier” 를“FraudClassifier”로, “Avro Time Partitioned Dataset” “을 FraudSink” 로 변경하십시오.

“FraudClassifier”스테이지에서 FileSet Name 을 “LogisticRegressionModel”로, Prediction Field 를 “Class”로 설정합니다.

62

Page 69: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

“FraudSink”스테이지에서 Dataset Name 을 “FraudSink”로 지정하십시오.

이제 파이프라인 이름을 “FraudClassifier”로 지정하고 배포 할 수 있습니다.

스트림의 속성을 열고 “View Details”를 클릭하십시오. 업로드 화살표를 클릭하고 아래의 이벤트들을 화면에 표시되는 텍스트 상자에 붙여 넣습니다. 이는 새로 생성된 스트림으로 이벤트를 보내게 됩니다.9253,-6.18585747766,7.10298492227,-13.0304552639,8.01082339822,-7.88523736132,-3.9745499936,-12.2296077787,44.98175,-0.734303155038,0.435519332206,-0.530865546585,-0.47111960693,0.643214386605,0.713832369658,-1.23457207133,29.956015,-

63

Page 70: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

2.29698749922,4.0640433419,-5.95770634517,4.68000806392,-2.0809375996,-1.46327216002,-4.49084686932,104.0434,-1.70678465109,0.291716504769,1.7070939159,0.551977355909,0.234141485112,-0.265204391462,0.0453993133097,38.193174,1.20124498017,-0.599557518154,0.604505150814,-0.807313717744,-0.43403239775,0.823049573638,-0.858524252306,6.41

이 이벤트들을 아래 그림과 같이 Send Events to FraudStrem 상자에 붙여 넣습니다.

파이프라인이 산출되어 나오면 “Run”을 클릭하십시오. 마지막으로 구성에서 “View Details”를 클릭하고 데이터베이스를 쿼리하면 “FraudSink”분류 결과를 검사할 수 있습니다. Class field 를 보면 두 개의 이벤트의 클래스가 “1”로 표시되어, 이들 이벤트가 사기성이라고 예측되었다는 것을 알 수 있습니다.

64

Page 71: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

CDAP 파이프라인

Data Pipelines 을 사용하면 Spark 및 MapReduce 를 사용하여 변환(transformations) 및 프로그래밍 논리를 병렬 처리 계산으로 변환하는 CDAP 의 기능을 활용하여 데이터를 변환 및 로드 할 수 있습니다 Data Pipelines 은 사용자가 직관적인 UI 를 사용하여 복잡한 데이터 처리 워크 플로우 (배치 및 실시간 모두)를 생성 할 수 있도록 도와줍니다. 파이프라인은 로그(logs) 및 메트릭(metrics)에 쉽게 액세스 할 수 있도록 지원하므로 관리자가 여러 가지 도구를 사용하지 않고도 데이터 처리 워크 플로우를 쉽게 조작 할 수 있습니다.

Data Pipelines 은 Directed Acylic Graph (DAG)에 배열된 일련의 스테이지들(stages)로 표현됩니다. 이것은 단방향 파이프라인을 형성합니다. 파이프라인 그래프 (pipeline graph) 에서 “노드(nodes)”인 스테이지(stage)는 크게 6 가지 범주로 분류 할 수 있습니다:

Sources (소스)

Transforms (변환)

Analytics (분석)

65

Page 72: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Actions (작업)

Sinks (싱크)

Error Handling (오류 핸들러)

Sources(소스)는 데이터를 가져 오는 데이터베이스, 파일 또는 실시간 스트림입니다. 이를 통해 간단한 UI 를 사용하여 데이터를 수집 할 수 있으므로 저수준 연결을 코딩하는 것에 대해 걱정할 필요가 없습니다.

Transforms(변환)을 사용하면 데이터를 처리 한 후에 데이터를 조작 할 수 있습니다. 예를 들어 레코드을 복제 할 수 있습니다. JSON 을 형식화 할 수 있습니다. Javascript 플러그인을 사용하여 사용자 정의 변환들을 작성할 수도 있습니다.

Analytics (분석)플러그인은 데이터에 대한 분석 또는 기계 학습 작업(Machine Learning tasks)을 실행하는 데 사용됩니다. 예를 들어, 배치 소스(batch source)에 로지스틱 회귀(logistic regression) 또는 Naive Bayes 를 실행할 수 있습니다. CDAP 는 다양한 사용 사례(use cases)를 위한 내장 플러그인을 제공합니다.

Action (작업)플러그인은 워크 플로우 중에 수행되도록 예약된 사용자 지정 작업을 정의하지만 워크 플로우의 데이터를 직접 조작하지는 않습니다. 예를 들어 Database custom action 을 사용하면 파이프라인 끝에 임의의 데이터베이스 명령을 실행할 수 있습니다. 또는 HDFS 클러스터 내의 파일을 이동하는 작업(action)을 트리거 할 수 있습니다.

이에 더하여, 스테이지에 null 값, 논리 오류 또는 기타 오류 소스가 발생하면 Error Handler (오류 핸들러)플러그인을 사용하여 오류를 포착 할 수 있습니다. 이 플러그인은 오류를 포착하는 변환 또는 분석 analytics 플러그인의 출력에 첨부됩니다. 그런 다음 이러한 오류를 검사하거나 분석 할 데이터베이스에 기록 할 수 있습니다.

마지막으로 데이터를 Sink(싱크)에 써야합니다. 싱크는 Avro, Parquet 또는 RMBDS 와 같은 다양한 형식으로 제공되며 간단한 UI 로 연결됩니다. 이러한 싱크들에 기록된 데이터는 CDAP UI 또는 RESTful API 를 사용하여 쿼리 할 수 있습니다.

필요한 플러그인이 없는 경우 개발자 설명서에 설명 된대로 자체 플러그인을 구축해야 할 수 있습니다.

Data Pipelines 는 시각적인 인터페이스만 사용하여 MapReduce 또는 Spark 를 실행하는 Big Data 어플리케이션을 만들고 배포 할 수 있습니다.

66

Page 73: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

CDAP 파이프 라인 소개(개념 및 디자인)

CDAP Pipelines 은 Hadoop 에서 데이터 파이프 라인을 개발, 실행, 자동화 및 운영하는 셀프 서비스, 재구성 및 확장 가능한 프레임 워크입니다. 완전 오픈 소스이며 Apache 2.0 라이센스에 따라 라이센스가 부여됩니다.

파이프 라인은 CDAP 의 기능이며 CDAP Studio 를 포함합니다. CDAP Studio 는 시각적인 클릭 앤 드래그 인터페이스(click-and-drag)로서, 미리 구축된 플러그인들의 라이브러리에서 데이터 파이프 라인을 작성하기위한 것입니다.

CDAP 는 메트릭, 로그 및 기타 런타임 정보의 라이프 사이클 제어 및 모니터링을 가능하게 하는 파이프 라인 결과에 대해 작동 보기(operational view)를 제공합니다. 파이프 라인은 CDAP UI, CDAP CLI (Command Line Interface, 명령 줄 인터페이스)또는 명령 줄 도구와 같은 도구를 사용하여 CDAP 에서 직접 실행할 수 있습니다.

파이프 라인

파이프 라인은 특히 아티팩트(artifacts)에서 생성된 데이터 플로우 처리를 위한 어플리케이션입니다.

아티팩트는 “어플리케이션 템플릿”입니다. 파이프 라인 어플리케이션은 원하는 어플리케이션을 정의하는 구성 파일(configuration file)과 함께 구성(configuration) 내에 지정된 아티팩트와 함께 CDAP 에 의해 만들어집니다. 데이터 파이프 라인을 생성하는 아티팩트는 CDAP 와 함께 제공됩니다.

스테이지와 플러그인

파이프 라인은 일련의 스테이지(stage)로 구성되어 있는 것으로 볼 수 있습니다. 각 스테이지는 특정 기능을 제공하는 CDAP 의 확장인 플러그인의 사용법입니다.

스테이지의 구성 속성은 해당 플러그인이 수행해야 할 것들 (스트림에서 읽기, 테이블에 쓰기, 스크립트 실행)을 설명하며 사용된 특정 플러그인에 종속됩니다.

67

Page 74: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

모든 스테이지는 연결된 일련의 아이콘으로서 CDAP Studio 및 CDAP 에서 표시되는 directed acyclic graph (또는 DAG)로 함께 연결됩니다.

파이프 라인의 일반적인 진행은 다음과 같습니다.

1. 사전 실행 작업 (pre-run operations): 파이프 라인이 실제로 실행되기 전에 필요한 준비 작업 (예 : 리소스 준비)

2. 데이터 수집 (data acquisition): 소스 또는 소스들에서 데이터 가져 오기

3. 데이터 변환 (data transformation): 소스에서 얻어지는 데이터 조작

4. 데이터 출판 (data publishing) : 추가 데이터로 데이터 싱크 또는 보고서에 변환 결과 저장

5. 실행 후 작업 (post-run operations): 파이프 라인 실행이 완료되었거나 실패했는지 여부와 관계없이 전자 메일 알림 또는 리소스 정리와 같이 파이프 라인 실행이 완료되면 필요한 모든 작업

각 스테이지마다 기능을 제공하기 위해 다양한 플러그인을 사용할 수 있습니다.

68

Page 75: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

데이터 및 제어 플로우

파이프 라인에서의 처리는 데이터와 제어(control) 플로우라는 두 가지 측면에서 관리됩니다.

데이터 플로우는 파이프 라인의 한 스테이지에서 다른 스테이지로의 레코드 형태의 데이터 이동입니다. 데이터가 스테이지에 도착하면 해당 스테이지의 데이터 처리가 트리거되고 그 결과 (결과가 있는 경우)가 다음 스테이지로 전달됩니다.

제어 플로우는 파이프 라인과 독립적으로 다른 프로세스의 결과를 기반으로 한 스테이지를 트리거하는 병렬 프로세스입니다. 현재 제어 플로우는 파이프 라인의 초기 스테이지 (모든 데이터 플로우 스테이지가 실행되기 전) 및 최종 스테이지 (다른 모든 데이터 플로우 스테이지가 실행 된 후)에만 적용될 수 있습니다. 실행 후 스테이지는 각 파이프 라인 실행 후 성공 또는 다른 방법으로 사용할 수 있습니다.

논리적 및 물리적 파이프 라인

CDAP 에는 논리(logical) 파이프 라인과 물리적(physical) 파이프 라인의 개념이 있습니다.

논리 파이프 라인은 CDAP Studio 에서 볼 수있는 뷰(view)입니다. 이 스테이지에서는 파이프 라인을 실제로 표시하고 실행하는 데 사용되는 기본 기술은 아니지만 스테이지를 보여줍니다.

물리적 파이프 라인은 논리적 파이프 라인을 CDAP 애플리케이션으로 표현한 것으로, CDAP 의 데이터 추상화 레이어를 통해 읽고 쓰는 프로그램 및 서비스 모음입니다.

플래너(planner)는 논리적 파이프 라인을 물리적 파이프 라인으로 변환합니다. 플래너는 파이프 라인의 논리적 뷰를 분석하여 이를 CDAP 애플리케이션으로 변환합니다.

파이프 라인 유형

파이프 라인의 데이터 플로우는 배치(batch) 또는 실시간(real-time) 일 수 있으며 다양한 처리 패러다임 (MapReduce 또는 Spark)을 사용할 수 있습니다.

배치 어플리케이션은 cron 표현식을 사용하여 주기적으로 실행되도록 예약 할 수 있으며 MapReduce 작업을 사용하여 배치 소스에서 데이터를 읽을 수 있습니다. 배치 어플리케이션은 하나 이상의 배치 싱크에 쓰기 작업을 수행하기 전에 여러 가지 선택적 변환을 수행합니다.

69

Page 76: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

실시간 어플리케이션은 소스를 정기적으로 폴링(polling)하여 데이터를 가져오고 필요한 선택적 변형을 수행한 다음 하나 이상의 실시간 싱크에 쓸 수 있도록 설계되었습니다.

파이프 라인은 아티팩트, (CDAP 의 일부로 제공되는) 시스템 아티팩트 또는 개발자에 의해 만들어진 사용자 아티팩트로 만들어집니다.

파이프 라인 수명주기

다른 CDAP 어플리케이션과 마찬가지로 파이프 라인은 수명주기가 있으며 Lifecycle HTTP RESTful API 를 사용하여 CDAP PIPELINES UI, CDAP UI, CDAP CLI 및 명령 줄 도구와 같은 CDAP 에서 제공하는 도구를 사용하여 관리하고 제어 할 수 있습니다.

플러그인

데이터 소스, 변환 (transformations 또는 짧게 transforms 이라고 함) 및 데이터 싱크는 일반적으로 플러그인이라고 합니다. 플러그인은 기존 아티팩트의 기능을 확장하는 방법을 제공합니다. 어플리케이션은 CDAP 에 포함된 기존 플러그인으로 만들 수 있습니다. 또는 사용자가 원하는 경우 플러그인을 작성하여 자신의 기능을 추가 할 수 있습니다.

각 플러그인의 기능 및 작동에 대한 자세한 내용은 레퍼런스 섹션을 참조하십시오.

속성

파이프 라인의 각 스테이지는 특정 플러그인의 구성(configuration)을 나타내며 일반적으로 특정 속성을 지정해야합니다. 최소한 스테이지와 플러그인에 사용되는 고유한 이름이 필요하며 사용되는 특정 플러그인에 따라 추가 속성이 필요합니다.

각 플러그인에 대해 필수 및 지원되는 특성에 대한 자세한 내용은 레퍼선스 섹션을 참조하십시오.

스키마(Schema)

70

Page 77: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

데이터를 내보내는 파이프 라인의 각 스테이지 (기본적으로 사전 실행 작업 및 데이터 게시를 제외한 모든 스테이지)는 해당 스테이지에 설정된 스키마로 데이터를 방출합니다. 스키마는 스테이지별로 적절하게 일치해야 하며 CDAP Application Studio 내의 컨트롤을 통해 스키마를 후속 스테이지로 전파 할 수 있습니다.

스키마를 사용하면 파이프 라인의 모든 스테이지에서 사용되는 필드와 유형을 제어 할 수 있습니다. 특정 플러그인에는 특정 스키마가 필요하며 변환 플러그인을 사용하여 데이터를 필수 형식 및 스키마로 변환 할 수 있습니다.

71

Page 78: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

시작하기

이것은 CDAP 파이프 라인의 기본을 다루는 퀵 튜토리얼 입니다. 사용자는 CDAP 의 스트림, 데이터 세트 및 어플리케이션의 개념과 CDAP UI 의 기본 작업 (예 : 스트림에 이벤트 입력 및 데이터 세트 탐색)에 익숙하다고 가정합니다.

CDAP 설치

CDAP 파이프 라인 시작

CDAP Studio 시작

CDAP 스튜디오 둘러보기

간단한 파이프 라인 만들기

CDAP 설치

CDAP Sandbox 를 아직 설치하지 않았다면, 다운로드하여 설치 하십시오.

CDAP 를 시작 하고 웹 브라우저를 열고 CDAP UI 로 이동하십시오.

CDAP 파이프 라인 시작

CDAP 파이프 라인을 만들려면 왼쪽 상단의 풀다운 메뉴에서 파이프 라인을 선택하거나 CDAP Pipelines URL 로 이동하십시오.

그러면 비어있는 파이프 라인 목록으로 이동합니다.

72

Page 79: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

CDAP Pipelines : 파이프 라인 목록

CDAP Studio 시작

CDAP Studio 를 시작하고 파이프 라인 만들기를 시작하려면 다음 중 하나를 수행하십시오.

+ 버튼을 클릭하여 새 파이프 라인을 추가하십시오.

도구 모음 레이블 Studio (Pipelines 레이블 왼쪽에 있음)를 클릭하십시오. 또는,

CDAP Studio URL 로 이동하십시오.

Studio 가 시작되고 기본적으로 새 파이프 라인을 생성할 것입니다. 이것은 메뉴 Data Pipeline – Batch(batch 타입 파이프라인)에서 기본값인 첫번째 파이프라인 유형입니다.

73

Page 80: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

CDAP Studio : 파이프 라인을 만들기위한 빈 캔버스

CDAP 스튜디오 둘러보기

예제를 시작하기 전에 Studio 와 다양한 구성 요소를 살펴 보겠습니다.

74

Page 81: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

CDAP Studio: 구성 요소를 보여주는 주석

왼쪽 상단에는 현재 파이프 라인에 사용중인 어플리케이션 템플릿 아티팩트(application template artifact)를 지정하는 메뉴가 있습니다. 지금은 기본값인 Data Pipeline - Batch 로 두겠습니다.

왼쪽 사이드 바에는 현재 애플리케이션 템플릿에서 작동하는 여러 가지 사용 가능한 플러그인을 나타내는 아이콘이 있습니다. 그것들은 다른 카테고리로 그룹화되어 각 카테고리 라벨 (Source, Transform, Analytics, Sink, Action)의 왼쪽에 있는 삼각형 아이콘을 클릭하면 나타납니다.

중간에 격자가 있는 회색 스튜디오 캔버스가 있습니다. 왼쪽 사이드 바에있는 사용 가능한 플러그인을 클릭하여 플러그인의 아이콘을 캔버스에 추가한 다음 아이콘을 드래그하여 위치시켜 파이프 라인을 만듭니다.

위의 그림은 한 파이프 라인을 보여주며, 세 개의 플러그인 아이콘이 제 위치에 있고 첫 번째 두 개가 연결되어 있습니다.

아이콘들은 다른 모양의 연결 노드 (데이터 연결의 경우 원형 또는 제어 연결의 경우 사각형)를 가지는 여러 색과 모양을 띄고 있으며 다음과 같습니다:

녹색 : 원본 플러그인과 같은 단일 오른쪽 데이터 연결 노드가 있는 데이터 생성기

75

Page 82: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

파란색 : 왼쪽 및 오른쪽 데이터 연결 노드가 있는 데이터 수신기 및 생성기 (예 : 변환 또는 분석 플러그인)

자주색 : 싱크 플러그인과 같이 왼쪽 데이터 연결 노드만 있는 데이터 수신기

갈색 : 8 각형 모양의 컨트롤로서 왼쪽 및 오른쪽 컨트롤 연결 노드 (예 : 작업 플러그인)

숫자가 있는 작은 노란색 원은 다른 플러그인에 대한 누락된 설정 값이 있음을 나타냅니다.

아이콘 사이에는 데이터 플로우 방향을 나타내는 화살표가 있는 회색 연결선이 있습니다. 단색 연결선은 데이터 플로우를 나타냅니다. 점선으로 표시된 연결선은 제어 플로우를 나타냅니다.

이제, 파이프 라인을 만들어 봅시다!

간단한 파이프 라인 만들기

이 예제에서는 소스에서 로그 파일 이벤트를 읽고 개별 필드로 파싱(parsing)한 후 개별 레코드로 테이블에 기록하는 파이프 라인을 만듭니다.

1. 왼쪽 패널에서 Stream 소스를 클릭하여 캔버스에 Stream 아이콘을 추가하십시오.

2. Transform 레이블 섹션의 왼쪽에 있는 삼각형을 클릭 한 다음 LogParser 변형을 클릭하여 다른 아이콘을 캔버스에 추가합니다.

3. Sink 레이블 섹션의 왼쪽에 있는 삼각형을 클릭하여 Sink 를 표시 한 다음 Table 변환을 클릭하여 다른 아이콘을 캔버스에 추가합니다.

캔버스는 다음과 같아야 합니다:

76

Page 83: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

CDAP Studio : 아이콘들

4. Stream 의 오른쪽에 있는 초록색 연결을 클릭하고 LogParser 의 왼쪽 연결로 끌어서 마우스 버튼을 놓아 LogParser 에 스트림을 연결하십시오. 이제 캔버스가 다음과 같이 보입니다.

77

Page 84: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

CDAP Studio : 연결

5. 마찬가지로 LogParser 를 Table 에 연결하여 연결을 완료합니다. 이제 캔버스가 다음과 같이 표시되어 각 플러그인에서 완료 할 속성이 여러 개 있음을 보여줍니다.

CDAP Studio : 연결 표시

78

Page 85: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

(실수했거나 연결을 제거해야 하는 경우, 연결을 끊으려는 연결 화살표 오른쪽의 흰색 원을 클릭하여 끌면 됩니다. 해당 원을 끌고 마우스를 놓으면 연결이 삭제되고 사라집니다.)

6. 플러그인의 속성을 설정하려면 각 아이콘을 차례로 클릭하십시오. 아이콘을 클릭하면 각 플러그인에서 사용할 수 있는 속성을 보여주는 대화 상자가 나타납니다. 모든 필수 등록 정보는 레이블 뒤에 빨간색 별표가 표시됩니다. 이 경우 Stream 아이콘이 클릭되고 Label, Stream Name 및 Duration 이 필수 속성으로 표시됩니다.

CDAP Studio : Stream 플러그인 속성 편집

demoStream 과 같은 스트림 이름과 1d 와 같은 지속 시간을 입력하십시오. 변경 사항이 자동으로 저장되면 닫기 버튼 (오른쪽 상단 모서리의 X), 키보드의 이스케이프 키 또는 대화 상자 외부를 클릭하여 대화 상자를 닫을 수 있습니다.

7. 비슷한 방법으로 LogParser 를 편집하고 입력 이름을 본문으로 설정하고 CLF 의 기본 로그 형식을 수락합니다.

표를 편집하고 Name 을 demoTable 및 Row Field 를 ts (timestamp)로 설정하십시오.

79

Page 86: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

스트림에서 테이블로 이동할 때 표시되는 스키마가 변경되었음을 알 수 있습니다. LogParser 는 본문을 테이블에서 필요로 하는 별도의 필드로 분리하여 스키마를 수정합니다.

8. 작업이 끝나면 아이콘에 노란색 원이 없이 모든 필수 필드가 완성되었음을 모든 아이콘에 표시됩니다.

텍스트를 클릭하여 파이프 라인의 이름을 지정하십시오. 그 밖의 사항은 무엇입니까? 캔버스 영역 위에 파이프 라인 이름을 지정하고 demoPipeline 과 같은 이름을 입력하십시오. 파이프 라인 이름에는 공백을 사용할 수 없습니다.

모든 작업이 완료되었는지 확인하려면 캔바스 영역 위의 버튼에 있는 validation 버튼을 클릭하십시오. 이러한 컨트롤은 오른쪽 상단에서 사용할 수 있습니다.

CDAP Studio : 오른쪽 위 도구 모음에 있는 버튼 레이블들

Validate 버튼를 클릭하면 다음과 유사한 배너 메시지가 생성됩니다.

Validation success! Pipeline demoPipeline is valid.

80

Page 87: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

9. 오류가 있으면 계속하기 전에 오류를 정정하십시오.그렇지 않으면 Publish 버튼를 클릭하십시오. 파이프 라인 구성이 저장됩니다. 구성에 따라 CDAP 어플리케이션이 생성되고 스트림 및 데이터 세트 테이블이 완성됩니다. 어플리케이션을 실행할 준비가 됩니다.

유효성 검사 중에 발견되지 않은 게시 단계에서 오류가 발생할 수 있습니다. 계속하기 전에 문제가 있다면 해결하십시오.

보기가 변경되어 완료된 어플리케이션을 표시합니다.

CDAP 파이프 라인 : 데모 파이프 라인

이 파이프 라인 보기는 편집 할 수 없지만, 아이콘을 클릭하면 이전과 동일한 대화 상자가 나타나서 파이프 라인의 각 단계마다 어떤 값이 구성되었는지 보여줍니다.

10. 파이프 라인 보기에는 실제 어플리케이션을 시작하고 관리하기위한 컨트롤이 있습니다. 주의해야 할 중요한 버튼은 Run (왼쪽)과 View in CDAP (오른쪽)입니다 :

81

Page 88: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

CDAP Pipelines : 제어 버튼, 파이프 라인 보기

11. 파이프 라인을 실행하기 전에 어플리케이션이 작동 할 수 있도록 스트림에 데이터를 넣어야 합니다. CDAP 에서 View 버튼을 클릭한 다음 Datasets 버튼을 클릭하고 demoStream 버튼을 클릭하여 스트림으로 이동합니다.

82

Page 89: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

CDAP demoStream : 이벤트 전송을 위한 Actions 메뉴가 있는 Status 페이지

Actions 메뉴를 클릭하고 Send Events 를 선택한 다음 대화 상자에서 Upload 를 클릭하여 이벤트를 스트림으로 보낼 수 있습니다. 드라이브에서 CDAP 홈 디렉토리로 이동하고 CDAP Sandbox 에 포함된 examples / resources / accesslog.txt 파일을 찾습니다. 이 파일에는 CLF 형식의 10,000 개의 레코드가 들어 있습니다.

파일이 CDAP 에 의해 성공적으로 업로드되면 스트림의 총 이벤트가 10,000 만큼 변경되어야합니다.

브라우저의 뒤로가기 버튼(back-button)을 클릭하여 CDAP 파이프 라인으로 돌아갑니다.

12. 이제 파이프 라인을 실행할 수 있습니다. 왼쪽 상단에 있는 Run 버튼을 클릭하십시오. 런타임 매개 변수는 필요하지 않으며 표시되는 대화 상자에서 Start Now 을 클릭 할 수 있습니다.

상태를 나타내는 녹색 Running 에 의해 표시된 것처럼 파이프 라인이 실행을 시작할 것입니다.

83

Page 90: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

CDAP Pipelines: 실행되고 있는 파이프 라인

13. 처리된 레코드 수는 시간이 지나면 0 에서 10,000 으로 변경됩니다. 실행이 완료되면 상태 아이콘이 Completed 로 변경됩니다. Start time 및 duration 이 상태 패널에 표시되어야 합니다.

84

Page 91: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

CDAP Pipelines : demoPipeline 실행 완료

14. 이제 demoTable 의 내용을 보고 결과를 확인할 수 있습니다. CDAP 에서 View 버튼을 사용하는 대신 더 빠른 방법을 사용하여 데이터 세트를 찾을 것입니다. 표를 나타내는 아이콘을 클릭하여 표 구성을 불러오십시오. 대화 상자의 오른쪽 상단에는 두 개의 항목이 있는 메뉴를 가져 오는 Jump 버튼이 있습니다. 첫 번째 것은 CDAP 의 테이블로 직접 이동합니다. 두 번째는 CDAP 메타 데이터 UI 의 표로 이동합니다.

85

Page 92: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

CDAP Pipelines : 파이프 라인 설정 대화 상자의 Jump 버튼

15. demoTable 데이터 세트로 이동하여 처음 다섯 개의 레코드를 선택하는 기본 Explore 쿼리를 다음 절차에 따라 실행합니다:

Explore 을 클릭 한 다음

Execute SQL 클릭 :

86

Page 93: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

CDAP Pipelines: demoTable 탐색 결과

16. 여기에서 로그 레코드가 스트림에 성공적으로 로드되고 로그 파서(parser)가 파싱한 다음 파싱된 레코드로 테이블에 저장 된 것을 볼 수 있습니다. 이 데이터는 고유한 레코드 찾기, 정렬 등의 추가 분석에 사용할 수 있습니다.

CDAP 파이프 라인 시작하기가 완료되었습니다.

87

Page 94: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

CDAP 스튜디오

CDAP 는 Hadoop 데이터 레이크(data lakes) 및 데이터 파이프 라인 구축을 위해 명시 적으로 설계된 ETL (extract-transform-load)과 결합된 셀프 서비스 배치(batch) 및 실시간 데이터 처리 기능을 갖춘 최종 사용자(end-users)를 지원합니다. CDAP Studio 는 CDAP 사용자가 시각적 편집기를 사용하여 다양한 유형의 소스와 데이터에서 파이프 라인을 구성하고 작동시키는 매끄럽고 쉬운 방법을 제공합니다.

작업, 소스, 변환, 싱크 및 기타 플러그인을 클릭하고 드래그하여 파이프 라인을 구성합니다:

CDAP Studio : 파이프 라인 생성을 보여주는 비주얼 편집기

완료되면 CDAP 는 메트릭, 로그 및 기타 런타임 정보를 모니터링 할 수 있는 파이프 라인 결과에 대한 작동 보기(operational view)를 제공합니다.

88

Page 95: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

CDAP Pipelines : 현재 상태를 보여주는 생성 된 파이프 라인 관리

CDAP 스튜디오 팁

파이프 라인에 대한 어플리케이션 템플릿을 지정하고 스테이지 추가를 시작하면 해당 파이프 라인에 대해 어플리케이션 템플릿을 변경할 수 없습니다. 이는 어플리케이션 템플릿를 선택하면 파이프 라인에 사용할 수 있는 플러그인이 결정되기 때문입니다.

노드를 클릭하면 노드 구성을 허용하는 대화 상자가 나타납니다. 변경 사항이 자동으로 저장되므로 닫는 버튼 (오른쪽 상단의 X), 키보드의 이스케이프 키 또는 대화 상자 외부를 클릭하여 대화 상자를 닫을 수 있습니다.

한 노드에서 다른 노드로의 연결을 편집하려면 화살표 기호가 있는 끝 (흰색 점을 클릭)을 클릭하고 대상 노드 밖으로 드래그하여 연결을 제거 할 수 있습니다.

모든 파이프 라인은 고유한 이름을 가져야 하며 동일한 이름의 기존 파이프 라인에 파이프 라인을 저장할 수 없습니다. 대신, 새로운 파이프 라인 복제마다 이름을 Demo 에서 Demo-1 로 증가시킵니다.

89

Page 96: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

파이프 라인 초안

CDAP Studio 내에서 언제든지 초안(draft)으로 작업중인 파이프 라인을 저장할 수 있습니다. 파이프 라인 구성이 저장되고 나중에 편집을 다시 시작할 수 있습니다.

초안을 만들려면 파이프 라인에 고유한 이름을 지정하고 Save 버튼을 클릭하십시오.

CDAP Studio : 오른쪽 위 도구 모음의 버튼 레이블

초안이 작성되어 파이프 라인 목록에 draft 로 표시됩니다. 파이프 라인 목록에서 해당 파일을 클릭하면 CDAP Studio 에서 해당 파일을 다시 열어 계속 작업 할 수 있습니다.

초안 이름을 변경하면 새 초안이 새 이름으로 작성되지 않고 기존 초안의 이름이 변경됩니다. 초안의 이름은 고유해야 합니다. 그리고 게시된 파이프 라인의 이름은 고유해야 하지만, 게시된 파이프 라인과 동일한 이름의 초안을 가질 수 있습니다.

그러한 (이름이 기존 파이프 라인과 일치하는)초안을 성공적으로 게시하려면 고유한 이름으로 다시 이름을 지정해야합니다.

90

Page 97: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

플러그인 템플릿

CDAP Studio 내에서 재사용 가능하며 사전 구성된 설정을 포함 할 수 있는 사용자 정의된 버전의 플러그인 템플릿을 작성할 수 있습니다.

설정을 잠그면 결국 사용할 때 변경 될 수 없습니다.

플러그인 템플릿이 만들어지면 나중에 편집하고 삭제할 수 있습니다.

플러그인 템플릿의 변경 사항은 해당 템플릿을 사용하여 작성된 파이프 라인에는 영향을 미치지 않습니다. 파이프 라인 작성시 플러그인 템플릿에 지정된 대로 이 파이프 라인이 아티팩트(artifacts)로 작성되기 때문입니다.

CDAP Studio : Stream 소스 플러그인에서 플러그인 템플릿 만들기

플러그인 템플릿 만들기

플러그인 템플릿을 만들려면 다음을 수행하십시오.

CDAP Studio 내에서 템플릿 (예 : Stream source plugin)에 사용할 플러그인 위에 마우스를 올려 놓습니다.

91

Page 98: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

마우스 오버 메뉴가 표시되면 + 템플릿 버튼을 클릭합니다.

나타나는 창에서 사용할 플러그인의 버전을 지정할 수 있습니다. 일단 그렇게 하면 창이 열리고 해당 플러그인의 특정 속성을 지정할 수 있습니다.

템플릿에는 템플릿을 고유하게 식별하는 이름이 필요합니다.

템플릿을 사용할 때 편집 할 수 없도록 구성의 개별 속성을 잠글 수 있습니다.

플러그인 템플릿이 성공적으로 저장되면 다른 플러그인과 함께 템플릿에 있음을 나타내는 “T” 아이콘이 추가로 나타납니다.

템플릿은 생성된 후 마우스 오버 메뉴에 나타나는 버튼을 사용하여 편집하거나 삭제할 수 있습니다.

생성된 플러그인 템플릿은 다른 플러그인처럼 사용할 수 있습니다. 재사용하거나 필요로하는 설정으로 미리 설정 할 수 있다는 장점이 있습니다.

92

Page 99: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

파이프 라인 생성하기

파이프 라인은 아티팩트(artifacts)로부터 만들어집니다. CDAP 에는 여러 가지 아티팩트가 제공되며 개발자가 사용자 지정 아티팩트를 만들 수 있습니다. 아티팩트는 구성 파일(configuration file)을 추가한 어플리케이션을 만드는 데 사용되는 청사진 또는 템플릿입니다.

파이프 라인 어플리케이션은 아티팩트를 지정하는 구성을 준비하고 어플리케이션을 만드는 데 사용할 소스(source), 변환 (transformations 또는 transforms) 및 싱크(sinks)를 사용하여 만들어집니다.

소스, 변환 및 싱크는 플러그인으로 알려진 CDAP 의 확장으로 패키지화되며 파이프 라인 실행 시작, 실행 종료 및 실행 완료 후 수행 할 작업을 포함 할 수 있습니다. 플러그인은 CDAP 의 일부로 패키지되거나 별도로 설치된 플러그인 일 수 있습니다.

구성은 JSON 파일로 작성되거나 CDAP Studio 의 경우 지정된 메모리에 기록 될 수 있습니다.

CDAP 는 현재 두 가지 아티팩트 (시스템 아티팩트라고 함)를 제공합니다.

cdap-data-pipeline (배치 파이프 라인(batch pipelines) 용)

cdap-data-streams (실시간 파이프 라인(real-time pipelines) 용)

이들은 서로 다른 종류의 데이터 파이프 라인 어플리케이션을 만드는 데 사용됩니다.

파이프 라인은 CDAP 의 포함된 비주얼 편집기 (CDAP Studio)를 사용하거나, CDAP CLI 및 curl 같은 명령 행 도구를 사용하거나, 또는 스크립트 또는 Java 프로그램을 사용하여 프로그래밍 방식으로 작성할 수 있습니다.

파이프 라인 생성 방법들

파이프 라인을 만드는 데는 두 가지 방법이 있습니다.

1. CDAP Studio 사용

93

Page 100: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

2. 명령 줄 도구 (예 : curl, CDAP CLI 또는 CDAP UI)

CDAP Studio 를 사용하는 기본 작업은 다음과 같습니다.

1. 빈 캔버스에서 또는 템플릿에서 시작하거나 이미 게시된 파이프 라인을 복제하여 새 파이프 라인을 만듭니다.

2. 적절한 구성(configurations) 및 설정(settings)들을 설정하여 CDAP Studio 에서 파이프 라인을 편집하십시오.

3. 고유한 이름을 사용하여 파이프 라인을 임시 파이프 라인으로 저장하십시오.

4. CDAP Studio 에서 파이프 라인의 유효성을 검사하여 기본 셋팅과 이름이 올바른지 확인하십시오.

5. CDAP Studio 에서 파이프 라인을 게시(publish)하면 구성의 가상 파이프 라인이 지정된 이름의 물리적인 파이프 라인으로 변환됩니다.

이 시점에서 파이프 라인을 실행할 수 있습니다.

참고 : 많은 에디터들과는 달리, CDAP Studio 는 기존 로그, 메트릭 및 데이터 집합을 무효화하므로 기존 파이프 라인의 “위에” 초안 파이프 라인을 게시 할 수 없습니다. 대신 새로 게시된 파이프 라인에 대한 새 이름을 만들어야합니다.

명령 줄 도구를 사용하여 기본 작업은 다음과 같습니다.

1. 예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에 따라 JSON 형식으로 구성 파일을 작성하여 새 파이프 라인을 만듭니다.

2. 적절한 구성과 설정을 설정하여 에디터에서 JSON 구성 파일을 편집하십시오.

3. Lifecycle RESTful API 또는 CDAP CLI 를 사용하여 구성 파일의 가상 파이프 라인을 지정된 이름의 실제 파이프 라인으로 변환하는 파이프 라인을 게시하십시오.

명령 줄 도구를 사용하여 게시된 파이프 라인은 CDAP UI 에서 볼 수 있으며 CDAP Studio를 사용하여 복제하고 편집 할 수 있습니다.

배치 파이프 라인

94

Page 101: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

소개

배치 파이프 라인(Batch pipelines)은 cron 표현식을 사용하여 주기적으로 실행되도록 예약 할 수 있으며 MapReduce 또는 Spark 작업을 사용하여 배치 소스에서 데이터를 읽을 수 있습니다. 그런 다음 배치 어플리케이션은 하나 이상의 배치 싱크에 기록하기 전에 어떠한 (옵셥) 변환도 수행합니다.

파이프 라인이 시작되고 성공적으로 완료되기 전에 작업 플러그인을 추가하여 특별한 작업을 수행 할 수 있습니다. 파이프 라인이 성공적으로 완료된 경우에도 항상 실행되는 실행 후 작업(post-run actions)을 지정할 수 있습니다.

플러그인 유형

cdap-data-pipeline 어플리케이션 템플릿를 기반으로 하는 배치 파이프 라인에는 다음 플러그인이 포함될 수 있습니다.

Actions

Batch Source Plugins

Transformation Plugins

Analytics Plugins

Batch Sink Plugins

어떻게 작동합니까?

배치 파이프 라인은 (구성 파일의 형태로) “가상”파이프 라인을 취한 다음 해당 CDAP 프로그램이있는 CDAP 어플리케이션으로 “물리적”파이프 라인을 만들어 구성을 구현함으로써 만들어집니다.

사용된 프로그램은 선택한 엔진 (MapReduce 또는 Spark)과 파이프 라인을 빌드하는 데 사용되는 플러그인에 따라 다릅니다. 사용 가능한 플러그인은 위에 나열된 것처럼 데이터 파이프 라인 (cdap-data-pipeline 아티팩트)에서 작동하는 플러그인에 의해 결정됩니다.

파이프 라인 만들기

배치 파이프 라인을 만들려면 명령 줄 도구 또는 CDAP Studio 를 사용할 수 있습니다.

CDAP Studio 를 사용하여 배치 파이프 라인을 만들려면

95

Page 102: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

파이프 라인의 어플리케이션 템플릿으로 데이터 파이프 라인 (cdap-data-pipeline 아티팩트)을 지정하십시오.

왼쪽 사이드 바에 있는 아이콘을 클릭하여 파이프 라인에 포함시킬 플러그인을 선택하십시오. 작업 플러그인, 변환 플러그인 및 특정 분석 플러그인 외에도 배치 소스 플러그인이나 배치 싱크 플러그인을 사용할 수 있습니다.

일반적으로 최소한 소스, 싱크, 그리고 소스와 싱크 스테이지 간의 변환이나 분석이 필요합니다.

작업 단계들은 소스 이전 싱크 뒤에 추가 될 수 있습니다. 이들은 (소스 이전) 시작 에서만 실행되고 파이프 라인이 성공적으로 완료되면 끝에서만 실행됩니다.

Setting 버튼을 사용하면 Schedule, “Post-run Actions * 및 파이프 라인에 사용된 엔진을 지정할 수 있습니다.

기본 또는 고급 사양을 사용하여 배치 파이프 라인에 대한 일정을 지정합니다. 이 일정은 기본 운영 체제의 cron 어플리케이션을 사용합니다.

실행 후 작업(post-run actions)을 지정할 수 있으며 구성에 따라 실행됩니다. 파이프 라인이 실패하더라도 완료(completion), 성공(success) 또는 실패(failure) 중 하나로 실행되도록 지정할 수 있기 때문에 실행할 수 있습니다. 실행 후 작업은 얼마든지 할 수 있으며 + 단추를 클릭하여 추가 작업을 추가 할 수 있습니다.

CDAP 어플리케이션에 사용할 엔진을 지정하십시오. 기본적으로 MapReduce 가 사용됩니다.

각 스테이지 별로 필요한 모든 정보와 특정 용도에 필요한 옵션 정보를 모두 작성하십시오.

고유한 이름으로 파이프 라인을 저장하십시오.

파이프 라인의 유효성을 검사하여 오류를 확인하십시오.

파이프 라인을 게시하면 구성 파일의 가상 파이프 라인이 CDAP 어플리케이션에 있는 CDAP 프로그램의 물리적 파이프 라인으로 바뀝니다.

유효성 검사가 철저한 테스트가 아니므로 파이프 라인을 게시하면 유효성 검사 단계에서 잡아내지 못한 오류가 있음을 알 수 있습니다.

이 시점에서 파이프 라인을 실행할 수 있습니다.

96

Page 103: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

명령 줄 도구를 사용하여 배치 파이프 라인을 만드는 방법에 대한 자세한 내용과 예제는 개발자 설명서 중 파이프 라인 개발 : 배치 파이프 라인 만들기 섹션을 참조하십시오.

스케줄링

CDAP Studio 를 사용하면 실행에 사용되는 배치 파이프 라인에 대한 일정을 설정할 수 있습니다. 일정이 파이프 라인 구성의 일부로 설정되므로 실제 일정 파이프 라인의 일정은 새 일정으로 새 파이프 라인을 만드는 경우를 제외하고는 변경할 수 없습니다.

시간별 일정을 만들 수있는 두 가지 인터페이스가 있습니다.

기본 인터페이스에서 시간 증가분 (매분, 시간, 일, 주, 월, 년)과 증가 이후의 금액을 적절하게 선택합니다.

HourFive-minute increment after the hour, 0 through 55 minutes

DayHour (twenty-four hour clock), plus five-minute increment after the hour, 0 through 55 minutes

WeekDay of the week, plus hour (twenty-four hour clock), plus five-minute increment after the hour, 0 through 55 minutes

MonthDay of the month, plus hour (twenty-four hour clock), plus five-minute increment after the hour, 0 through 55 minutes

YearDate, plus hour (twenty-four hour clock), plus five-minute increment after the hour, 0 through 55 minutes

지정된 시간이 없는 경우 (예 : 6 월에 발생하지 않는 31 일을 지정한 경우), 다음 발생 이벤트까지 이벤트는 생략됩니다.

이 기본 스케줄은 구성 파일에 대한 cron 표현식으로 변환됩니다.

97

Page 104: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

기본 cron 프로그램에서 사용 된 것과 동일한 인터페이스에 대한 액세스를 제공하는 고급 인터페이스. 해당 프로그램의 세부 사항은 CDAP Master 프로세스 호스트에서 사용하는 운영 체제에 따라 다릅니다.

CDAP Studio 를 사용하면 다른 파이프 라인이 완료, 실패 또는 종료 될 때 파이프 라인을 시작하는 일정을 만들 수도 있습니다. 트리거링 파이프 라인의 인수 및 플러그인 속성은 트리거 된 파이프 라인에 인수로 전달 될 수 있습니다.

HTTP 요청 을 사용하여 그러한 스케줄을 작성할 수도 있습니다. 특수한 schedule 속성을 설정하여 트리거링 파이프 라인의 인수 및 플러그인 속성을 트리거 된 파이프 라인에 전달할 수 있습니다. ‘triggering.properties.mapping’속성을 다음 JSON 객체의 문자열 값으로 설정합니다.

{ "arguments": [ { "source": <runtime argument key in the triggering pipeline>, "target": <runtime argument key in the current pipeline> }, ... ], "pluginProperties": [ { "stageName": <stage name in the triggering pipeline>, "source": <plugin property key in the given stage in the triggering pipeline>, "target": <runtime argument key in the current pipeline> }, ... ]}

예를 들어 네임 스페이스 ‘nsX’에 파이프 라인 ‘X’가 있고 네임 스페이스 ‘nsY’에 파이프 라인 ‘Y’가 있다고 가정합니다. 파이프 라인 ‘X’는 ‘output’인수로 설정된 테이블에 쓰도록 구성되며 파이프 라인 ‘Y’는 ‘input’인수로 설정된 테이블에서 읽도록 구성됩니다. 파이프 라인 ‘X’가 완료 될 때마다 파이프 라인 ‘Y’가 실행되도록 파이프 라인 ‘Y’가 파이프 라인 ‘X’의 출력 테이블에서 읽도록 구성된 스케줄을 생성하려고 합니다. 즉, 파이프 라인 ‘X’가 ‘output’= ‘xyTable’인수로 완료되면 파이프 라인 ‘Y’가 ‘input’= ‘xyTable’인수로 실행되기를 원합니다. 이렇게하려면 ‘triggering.properties.mapping’일정 속성에 ‘arguments’입력란이 있어야합니다.

"arguments": [ {

98

Page 105: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

"source": "output", "target": "input" }]

이에 더해서, 파이프 라인 ‘Y’가 ‘row’인수로 설정된 값을 입력 테이블의 행 키 필드로 사용하고 이 행 키 필드가 파이프 라인 ‘X’의 출력 테이블과 같아야 합니다. 다시 말해, 파이프 라인 ‘X’의 ‘TableSink’단계에서 플러그인 속성 ‘schema.row.field’에 정의된 행 키 필드가 ‘id’이면 파이프 라인 ‘Y’가 ‘row’= ‘id’ 인수와 함께 실행되길 원할 것입니다. 이렇게 하려면 ‘triggering.properties.mapping’일정 속성에 ‘pluginProperties’입력란이 있어야합니다.

"pluginProperties": [ { "stageName": "TableSink" "source": "schema.row.field", "target": "row" }]

그리고 전체 HTTP PUT 요청 본문은 다음과 같습니다.

{ "name": "SampleSchedule", "description": "A schedule that launches pipeline Y when pipeline X completes", "namespace": "nsY", "application": "Y", "applicationVersion": "-SNAPSHOT", "program": { "programName": "SmartWorkflow", "programType": "WORKFLOW" }, "properties": { "triggering.properties.mapping": "{\"arguments\":[{\"source\":\"output\",\"target\":\"input\"}],\"pluginProperties\":[{\"stageName\":\"TableSink\",\"source\":\"schema.row.field\",\"target\":\"row\"}]}", ... }, "constraints": [], "trigger": { "programId": { "namespace": "nsX", "application": "X", "version": "-SNAPSHOT",

99

Page 106: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

"type": "WORKFLOW", "entity": "PROGRAM", "program": "SmartWorkflow" }, "programStatuses": ["COMPLETED"], "type": "PROGRAM_STATUS" }, "timeoutMillis": 86400000}

엔진

“MapReduce”(mapreduce) 또는 “Spark”(spark) 중 배치 파이프 라인에 사용되는 엔진을 지정할 수 있습니다.

CDAP Studio 의 설정(Settings) 도구를 사용하여 선택 사항을 선택하거나 파이프 라인에 대한 구성 파일에서 엔진 등록 정보를 설정하여 이 설정을 할 수 있습니다.

"engine": "mapreduce",

이것은 물리적 파이프 라인이 생성 될 때 사용될 특정 엔진을 결정합니다.

작업

작업은 CDAP Studio 를 사용하거나 구성 JSON 파일에 유형 작업 단계를 포함하여 배치 파이프 라인에 대해 구성 할 수 있습니다. 사용 가능한 작업은 파이프 라인을 만드는 데 사용되는 어플리케이션 서식 파일에서 사용할 수 있는 작업에 의해 결정됩니다.

구성된 경우, 작업은 파이프 라인 실행의 시작 또는 완료시에 수행됩니다. 시작을 위해 구성된 모든 작업은 다른 스테이지보다 먼저 완료되며 마지막 단계의 작업이 실행되기 전에 다른 모든 스테이지가 완료됩니다.

마지막 작업은 파이프 라인이 성공적으로 완료된 경우에만 실행됩니다. 완료 여부와 관계없이 실행해야하는 작업이 있으면 실행 후 작업을 대신 사용하십시오.

현재 작업 플러그인은 cdap-data-pipeline 어플리케이션 템플릿을 사용할 때만 사용할 수 있습니다. 사용 가능한 작업 플러그인은 플러그인 참조에 문서화되어 있으며 다음과 같은 작업을 사용할 수 있습니다.

100

Page 107: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

SSH 작업 : 원격 시스템과의 SSH 연결을 설정하여 해당 시스템에서 명령을 실행합니다.

실행 후 작업

실행 후 작업은 CDAP Studio 를 사용하거나 구성 JSON 파일의 “postActions”속성을 설정하여 배치 파이프 라인에 대해 구성 할 수 있습니다. 사용 가능한 작업은 파이프 라인을 만드는 데 사용되는 어플리케이션 템플릿에서 사용할 수 있는 실행 후 플러그인에 의해 결정됩니다.

구성된 경우, 작업은 파이프 라인 실행이 완료된 후에 수행되며 실행 상태에 따라 발생할 수 있습니다. 세 가지 조건 중 하나를 지정해야 합니다.

completion (상태에 관계없이 작업이 수행됨)

success (성공시에만 활동이 일어남)

failure (실패시에만 작업이 발생 함)

현재 실행 후 플러그인은 cdap-data-pipeline 어플리케이션 템플릿을 사용할 때만 사용할 수 있습니다. 사용 가능한 실행 후 플러그인은 플러그인 참조 문서에 문서화되어 있으며 현재 다음과 같은 작업을 수행 할 수 있습니다.

sending an email

running a database query

making an HTTP request

Real-time Pipelines

실시간 파이프라인

소개

실시간 파이프 라인은 일정한 간격으로 데이터의 마이크로 배치를 생성하고 임의의 (옵션) 변환 및 분석을 수행 한 다음 하나 이상의 싱크에 쓸 수 있도록 설계되었습니다. 지속적으로 실행되도록 의도 되었기 때문에 조치 및 실행 후 조치는 적용 가능하지 않거나 사용 가능하지 않습니다. 실시간 파이프 라인은 기록 단위로 기록에서는 작동하지

101

Page 108: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

않지만 마이크로 배치 기준으로는 미세 배치에서 작동합니다.

플러그인 유형

cdap-data-streams 어플리케이션 템플릿을 기반으로 하는 실시간 파이프 라인에는 다음 플러그인이 포함될 수 있습니다.

Streaming Source Plugins

Transformation Plugins

Analytics Plugins

Batch Sink Plugins

그 이름에도 불구하고 배치 싱크 플러그인은 배치 파이프 라인에만 국한되지 않습니다. 실시간 파이프 라인 아티팩트는 배치 싱크에 기록 할 수 있는 마이크로 배치를 생성합니다.

어떻게 작동합니까?

실시간 파이프 라인은 (구성 파일 형식으로 있는) “가상”파이프 라인을 취한 다음 해당 CDAP 프로그램이 있는 CDAP 어플리케이션으로 “물리적”파이프 라인을 만들어 구성을 구현함으로써 만들어집니다.

생성된 어플리케이션은 Spark Streaming 프로그램으로 구성됩니다.

파이프 라인 만들기

실시간 파이프 라인을 만들려면 CDAP Studio 또는 명령 줄 도구를 사용할 수 있습니다.

CDAP Studio 를 사용하여 실시간 파이프 라인을 만들려면

Data Pipeline – Realtime (cdap-data-strams artifact)를 현재 파이프라인을 위한 어플리케이션 템플릿으로 지정하십시오

왼쪽 사이드 바에있는 아이콘을 클릭하여 파이프 라인에 포함시킬 플러그인을 선택하십시오. 변환 플러그인과 특정 분석 플러그인 외에도 스트리밍 소스 플러그인이나 배치 싱크 플러그인을 사용할 수 있습니다.

102

Page 109: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

최소 소스, 싱크와 소스 및 싱크 간에 필요한 선택적 변환 또는 분석이 필요합니다.

설정 버튼을 사용하면 파이프 라인의 배치 간격을 지정할 수 있습니다. 배치 간격은 소스가 데이터의 마이크로 배치를 생성하는 빈도를 제어합니다. 이것은 초 단위의 ‘s’, 분 단위의 ‘m’, 시간 단위의 ‘h’가 있는 시간 단위가 뒤에 오는 숫자 여야 합니다. 예를 들어, ‘10s’는 10 초로 변환됩니다. 이것은 소스가 10 초마다 데이터의 마이크로 배치를 생성함을 의미합니다.

각 단계별로 필요한 모든 정보와 특정 용도에 필요한 옵션 정보를 모두 작성하십시오.

고유한 이름으로 파이프 라인 저장

파이프 라인의 유효성을 검사하여 오류를 확인하십시오.

파이프 라인을 게시하면 구성 파일의 가상 파이프 라인이 CDAP 어플리케이션의 CDAP 프로그램의 물리적 파이프 라인으로 바뀝니다.

유효성 검사가 철저한 테스트가 아니므로 파이프 라인을 게시하면 유효성 검사 단계에서 잡아내지 않는 오류가 있음을 알 수 있습니다.

이 시점에서 파이프 라인을 실행할 수 있습니다.

세부 정보 및 명령 줄 도구를 사용하여 실시간 파이프 라인을 만드는 예제는 개발자 설명서 중 파이프 라인 개발 : 실시간 파이프 라인 만들기 섹션을 참조하십시오.

필드 구성 설정

이 설정은 배치 및 실시간 파이프 라인 모두에서 사용할 수 있습니다.

필수 입력 사항

특정 필드는 플러그인이 작동하도록 구성해야 합니다. 이들은 CDAP Studio 구성 패널에서 빨간색 점으로 표시되며 필요에 따라 CDAP Pipeline Plugin Reference 설명서 에 설명되어 있습니다.

103

Page 110: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

필드 매크로 대체

플러그인은 매크로 대체 가능 속성들을 지원할 수 있는데, 이 속성들은 구성 시간에 알려지지 않았으나 런타임에 알려지고 제공되는 속성들을 위한 자리표시자(placeholders)를 허용합니다.

CDAP 에서 지원되는 매크로에는 두 가지 유형이 있습니다.

Property Lookups (속성조회)

Macro Functions (매트로 함수)

매크로 사용 가능 필드는 CDAP Studio UI 에서 식별되고 CDAP Pipeline Plugin Reference 에 설명되어 있습니다.

속성 조회

속성 조회(property lookups)는 $ {macro-name} 구문을 사용하여 지정됩니다. 여기서 macro-name 은 소스의 계층 구조에서 조회된 키입니다.

$ {user-name} 키의 등록 정보 검색 프로세스는 다음 단계를 수행합니다.

1. user-name키에 대한 워크 플로우 토큰 조회, 발견된 경우 값을 반환. 또는,

2. user-name키에 대한 런타임 인수에서 조회, 발견된 경우 값을 반환. 또는,

3. user-name키에 대한 기본 설정 저장소에서 조회, 발견된 경우 값을 반환. 또는,

4. “macro not found” 예외가 표시.

이 순서는 가장 휘발성이 높은 소스 (워크 플로우 토큰)가 우선 적용되도록 사용됩니다.

예를 들어, 런타임까지 소스 스트림의 이름을 알지 못할 수도 있습니다. 소스 스트림의 Stream Name 구성에서 사용할 수 있습니다.

${stream-name}

104

Page 111: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

그리고 런타임 인수에서 다음과 같은 키 - 값 쌍을 설정합니다.

stream-name: myDemoStream

CDAP Pipelines UI 에서 매크로 속성 조회는 구성에서 결정되고 런타임 인수로 설정됩니다. 이러한 인수에 값을 제공하면 CDAP 파이프 라인을 시작할 수 있습니다.

참고:

기본 설정 및 런타임 인수에 대한 정보는 CDAP 관리 메뉴얼의 운영 섹션에 있습니다. 이들은 Lifecycle 과 Preferences HTTP RESTful API 로 설정할 수 있습니다.

CDAP 파이프 라인의 preferences 을 통해 매크로 키의 값을 설정하려면 Preferences HTTP RESTful API 를 참조하십시오.

매크로 함수

속성 조회 외에도 미리 정의된 매크로 함수(macro functions)를 사용할 수 있습니다. 현재 이러한 기능은 사전 정의되어 있으며 사용 가능합니다.

logicalStartTime

secure

105

Page 112: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

논리적 시작 시간 함수logicalStartTime 매크로 함수는 파이프 라인 실행의 논리적 시작 시간을 반환합니다.

매개 변수가 제공되지 않으면 밀리 초 단위로 시작 시간을 반환합니다. 모든 매개 변수는 선택 사항입니다. 이 함수는 인수로 시간 형식, 오프셋 및 시간대를 사용하고 파이프 라인의 논리적 시작 시간을 사용하여 대체(substitution)를 수행합니다.

${logicalStartTime([timeFormat[,offset [,timezone])}

여기에서

Parameter DescriptiontimeFormat(Optional) Time format string, in the format of a

Java SimpleDateFormatoffset(Optional) Offset from the before the logical start

timetimezone(Optional) Timezone to be used for the logical start

time

예를 들어, 파이프 라인 실행의 논리적 시작 시간이 2016-01-01T00 : 00 : 00 이고 이 매크로가 제공된다고 가정하십시오.

${logicalStartTime(yyyy-MM-dd'T'HH-mm-ss,1d-4h+30m)}

형식은 yyyy-MM-dd’T’HH-mm-ss 이고 오프셋은 논리적 시작 시간 전에 1d-4h + 30m입니다. 이는 오프셋이 20.5 시간으로 변환되기 때문에 매크로가 2015-12-31T03 : 30 : 00으로 대체됨을 의미합니다. 전체 매크로는 2016 년 1 월 1 일 자정까지 20.5 시간으로 계산됩니다.

보안 기능보안 매크로 함수는 단일 키를 인수로 사용하고 Secure Store 에서 키와 연관된 문자열 값을 조회합니다. 대체(substitution)를 수행하려면 인수로 제공된 키가 보안 저장소에 있어야합니다. 이는 중요한 데이터로 대체를 수행 할 때 유용합니다.

예를 들어, MySQL 데이터베이스에 연결하는 플러그인의 경우 암호 속성 필드를 다음과 같이 구성 할 수 있습니다.

${secure(password)}

106

Page 113: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이것은 런타임시 Secure Store 에서 암호를 가져옵니다.

재귀 매크로 (Recursive Macros)

매크로는 최대 10 단계까지 참조 할 수 있습니다 (다른 매크로들 참조). 예를 들어 호스트 이름과 포트를 참조하는 서버가 있고 이 런타임 인수를 제공 할 수 있습니다. 이 중 하나는 다른 매크로를 사용하는 매크로의 정의입니다.

hostname: my-demo-host.example.comport: 9991server-address: ${hostname}:${port}

파이프 라인 구성에서 다음과 같은 표현식을 사용할 수 있습니다.

server-address: ${server-address}

그리고 다음으로 대체 될 것입니다.

my-demo-host.example.com:9991

검증

CDAP Studio 내에서 validation 버튼은 파이프 라인을 검사하여 기본 설정과 이름이 올바른지 확인합니다. 발견 된 오류 메시지가 Studio 에 표시됩니다. 이 단계는 철저하지 않으며 파이프 라인이 실제로 게시 될 때 오류가 계속 발견 될 수 있습니다.

게시(Publishing)

파이프 라인을 게시하면 가상 파이프 라인 (예 : CDAP Application Studio 의 초안 또는 구성 JSON 파일)을 가져 와서 구성 파일, 플러그인 아티팩트 및 어플리케이션 템플릿 아티팩트를 사용하여 물리적 파이프 라인 (CDAP 어플리케이션)을 만듭니다.

107

Page 114: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

게시는 CDAP Studio 에서 또는 Lifecycle RESTful API 와 함께 curl 명령이나 create app 명령과 함께 CDAP CLI 도구와 같은 명령 줄 도구를 사용하여 수행 할 수 있습니다.

두 가지 방법 중 하나를 사용하면 게시된 파이프 라인을 CDAP UI 에서 볼 수 있으며 CDAP Studio 를 사용하여 복제하고 편집 할 수 있습니다.

템플릿 및 파이프 라인 재사용

기존 파이프 라인은 다음과 같은 방법으로 새로운 파이프 라인을 생성하는 데 사용할 수 있습니다.

파이프 라인 템플릿 사용

이미 게시된 파이프 라인을 복제하고 결과 초안을 새 이름으로 저장

구성 파일 내보내고, 편집한 후 수정 된 파일 가져 오기

파이프 라인 템플릿

미리 정의되고 구성된 파이프 라인 모음은 CDAP Application Studio 내에서 왼쪽 사이드 바 위쪽에 있는 컨트롤을 통해 사용할 수 있습니다. 이러한 템플릿은 자체 파이프 라인이나 사용자 자신의 파이프 라인 템플릿을 위한 시작점으로 사용할 수 있습니다.

108

Page 115: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

CDAP Studio : 구성 요소를 보여주는 주석

먼저, 사용할 어플리케이션 템플릿 (Data Pipeline 또는 ETL Real-time)을 선택하십시오.

그런 다음 Template Gallery 를 클릭하여 사용 가능한 템플릿을 보여주는 대화 상자를 불러옵니다. 시작하려는 항목을 클릭하면 원하는 항목을 사용자 정의 할 수 있습니다.

다음은 사용 가능한 템플릿입니다.

Data Pipeline

Model Trainer: Naive Bayes 분류기(classifier)를 사용하는 트레인 모델(Train model)

Event Classifier: Naive Bayes 모델을 사용하여 이벤트를 스팸 또는 비 스팸으로 분류

Log Data Aggregator: IP 및 HTTP 상태를 그룹화하여 로그 데이터 집계(Aggregate)

ETL Real-time

Kafka to HBase: Kafka 에서 HBase 테이블로 실시간으로 적재

109

Page 116: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Kafka to Stream: Kafka 에서 스트림으로 실시간 적재

Kafka to OLAP Cube: Kafka 에서 실시간으로 OLAP Cube 생성

Twitter to HBase: HBase 테이블에 실시간 트위터 스트림 적재

Twitter to Stream: 실시간 트위터 스트림을 스트림에 적재

Amazon SQS to HBase: Amazon Simple Queue Service 에서 HBase 테이블로의 실시간 업데이트

ETL Batch (CDAP 3.5.0 에서 더 이상 사용되지 않으며 대신 Data Pipeline 사용)Stream to HBase: 스트림에서 HBase 테이블로 주기적으로 적재

복제

게시된 기존 파이프 라인은 복제 할 수 있습니다. 이렇게하면 동일한 이름을 가진 파이프 라인의 메모리 내 복사본이 만들어지고 CDAP Studio 내에서 열립니다.

이 시점에서 파이프 라인의 이름을 고유한 이름으로 바꾼 다음 초안으로 저장하거나 새 파이프 라인으로 게시 할 수 있습니다. 기존 파이프 라인을 통해 저장할 수 없으므로 모든 새 파이프 라인에는 고유한 이름이 필요합니다. 일반적인 방법은 각각의 새 클론을 사용하여 Demo-1 에서 Demo-2 로 이름을 증가시키는 것입니다.

내보내기

파이프 라인 구성 파일을 내보낼 수 있는 두 가지 방법이 있습니다.

1. CDAP Studio 내에서

2. CDAP pipeline configuration 페이지 내에서

1. CDAP Studio 내에서 Export ... 버튼을 사용하여 파이프 라인 구성 JSON 파일을 내보낼 수 있습니다.

110

Page 117: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

CDAP Studio : 오른쪽 위 도구 모음 Button 레이블,

“Export...”버튼을 클릭하면 export 대화 상자가 나타납니다.

CDAP Studio : 구성파일을 보여주는 Export 대화 상자

111

Page 118: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

다음 두 가지 비슷한 작업 방식이 있습니다. 대화 상자에서 텍스트를 복사 한 다음 텍스트 편집기에 붙여 넣으면, JSON 파일은 파이프 라인 구성이기는 하지만 아이콘 위치와 같은 CDAP Studio UI 정보를 갖지 않을 것입니다.

한편, “Export”버튼을 사용하면, 전체 파일을 저장하기 전에 파일 위치를 묻는 메시지가 표시될 것인데, 이 저장되는 전체 파일은 아이콘 위치와 같은 세부 정보를 포함하여 CDAP Application Studio 에서 파이프 라인을 다시 만드는 데 필요한 모든 정보를 포함합니다. 파일 위치를 묻는 메시지가 표시됩니다. 그렇지 않으면, 두 가지 내보내기가 유사합니다. UI 정보는 JSON 구성 파일의 “__ui__”객체에 추가됩니다.

2. CDAP pipeline configuration 페이지 내에서 Export 버튼이 있습니다.

CDAP Pipelines : 구성 페이지, 파이프 라인 세부 정보, 오른쪽에 Export 버튼 표시

CDAP Studio 에서 내보내기와 마찬가지로 버튼을 사용하여 내보내기 하면 UI 정보가있는 구성이 생성되고 페이지 아래쪽에 표시된 구성을 복사하면 JSON 에 “__ui__”개체가 포함되지 않은 구성이 생성됩니다.

내보내는 방법으로 만든 파일은 텍스트 편집기에서 편집한 다음 가져 와서 새 파이프 라인을 만들 수 있습니다.

112

Page 119: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

가져오기

CDAP Studio 내에서 파이프 라인 구성 JSON 파일을 가져 와서 Import Pipeline 버튼을 사용하여 새 파이프 라인을 만들 수 있습니다.

CDAP Studio : 오른쪽 위 도구 모음에 있는 Button 레이블,

구성 파일에 의해 결정되면 어플리케이션 템플릿이 적절히 설정되고 현재 템플릿에서 변경 될 수 있습니다.

CDAP 파이프 라인 구성 파일 스펙을 충족시키는 유효한 구성 파일이 필요합니다. 구성 파일을 내보내 기존 파이프 라인에서 생성 될 수 있습니다.

113

Page 120: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

파이프 라인 실행하기

파이프 라인은 다음을 사용하여 시작, 중지 및 제어 할 수 있습니다.

CDAP Pipelines UI

CDAP UI

CDAP CLI

Lifecycle HTTP RESTful API 를 사용하는 명령 줄 도구

CDAP PIPELINES UI 내에서 파이프 라인 실행

CDAP PIPELINES UI 내에서 파이프 라인을 시작하고 중지 할 수 있습니다.

배치 파이프 라인의 경우 일정을 시작 또는 중지 ( “일시 중단”) 할 수 있습니다. 그런 다음 예정된 시간에 시작됩니다. (일정을 변경하려면 새로운 일정으로 새 파이프 라인을 만들어야 합니다.)

실시간 파이프 라인의 경우 파이프 라인을 시작하거나 중지하면 됩니다.

파이프 라인을 시작하는 데 사용되는 인수 (설정(preferences)과 런타임 인수(runtime arguments) 모두)를 설정하고 해당 구성, 설정, 단계, 스키마 및 로그와 같은 파이프 라인의 세부 사항을 볼 수 있습니다.

런타임 인수

파이프 라인을 만들 때 알 수 없지만 각 파이프 라인 실행을 시작할 때 설정되는 여러 가지 구성 설정(configuration settings)이 있는 파이프 라인을 만들 수 있습니다.

예를 들어 데이터베이스 (소스, source)에서 읽고 테이블 (싱크, sink)에 쓰는 파이프 라인이 필요할 수 있습니다. 데이터베이스 소스의 이름과 테이블 싱크의 이름은 실행마다 변경 될 수 있으므로 실행을 시작하기 전에 이러한 값을 입력(input)으로 지정해야 합니다.

114

Page 121: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

실행을 시작할 때 특정 동작을 사용하여 파이프 라인을 만들 수 있습니다. 조치는 일부 논리에 따라 소스로 사용할 데이터베이스의 이름과 싱크로 쓸 테이블의 이름을 제공 할 수 있습니다. 파이프 라인의 다음 단계에서는 이 정보를 사용하여 적절한 소스 및 싱크에서 읽고 쓸 수 있습니다.

이렇게 하기 위해 CDAP 는 런타임에 평가되고 대체 될 매크로의 사용을 지원합니다. 매크로는 재귀 (중첩) 확장(recursive (nested) expansion)을 지원하고 간단한 구문을 사용합니다. 이러한 매크로는 파이프 라인 구성 및 런타임 인수에서 정의됩니다.

런타임 인수는 어플리케이션 기본 설정, 런타임 인수 및 워크 플로우 토큰에서 소싱(sourcing)하여 해결됩니다. 선행(precedence)은 우선 순위가 가장 높은 워크 플로우 토큰입니다.

이러한 인수 및 기본 설정은 CDAP UI, CDAP CLI 또는 Program Lifecycle 및 Preferences HTTP RESTful API 를 사용하여 설정할 수 있습니다.

사용법과 예제에 대한 자세한 내용은 런타임 인수와 매크로에 대한 섹션에서 설명합니다.

파이프 라인 재실행

파이프 라인을 다시 실행하면 이전에 설정된 런타임 인수가 삭제되고 필요할 경우 다시 설정해야 합니다. 이전에 설정된 어플리케이션 설정은 그대로 유지되고 다시 사용됩니다.

알림

파이프 라인이 완료되면 하나 이상의 실행 후 작업을 사용하여 알림을 보낼 수 있습니다. 이것들은 파이프 라인 설정(pipeline configuration)에서 설정됩니다.

이러한 실행 후 플러그인은 전자 메일, 데이터베이스 쿼리 및 일반 HTTP 콜백 작업을 허용합니다.

115

Page 122: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

로그

파이프 라인이 실행되면 CDAP 로그에 항목이 만들어집니다.

파이프 라인에 대한 로그는 다른 CDAP 어플리케이션 및 프로그램과 동일한 도구를 사용하여 얻을 수 있으며 관리 설명서, 로깅 및 모니터링 및 HTTP RESTful API 로깅에서 설명합니다.

스크립트 변환(Script transform) 단계는 스크립트 변환시 플러그인 개발 섹션에서 설명한대로 로그에 쓸 수 있습니다.

메트릭

파이프 라인이 실행되면 시스템 및 사용자 메트릭이 모두 작성됩니다.

파이프 라인에 대한 시스템 메트릭은 다른 CDAP 어플리케이션 및 프로그램과 동일한 도구를 사용하여 얻을 수 있으며 관리 설명서, 메트릭 및 Metrics HTTP RESTful API 에 설명되어 있습니다.

스크립트 변환 단계에서는 스크립트 변환시 플러그인 개발 섹션에서 설명한대로 메트릭을 만들 수 있습니다.

예를 들어 세 단계 (DataGenerator, JavaScript 및 Table)가 있는 “demoPipeline”이라는 실시간 파이프 라인이 있는 경우 표시를 위해 다시 포맷 된 것과 같은 컬(curl) 명령을 사용하여 사용 가능한 메트릭을 검색 할 수 있습니다.

Linux

$ curl -w"\n" -X POST "http://localhost:11015/v3/metrics/search?target=metric&tag=namespace:default&tag=app:demoPipeline"

["system.app.log.debug","system.app.log.info","system.app.log.warn","system.dataset.store.bytes","system.dataset.store.ops","system.dataset.store.reads","system.dataset.store.writes","system.metrics.emitted.count","user.DataGenerator.records.out","user.JavaScript.record.count","user.JavaScript.records.in","user.JavaScript.records.out","user.Table.records.in","user.Table.records.out","user.metrics.emitted.count"]

116

Page 123: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Windows

> curl -X POST "http://localhost:11015/v3/metrics/search?target=metric&tag=namespace:default&tag=app:demoPipeline"

["system.app.log.debug","system.app.log.info","system.app.log.warn","system.dataset.store.bytes","system.dataset.store.ops","system.dataset.store.reads","system.dataset.store.writes","system.metrics.emitted.count","user.DataGenerator.records.out","user.JavaScript.record.count","user.JavaScript.records.in","user.JavaScript.records.out","user.Table.records.in","user.Table.records.out","user.metrics.emitted.count"]

이 경우 사용자 메트릭 “user.JavaScript.record.count”가 다음을 사용하여 JavaScript 단계에서 증가되었습니다.

context.getMetrics().count('record.count', 1);

메트릭 값은 다음을 사용하여 검색 할 수 있습니다.

Linux

$ curl -w"\n" -X POST "localhost:11015/v3/metrics/query?tag=namespace:default&tag=app:etlRealtime6&metric=user.JavaScript.record.count&aggregate=true"

{"startTime":0,"endTime":1468884338,"series":[{"metricName":"user.JavaScript.record.count","grouping":{},"data":[{"time":0,"value":170}]}],"resolution":"2147483647s"}

Windows

> curl -X POST "localhost:11015/v3/metrics/query?tag=namespace:default&tag=app:etlRealtime6&metric=user.JavaScript.record.count&aggregate=true"

{"startTime":0,"endTime":1468884338,"series":[{"metricName":"user.JavaScript.record.count","grouping":{},"data":[{"time":0,"value":170}]}],"resolution":"2147483647s"}

CDAP CLI 를 사용하여 다음을 사용하여 값을 검색 할 수 있습니다.

CDAP CLI117

Page 124: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

cdap > get metric value user.JavaScript.record.count 'app=demoPipeline'

Start time: 0End time: 1468884640

Series: user.JavaScript.record.count+===================+| timestamp | value |+===================+| 0 | 170 |+===================+

오류 레코드 처리

레코드의 유효성을 검사하고 후속 오류를 처리하는 문제를 처리하기 위해 레코드가 지정된 조건과 일치하는지 확인할 수 있는 특정 변환 단계를 사용할 수 있습니다. 기준에 맞지 않는 레코드는 버려 질 수 있으며 적절한 메시지는 구성 가능한 오류 데이터 세트에 기록됩니다.

이러한 변환 플러그인은 오류 레코드 처리를 지원합니다.

JavaScript

Python Evaluator

Validator

XML Parser

예제 및 추가 정보는 핵심 검사기를 참조하십시오.

리소스 구성하기

파이프 라인 리소스는 다른 CDAP 워크 플로우 어플리케이션으로 구성 될 수 있습니다.

YARN 의 CDAP 프로그램에 대한 인스턴스 및 자원 보증 확장에 대한 관리 설명서 섹션을 참조하십시오.

118

Page 125: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

파이프 라인 업그레이드

4.2.x 파이프 라인을 업그레이드하려는 경우 CDAP 의 분산 버전과 함께 패키지 된 ETL 업그레이드 도구를 사용할 수 있습니다. 이 도구를 실행하여 4.3.3 버전의 CDAP Studio에서 열려고 하는 이전 버전의 아티팩트(artifacts)로 작성된 어플리케이션을 업그레이드하기 위해 이 도구를 실행해야 합니다.

이 도구는 CDAP 의 인스턴스에 연결하고 4.2.x 버전의 시스템 아티팩트를 사용하는 어플리케이션을 찾은 다음 해당 아티팩트의 4.3.3 버전을 사용하도록 어플리케이션을 업데이트합니다.

명령을 실행할 때 CDAP 가 실행 중이어야 합니다.

$ java -cp /opt/cdap/master/libexec/cdap-etl-tools-4.3.3.jar co.cask.cdap.etl.tool.UpgradeTool -u http://<host>:<port> -e /tmp/failedUpgrades upgrade

첫 번째 인수는 CDAP 라우터의 호스트 및 포트입니다. 두 번째 인수는 업그레이드 할 수 없는 파이프 라인의 구성을 쓰는 디렉토리입니다. 파이프 라인에서 사용된 플러그인의 새 버전이 이전 버전과 호환되지 않는 경우 파이프 라인이 업그레이드되지 않을 수 있습니다. 예를 들어, 플러그인이 새 필수 속성을 추가 한 경우 이 문제가 발생할 수 있습니다.

특정 네임 스페이스 내의 ETL 어플리케이션 만 업그레이드 할 수도 있습니다.

$ java -cp /opt/cdap/master/libexec/cdap-etl-tools-4.3.3.jar co.cask.cdap.etl.tool.UpgradeTool -u http://<host>:<port> -n <namespace-id> upgrade

ETL 어플리케이션을 하나만 업그레이드 할 수도 있습니다.

$ java -cp /opt/cdap/master/libexec/cdap-etl-tools-4.3.3.jar co.cask.cdap.etl.tool.UpgradeTool -u http://<host>:<port> -n <namespace-id> -p <app-name> upgrade

119

Page 126: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

인증을 사용하도록 설정 한 경우 액세스 토큰을 파일에 저장하고 파일을 도구에 전달해야합니다.

$ java -cp /opt/cdap/master/libexec/cdap-etl-tools-4.3.3.jar co.cask.cdap.etl.tool.UpgradeTool -u http://<host>:<port> -a <tokenfile> upgrade

예를 들어 (보안 설명서 <testing-security> 의 예제에 표시된 것처럼) 다음과 같이 액세스 토큰을 얻은 경우 :

{"access_token":"AghjZGFwAI7e8p65Uo7OpfG5UrD87psGQE0u0sFDoqxtacdRR5GxEb6bkTypP7mXdqvqqnLmfxOS", "token_type":"Bearer","expires_in":86400}

액세스 토큰 자체 (AghjZGFwAI7e8p65Uo7OpfG5UrD87psGQE0u0sFDoqxtacdRR5GxEb6bkTypP7mXdqvqqnLmfxOS)는 파일에 저장되며 파일 경로는 위의 명령에서 사용됩니다.

120

Page 127: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

플러그인 관리

이 섹션에서는 시스템에서 플러그인 배치를 관리하는 방법에 대해 설명합니다.

플러그인 배포 : 시스템이나 사용자 아티팩트로 배포

배포 인증 : 아티팩트가 성공적으로 배포되었는지 확인

서드파티 JAR 배포 : 어플리케이션에서 JDBC 드라이버 및 기타 아티팩트를 사용할 수있게 만들기

여러 버전 관리 : 여러 버전을 공존하여 동시에 사용할 수 있습니다.

플러그인 삭제 : CDAP 에서 배포 된 아티팩트 제거

자신만의 플러그인을 작성하는 경우에는 JAR 에 패키지를 패키징하고 CDAP Studio 와 같은 UI 에 플러그인을 작성하는 등 플러그인 작성에 대한 정보는 플러그인 개발 섹션을 참조하십시오.

서드파티 JAR (JDBC 드라이버 등)을 설치하여 다른 플러그인이나 어플리케이션에 액세스 할 수 있게 하려면 다음 지시 사항을 참조하십시오.

사용 가능한 플러그인

CDAP 에서 사용 가능한 플러그인은 별도의 레퍼런스 페이지에서 있습니다. 사용자가 설치 한 플러그인은 여기에 나열되어 있지 않지만 제대로 설치되어 있으면 CDAP Studio를 통해 해당 플러그인에 대한 레퍼런스 설명서를 사용할 수 있습니다.

플러그인 배포

플러그인을 다른 아티팩트(artifacts)에서 사용할 수 있게 하려면 (따라서 아티팩트 중 하나에서 생성 된 모든 애플리케이션에서 사용 가능), 플러그인을 먼저 JAR 파일에

121

Page 128: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

패키지화 해야 합니다. 그런 다음 JAR 파일을 시스템 아티팩트 또는 사용자 아티팩트로 배포해야합니다.

시스템 아티팩트는 모든 네임 스페이스에서 사용자가 사용할 수 있습니다. 사용자 아티팩트는 배포된 네임 스페이스의 사용자만 사용할 수 있습니다. 의도적으로 사용자 아티팩트로 배포하는 것은 Artifact HTTP RESTful API 에 대한 액세스만 요구하는 반면 시스템 아티팩트로 배포하려면 CDAP Master 의 파일 시스템에 대한 액세스가 필요합니다. 그러면 관리자 액세스 및 권한이 필요합니다.

시스템 아티팩트로 배포

아티팩트를 시스템 아티팩트로 배포하려면 JAR 파일과 일치하는 구성 파일을 모두 적절한 디렉토리에 배치해야 합니다.

CDAP Sandbox: $CDAP_INSTALL_DIR/artifacts

Distributed CDAP: 플러그인 JAR 은 로컬 파일 시스템에 배치해야 하며 cdap-site.xml 에 app.artifact.dir 속성을 설정하여 경로를 CDAP 에 제공 할 수 있습니다. 여러 디렉토리는 세미콜론으로 구분하여 정의 할 수 있습니다. 기본 경로는 / opt / cdap / master / artifacts 입니다.

각 플러그인 JAR 에는 플러그인을 사용할 수 있는 아티팩트를 지정하는 해당 구성 파일이 있어야합니다. 파일 이름은 .jar 확장자 대신 .json 확장자를 가져야 한다는 점을 제외하고는 JAR 의 이름과 일치해야 합니다. 예를 들어 JAR 파일의 이름이 custom-transforms-1.0.0.jar 인 경우 해당하는 custom-transforms-1.0.0.json 파일이 있어야합니다. custom-transforms-1.0.0.jar 에 cdap-data-pipeline 및 cdap-data-streams 아티팩트에서 사용할 수있는 변환이 포함되어 있으면 custom-transforms-1.0.0.json 에 다음 내용이 포함됩니다.

{ "parents": [ "cdap-data-pipeline[4.3.3,4.3.3]", "cdap-data-streams[4.3.3,4.3.3]" ]}

이 파일은 custom-transforms-1.0.0.jar 의 플러그인을 버전 4.3.3 의 cdap-data-pipeline 및 cdap-data-streams 아티팩트에서 사용할 수 있음을 지정합니다. 포함된 버전을 나타내는

122

Page 129: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

대괄호 ([])와 배타적 버전을 나타내는 괄호 ()를 사용하여 플러그인을 사용할 수 있는 더 다양한 버전들을 지정할 수도 있습니다. 예 :

{ "parents": [ "cdap-data-pipeline[3.5.0,4.0.0)", "cdap-data-streams[3.5.0,4.0.0)" ]}

이 명령은 cdap-data-pipeline 및 cdap-data-streams 아티팩트 버전 3.5.0 (포함)에서 4.0.0 (제외)에서 이 플러그인을 사용할 수 있음을 지정합니다.

아티팩트에 서드파티 플러그인이 포함되어 있는 경우 이를 구성 파일에 명시적으로 나열 할 수 있습니다. 예를 들어, 서드파티 JAR 에 포함된 JDBC 드라이버를 배포 할 수 있습니다. 이러한 경우 플러그인이 되어야 하는 클래스에 주석을 추가하는 코드를 제어 할 수 없으므로 설정에 나열해야 합니다.

{ "parents": [ "cdap-data-pipeline[3.5.0,4.0.0)", "cdap-data-streams[3.5.0,4.0.0)" ], "plugins": [ { "name": "mysql", "type": "jdbc", "className": "com.mysql.jdbc.Driver" } ]}

JAR 과 일치하는 구성 파일이 제자리에 있으면 CDAP CLI 명령 (load artifact) 또는 HTTP RESTful API 호출로 시스템 아티팩트를 로드하여 아티팩트를 로드 할 수 있습니다. 아티팩트에 대한 설명서에 설명된 대로, 스냅샷 아티팩트만 먼저 제거될 필요없이 다시 재배포 할 수 있습니다.

또는 이 변경 사항을 로컬 Sandbox 모드에서 적용하려면 CDAP Sandbox 를 다시 시작해야하며 cdap-master 서비스는 Distributed 모드에서 다시 시작해야합니다.

사용자 아티팩트로 배포

123

Page 130: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

아티팩트를 사용자 아티팩트로 배포하려면 아티팩트 HTTP RESTful API 아티팩트 추가 또는 CLI 를 사용하십시오.

HTTP RESTful API 를 사용하는 경우 Artifact-Extends 헤더를 지정해야 합니다. 아티팩트의 버전이 업로드되는 JAR 파일의 매니페스트 파일(manifest file)에 정의되어 있지 않으면 Artifact-Version 헤더도 지정해야 합니다.

CLI 를 사용할 때 시스템 아티팩트로 배치에 설명 된 것과 정확히 동일한 구성 파일을 사용해야합니다.

예를 들어 RESTful API 를 사용하여 custom-transforms-1.0.0.jar 을 배포하려면 다음을 수행하십시오.

Linux

$ curl -w"\n" -X POST "localhost:11015/v3/namespaces/default/artifacts/custom-transforms" \-H "Artifact-Extends: system:cdap-data-pipeline[4.3.3, 4.3.3]/system:cdap-data-streams[4.3.3, 4.3.3]" \--data-binary @/path/to/custom-transforms-1.0.0.jar

Windows

> curl -X POST "localhost:11015/v3/namespaces/default/artifacts/custom-transforms" ^-H "Artifact-Extends: system:cdap-data-pipeline[4.3.3, 4.3.3]/system:cdap-data-streams[4.3.3, 4.3.3]" ^--data-binary @/path/to/custom-transforms-1.0.0.jar

CLI 사용 :

CDAP CLI

cdap > load artifact /path/to/custom-transforms-1.0.0.jar config-file /path/to/config.json

여기에는 아래 명령이 config.json 에 포함됩니다.

{ "parents": [ "system:cdap-data-pipeline[4.3.3,4.3.3]", "system:cdap-data-streams[4.3.3,4.3.3]" ]}

124

Page 131: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

시스템 아티팩트를 확장하는 사용자 아티팩트를 배포 할 때 상위 아티팩트 이름 앞에 ‘system:’을 붙여야 합니다. 이 경우 시스템 아티팩트와 이름이 같은 사용자 아티팩트가 있습니다. 사용자 아티팩트를 확장하는 경우 접두어는 필요하지 않습니다.

플러그인 정보를 명시적으로 나열해야 한다는 점을 제외하면 동일한 방식으로 서드파티 JAR 을 배포 할 수 있습니다. 아티팩트에 대한 설명서에 설명된 대로, 스냅샷 아티팩트 만 먼저 제거할 필요없이 다시 재배포 할 수 있습니다.

RESTful API 사용 (아티팩트 버전이 JAR 매니페스트 파일에 없으면 JAR 내용이 파일 이름없이 업로드되므로 명시 적으로 설정해야 함)

Linux

$ curl -w"\n" -X POST "localhost:11015/v3/namespaces/default/artifacts/mysql-connector-java" \-H 'Artifact-Plugins: [ { "name": "mysql", "type": "jdbc", "className": "com.mysql.jdbc.Driver" } ]' \-H "Artifact-Version: 5.1.35" \-H "Artifact-Extends: system:cdap-data-pipeline[4.3.3, 4.3.3]/system:cdap-data-streams[4.3.3, 4.3.3]" \--data-binary @mysql-connector-java-5.1.35.jar

Windows

> curl -X POST "localhost:11015/v3/namespaces/default/artifacts/mysql-connector-java" ^-H "Artifact-Plugins: [ { \"name\": \"mysql\", \"type\": \"jdbc\", \"className\": \"com.mysql.jdbc.Driver\" } ]" ^-H "Artifact-Version: 5.1.35" ^-H "Artifact-Extends: system:cdap-data-pipeline[4.3.3, 4.3.3]/system:cdap-data-streams[4.3.3, 4.3.3]" ^--data-binary @mysql-connector-java-5.1.35.jar

CLI 사용 (아티팩트 버전이 명시적으로 설정되지 않은 경우 JAR 파일 이름에서 파생됨에 유의하십시오.)

CDAP CLI

cdap > load artifact /path/to/mysql-connector-java-5.1.35.jar config-file /path/to/config.json

여기에서 아래 명령이 config.json 에 포함됩니다.

125

Page 132: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

{ "parents": [ "system:cdap-data-pipeline[4.3.3,4.3.3]", "system:cdap-data-streams[4.3.3,4.3.3]" ], "plugins": [ { "name": "mysql", "type": "jdbc", "className": "com.mysql.jdbc.Driver" } ]}

배포 검증

Artifact HTTP RESTful API 를 사용하여 아티팩트 세부 정보를 검색하여 플러그인 아티팩트가 성공적으로 추가되었는지 확인 할 수 있습니다. 예를 들어 사용자 정의 변환 아티팩트에 대한 세부 정보를 검색하려면 다음을 수행하십시오.

Linux

$ curl -w"\n" -X GET "localhost:11015/v3/namespaces/default/artifacts/custom-transforms/versions/1.0.0?scope=[system | user]

Windows

> curl -X GET "localhost:11015/v3/namespaces/default/artifacts/custom-transforms/versions/1.0.0?scope=[system | user]

CLI 사용하여 :

CDAP CLI

cdap > describe artifact properties custom-transforms 1.0.0 [system | user]

사용자 정의 변환 아티팩트를 시스템 아티팩트로 배포 한 경우 스코프(scope)는 시스템입니다. 사용자 아티팩트로 사용자 지정 변형 아티팩트를 배포 한 경우 스코프는 사용자입니다.

Artifact HTTP RESTful API 를 사용하여 특정 유형의 플러그인을 나열하여 새로 추가된 아티팩트의 플러그인을 부모가 사용할 수 있는지 확인할 수 있습니다. 예를 들어, cdap-

126

Page 133: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

data-pipeline 이 사용자 정의 변환 아티팩트의 플러그인에 액세스 할 수 있는지 확인하려면 다음을 수행하십시오.

Linux

$ curl -w"\n" -X GET "localhost:11015/v3/namespaces/default/artifacts/cdap-data-pipeline/versions/4.3.3/extensions/transform?scope=system"

Windows

> curl -X GET "localhost:11015/v3/namespaces/default/artifacts/cdap-data-pipeline/versions/4.3.3/extensions/transform?scope=system"

CLI 사용하여 :

CDAP CLI

cdap > list artifact plugins cdap-data-pipeline 4.3.3 transform system

그런 다음 반환된 목록을 확인하여 변환(transform)이 목록에 있는지 확인할 수 있습니다. 여기에 있는 스코프는 상위 아티팩트의 스코프를 나타냅니다. 이 예제에서는 cdap-data-pipeline 이 시스템 아티팩트이기 때문에 시스템 스코프입니다. 부모(parent)가 여전히 시스템 아티팩트이기 때문에 사용자 아티팩트로 사용자 지정 변환을 배포 한 경우에도 마찬가지입니다.

서드파티 JAR 배포

Prebuilt JARs: 미리 작성된 서드파티 JAR (예 : JDBC 드라이버)을 플러그인으로 사용하려는 경우 JAR 을 설명하는 JSON 파일을 작성해야 합니다.

JSON 형식에 대한 자세한 내용은 개발자 설명서 중 서드파티 플러그인 및 플러그인 배포 섹션을 참조하십시오.

샘플 JDBC Driver Plugin 구성 :

127

Page 134: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

{ "parents": [ "cdap-data-pipeline[4.3.3,4.3.3]" ], "plugins": [ { "name" : "mysql", "type" : "jdbc", "className" : "com.mysql.jdbc.Driver", "description" : "Plugin for MySQL JDBC driver" }, { "name" : "postgresql", "type" : "jdbc", "className" : "org.postgresql.Driver", "description" : "Plugin for PostgreSQL JDBC driver" } ]}

여러 버전 관리

동일한 플러그인 (또는 아티팩트)의 다른 버전을 로드하고 동시에 사용할 수 있습니다. 이들은 CDAP Studio(개발자 설명서 중 Pipelines 의 CDAP Studio 참조)에서 플러그인(개발자 설명서 중 Developing Pipelines 참조)을 선택하거나 플러그인 템플릿을 만들 때 가능한 선택 사항으로 나타납니다. 어플리케이션을 작성하는 데 사용되는 설정 파일의 플러그인에 대해 버전이 지정되지 않은 경우 현재 시스템에서 사용할 수 있는 가장 높은 버전이 사용됩니다.

플러그인 삭제하기

플러그인은 Artifact HTTP RESTful API 또는 CDAP CLI 를 사용하여 삭제할 수 있습니다.

CDAP CLI 의 경우 user 스코프에 배포된 플러그인만 CDAP CLI 에서 삭제할 수 있습니다. 적절한 호출을 사용하여 HTTP RESTful API 를 사용하여 system 및 user 스코프 플러그인을 모두 삭제할 수 있습니다.

128

Page 135: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

모든 경우에 플러그인과 연결된 실제 파일 (JAR 및 JSON 파일)은 삭제되지 않습니다. 대신, CDAP 시스템에서 해당 참조가 삭제됩니다. 이러한 참조가 삭제 된 후 파일이 제거되지 않으면, system 스코프 플러그인의 경우, 다음 번 CDAP 이 재시작될 때 아티팩트들이 다시 로드 될 것입니다. 이들 아티팩트들은 적절한 디렉토리로부터의 스타트업에서 자동으로 로드되기 때문입니다.

데이터 준비 설명서

Data Preparation 는 (파이프 라인의 MapReduce 또는 Spark 작업을 사용하여) 전체 데이터 세트에서 논리를 실행하기 전에 데이터의 일부분(100 개 행)을 보고 탐색하고 변환 할 수 있게 해주는 어플리케이션입니다. 즉, 변형을 신속하게 적용하여 전체 데이터 세트에 미치는 영향을 이해할 수 있습니다.

Data Preparation 를 통해 RDBMS, Kafka, .csv, .json 파일 등 다양한 데이터 소스에 연결 할 수 있습니다. 이 데이터를 쉽게 이해하고 쉽게 파싱 할 수 있습니다.

데이터가 로드되면, Data Preparation 를 통해 스프레드 시트 형식으로 데이터를 검사 할 수 129

Page 136: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

있습니다. 열에 필터를 적용하여 데이터 분포를 보다 잘 이해하고 null 인 행을 검사 할 수 있습니다.

또한 Data Preparation 를 통해 데이터를 변환 할 수 있습니다. Data Preparation 는 보다 복잡한 프로그래밍 논리가 필요 없는 간단한 변환을 적용하기 위해 작성되었습니다. 열을 결합하고, 값을 대체하고, 조건부로 값을 삭제하는 등의 작업을 수행 할 수 있습니다. 또한 데이터를 다시 포맷 할 수 있습니다 (예 : .csv 에서 .json 으로 변환).

마지막으로 일단 데이터를 탐색하고 원하는 변환을 적용하면 Create Pipeline 을 클릭하여 이러한 변환을 조작 할 수 있습니다. 병렬 처리 된 MapReduce, Spark 또는 Spark Streaming 작업에서 데이터 전체에 대한 변환을 적용 할 Pipeline 이 만들어집니다 (다음 섹션에서 설명).

130

Page 137: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

DataPrep 개념이 Data Perp 구현은 Record, Column, Directive, Step 및 Pipeline 의 개념을 사용합니다.

레코드

레코드는 필드 이름과 필드 값의 모음입니다.

Column(열)은 지원되는 모든 Java 유형 (각 레코드마다 하나씩)의 데이터 값입니다.

Directive지시문

A Directive is a single data manipulation instruction, specified to either transform, filter, or pivot a single record into zero or more records. A directive can generate one or more steps to be executed by a pipeline.

Directive 는 하나의 레코드를 0 개 이상의 레코드로 변환, 필터링 또는 피벗(pivot)하도록 지정된 단일 데이터 조작 명령어입니다. 지시문은 파이프 라인에 의해 실행될 하나 이상의 단계를 생성 할 수 있습니다.

단계

131

Page 138: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Step(단계)은 단일 레코드 또는 레코드 세트에서 작동하는 데이터 변환 기능의 구현입니다. 단계는 함수의 어플리케이션에서 0 개 이상의 레코드를 생성 할 수 있습니다.

파이프 라인

Pipeline(파이프라인)은 레코드에 적용 할 단계의 모음입니다. 단계에서 출력된 레코드는 파이프 라인의 다음 단계로 전달됩니다.

표기법

지시문

A directive can be represented in text in this format:

지시문은 다음 포맷으로 텍스트로 나타낼 수 있습니다:

<command> <argument-1> <argument-2> ... <argument-n>

레코드

이 설명서의 레코드는 유형에 대한 언급없이 데이터의 일반 표현으로 표시된 값과 열 이름을 나타내는 객체 키가 있는 JSON 객체로 표시됩니다.

예 :

{ "id": 1, "fname": "root", "lname": "joltie",

132

Page 139: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

"address": { "housenumber": "678", "street": "Mars Street", "city": "Marcity", "state": "Maregon", "country": "Mari" }, "gender": "M"}

133

Page 140: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

성능 평가

설정

성능 측정에 사용된 하드웨어 :

2.9 GHz Intel Core i5

16 GB 2133 MHz LPDDR3

Java 7

라이트 데이터 변환 DMD

다음은 데이터에 대해 수행되는 고급 변환입니다.

Parsing of CSV

Drop columns

Setting defaults on column

Changing case

Masking data

Filtering rows based on an expression

Directives

parse-as-csv demo , truedrop demodrop demo_12

134

Page 141: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

fill-null-or-empty demo_11 N/Auppercase demo_17mask-number demo_18 xxx###drop demo_6drop demo_7fill-null-or-empty demo_5 N/Auppercase demo_3filter-row-if-true demo_9 =~ "CA"mask-number demo_10 xxx##mask-shuffle demo_4

실험

이 두 가지 실험이 실행되었습니다 : 첫 번째는 1300 만 레코드이고, 두 번째는 8000 만 레코드입니다.

실험 # 1

Number of records: 13,499,973

Number of bytes: 4,499,534,313 (~ 4GB)

Number of columns: 18

Performance Numbers

count = 13,376,053mean rate = 64998.50 records/second1-minute rate = 64921.29 records/second5-minute rate = 46866.70 records/second15-minute rate = 36149.86 records/second

실험 # 2

Number of records: 80,999,838 (80M)

Number of bytes: 26,997,205,878 (~ 26GB)

Number of columns: 18

135

Page 142: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Total time: 1294 seconds (21.5 minutes)

Performance Numbers

count = 80,944,061mean rate = 62465.93 records/second1-minute rate = 62706.39 records/second5-minute rate = 60755.41 records/second15-minute rate = 56673.32 records/second

136

Page 143: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

제외 (제한) 및 별칭 지시문(Excluding (Restricting) and Aliasing Directives)단체에서 데이터 준비 도구를 최종 사용자에게 공개하려는 경우 “안전하다고 간주되지 않는”지침을 제한 (제외) 할 수 있는 기능을 원합니다. 안전은 매우 주관적이며 조직마다 다릅니다. 또한 데이터 조작의 “Safe”상태는 승인 프로세스를 거쳐 나중에 제한 목록에서 제외 될 수 있습니다. 간단히 말해 제한 및 제한 해제 기능을 쉽게 구성 할 수 있습니다.

우리가 보아온 두 번째 일반적인 사용 사례는 단체가 단체의 특수 용어에 익숙하고 적응하기가 어렵다는 것입니다. 불가능하지는 않고, 단지 어렵습니다.

이러한 종류의 사용을 지원하기 위해 Data Prep 에는 간단한 구성으로 지시문을 제외하고 별칭으로 지정(aliasing) 할 수 있는 기능이 추가되었습니다.

Feature

Data Prep 가 지원하는 두 가지 구성이 있습니다.

Exclusion (일명, Restriction)

Aliasing

Exclusion 을 사용하여 관리자는 어플리케이션 뿐만 아니라 루트 지시문이나 별칭 지정 문을 사용하여 지시문 목록을 지정할 수 있습니다.

Aliasing 을 사용하면 루트 지시문의 새 이름을 만들 수 있습니다.

Scope

137

Page 144: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Exclusion 과 Aliasing 둘 다 네임 스페이스 범위입니다. 즉, 구성이 적용된 네임 스페이스 내에서만 적용됩니다.

구성

구성(configuration)은 현재 기본 키가 있는 JSON 객체로 지정됩니다.

exclusions

aliases

다음은 상위 수준의 JSON 객체입니다.

{ "exclusions" : [ "root-directive", ... "root-directive" ],

"aliases" : { "alias" : "alias-name", ... "alias" : "alias-name" }}

Exclusion

기본적으로 로드되거나 UDD (User Defined Directives)로 로드 될 수 있는 명령의 배열이거나 별칭된 지시문 일 수도 있습니다.

Aliases

별칭된 지시문과 실제 지시문 이름 간의 맵입니다.

138

Page 145: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

구성 적용

구성을 적용하기 위한 서비스 endpoint 가 존재합니다. 구성을 적용하려면 다음 REST 호출을 사용하십시오.

curl -s -X POST @<path-to-json>/<filename.json> \ "http://<hostname>:11015/v3/namespaces/<namepsace>/apps/dataprep/services/service/methods/config"

그리고 예는 다음과 같습니다:

curl -s -X POST --data-binary @/tmp/wrangler-config.json \ http://localhost:11015/v3/namespaces/default/apps/dataprep/services/service/methods/config \ | python -mjson.tool{ "message": "Successfully updated configuration.", "status": 200}

139

Page 146: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Directives

지시문(directives)은 데이터 준비 UI 에서 데이터를 변형하는 데 사용됩니다.

Catalog LookupCATALOG-LOOKUP 지시문은 미리 로드된 (정적 인) 카탈로그에 대한 조회를 제공합니다. Currently, 이 지침은 건강 관리 ICD-9 및 ICD-10- (2016,2017) 코드를 찾는 것을 지원합니다.

구문

catalog-lookup <catalog> <column>

그만큼 <catalog> 에서 값을 찾는 데 사용해야 하는 사전을 지정합니다. <column> .

현재 지원되는 카탈로그는 다음과 같습니다.

ICD-9

ICD-10-2016

ICD-10-2017

140

Page 147: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

사용을 위한 참고사항

이 레코드를 예제로 사용할 경우 : 하나의 필드 (코드)가 포함 된 레코드로,

{ "code": "Y36521S"}

ICD-10-2016 카탈로그와 함께 CATALOG-LOOKUP 지시문 적용 :

catalog-lookup ICD-10-2016 code

추가 열이 있는 레코드가 생성됩니다. code_ <catalog> _description (조회 결과 포함). 일치하는 코드가 없는 경우 대신 null 이 저장됩니다. 이 예제의 경우 code_icd_10_2016_description 에서 다음을 수행하십시오.

{ "code": "Y36521S", "code_icd_10_2016_description": "War operations involving indirect blast effect of nuclear weapon, civilian, sequela"}

조회가 널 (null)이거나 레코드에 대해 비어있는 경우, 널 (NULL) 값이 컬럼 필드에 추가됩니다.

141

Page 148: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Change Column Case

CHANGE-COLUMN-CASE 지정 문은 열 이름을 소문자 또는 대문자로 변경합니다.

구문

change-column-case lower|upper

지정된 대소 문자가 잘못되었거나 누락 된 경우 기본값은 소문자입니다.

예제

이 레코드를 예제로 사용 :

{ "Id": 1, "Gender": "male", "FNAME": "Root", "lname": "JOLTIE", "Address": "67 MARS AVE, MARSCIty, Marsville, Mars"}

이 지시문 적용 :

change-column-case lower

이 레코드를 얻는다 :

142

Page 149: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

{ "id": 1, "gender": "MALE", "fname": "Root", "lname": "Joltie", "address": "67 mars ave, marscity, marsville, mars"}

이 지시문 적용 :

change-column-case upper

이 레코드를 얻는다 :

{ "ID": 1, "GENDER": "MALE", "FNAME": "Root", "LNAME": "Joltie", "ADDRESS": "67 mars ave, marscity, marsville, mars"}

143

Page 150: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Changing Case

UPPERCASE, LOWERCASE 및 TITLECASE 지시어는 적용되는 열 값의 대 / 소문자를 변경합니다.

구문

lowercase <column>uppercase <column>titlecase <column>

이 지시문은 대소 문자의 변경을 수행합니다.

이 레코드를 예제로 사용 :

{ "id": 1, "gender": "male", "fname": "Root", "lname": "JOLTIE", "address": "67 MARS AVE, MARSCIty, Marsville, Mars"}

이 지시어 적용

uppercase gendertitlecase fnametitlecase lname

144

Page 151: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

lowercase address

이 레코드를 얻는다 :

{ "id": 1, "gender": "MALE", "fname": "Root", "lname": "Joltie", "address": "67 mars ave, marscity, marsville, mars"}

145

Page 152: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Cleanse Column Names

CLEANSE-COLUMN-NAMES 지시어는 다음 규칙에 따라 열 이름을 삭제합니다.

선행 및 후행 공백 제거

열 이름 소문자

[AZ] [az] [0-9] 또는 _ 중 하나가 아닌 문자를 밑줄 (_)로 바꿉니다.

구문

cleanse-column-names

이 레코드를 예제로 사용 :

{ "COL1": 1, "col:2": 2, "Col3": 3, "COLUMN4": 4, "col!5": 5}

이 지시문 적용 :

cleanse-column-names146

Page 153: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이 레코드를 얻는다 :

{ "col1": 1, "col_2": 2, "col3": 3, "column4": 4, "col_5": 5}

147

Page 154: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Columns Replace

COLUMNS-REPLACE 지시문은 열 이름을 대량으로 변경합니다.

구문

columns-replace <sed-expression>

그만큼 <sed-expression> s / data _ // g 와 같은 sed 표현식 구문을 지정합니다.

예를 들어,이 레코드를 사용하면 이 열의 모든 열 이름에 접두어로 data_가 있습니다.

{ "data_name": "root", "data_first_name": "mars", "data_last_name": "joltie", "data_data_id": 1, "data_address": "150 Mars Ave, Mars City, Mars, 8899898", "mars_ssn": "MARS-456282"}

이 지시문 적용 :

columns-replace s/^data_//g

data_와 접두어가 붙은 열 이름이 빈 문자열로 바뀌면 레코드에 결과가 발생합니다.

148

Page 155: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

{ "name": "root", "first_name": "mars", "last_name": "joltie", "data_id": 1, "address": "150 Mars Ave, Mars City, Mars, 8899898", "mars_ssn": "MARS-456282"}

참고 :이 지시문에서는 필드 값을 변경하지 않습니다. 이것은 열 이름에서만 작동합니다.

149

Page 156: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Copy

COPY 지시문은 원본 열의 값을 대상 열로 복사합니다.

구문

copy <source> <destination> [<force>]

COPY 지시어는 <source> 열을 <destination> column.

만약 <destination> 열이 이미 있습니다. <force> 옵션을 true 로 설정하여 해당 열의 기존 데이터를 무시할 수 있습니다. 기본적으로 <force> 옵션이 false 로 설정됩니다.

사용을 위한 참고사항

COPY 지시어는 <source> 경우에만 <source> 열이 존재합니다. 만약 <source> 레코드에 존재하지 않으면 오류가 발생하여 실행이 실패합니다.

복사하면 소스의 전체 사본이 대상으로 생성됩니다. 대상 열의 원본 데이터 형식은 있는 그대로 유지됩니다.

이 레코드를 예제로 사용 :

150

Page 157: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

{ "id": 1, "timestamp": 1234434343, "measurement": 10.45, "isvalid": true, "message": { "code": 132, "text": "Failure in the temperature sensor" }}

다음 지시문 적용 :

copy timestamp datetimecopy message status

이 레코드를 얻는다 :

{ "id": 1, "timestamp": 1234434343, "datetime": 1234434343, "measurement": 10.45, "isvalid": true, "message": { "code": 132, "text": "Failure in the temperature sensor" }, "status": { "code": 132, "text": "Failure in the temperature sensor" }}

151

Page 158: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Cut Character

CUT-CHARACTER 지시어는 문자열 값의 일부를 선택하여 표준 잘라 내기 옵션을 허용합니다.

구문

cut-character <source> <destination> <type> <range|indexes>

그만큼 <type><range|indexes> 표준 절단 옵션입니다.

사용을 위한 참고사항

CUT-CHARACTER 지시문의 표준 옵션에는 하나 이상의 문자 범위 목록이 포함됩니다. 각 범위는 형식 (-b 바이트, -c 문자, -f 필드)으로 시작하며 다음과 같이 작성됩니다.

N 은 1번째부터 N 번째 바이트, 문자 또는 필드.

N-는 N 번째 바이트, 문자 또는 필드에서부터 줄 끝까지

N-M 는 N 번째에서 M’th (포함) 바이트, 문자 또는 필드까지

-M 은처음부터 M’th (포함) 바이트, 문자 또는 필드까지

152

Page 159: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이 레코드를 예제로 사용 :

{ "body": "one two three four five six seven eight"}

다음 지시문 적용 :

cut-character body one -c 1-3cut-character body two -c 5-7cut-character body three -c 9-13cut-character body four -c 15-cut-character body five -c 1,2,3cut-character body six -c -3cut-character body seven -c 1,2,3-5

이 레코드를 얻는다 :

{ "body": "one two three four five six seven eight", "one": "one", "two": "two", "three": "three", "four": "four five six seven eight", "five": "one", "six": "one", "seven": "one t"}

153

Page 160: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Decode

DECODE 지시어는 RFC-4648 에 따라 base32, base64 또는 hex 중 하나로 열 값을 디코딩합니다.

구문

decode <base32|base64|hex> <column>

그만큼 <column> 디코딩이 적용되는 열의 이름입니다.

사용을 위한 참고사항

데이터의 기본 디코딩은 여러 가지 상황에서 기존의 이유로 US-ASCII 데이터로 제한되는 환경에서 데이터를 저장하거나 전송하는 데 사용됩니다. 텍스트 편집기를 사용하여 오브젝트를 조작 할 수 있기 때문에 레거시(legacy) 제한이 없는 새 어플리케이션에서 기본 디코딩을 사용할 수 있습니다.

DECODE 지시문은 다음 형식의 이름을 가진 새 열을 생성합니다. <column> _decode_ <type> .

다음 룰에 따라 다른 컬럼 값이 처리됩니다.

열이 null 의 경우, 결과의 열도 null 가됩니다.

154

Page 161: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

지정된 열이 레코드에 없으면 레코드는 no-op 로 건너 뜁니다.

열 값이 유형 문자열 또는 바이트 배열이 아니면 실패합니다.

ENCODE 지시문을 참조하십시오.

이 레코드를 예제로 사용 :

{ "col1": "IJQXGZJTGIQEK3TDN5SGS3TH", "col2": "VGVzdGluZyBCYXNlIDY0IEVuY29kaW5n", "col3": "48657820456e636f64696e67"}

다음 지시문 적용 :

decode base32 col1decode base64 col2decode hex col3

이 레코드를 얻는다 :

{ "col1": "IJQXGZJTGIQEK3TDN5SGS3TH", "col2": "VGVzdGluZyBCYXNlIDY0IEVuY29kaW5n", "col3": "48657820456e636f64696e67", "col1_decode_base32": "Base32 Encoding", "col2_decode_base64": "Testing Base 64 Encoding", "col3_decode_hex": "Hex Encoding",}

155

Page 162: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Diff Date

DIFF-DATE 지시어는 두 날짜의 차이를 계산합니다.

구문

diff-date <column1> <column2> <destination>

사용을 위한 참고사항

DIFF-DATE 지시문은 두 Date 객체 간의 차이를 계산합니다 ( <column1> 마이너스 <column2> )와 차이를 (밀리 초 단위로) 대상 열에 넣습니다.

이 지시문은 날짜 문자열이 이미 PARSE-AS-DATE 또는 PARSE-AS-SIMPLE-DATE지시문을 사용하여 파싱된 두 개의 열에만 적용될 수 있습니다.

첫 번째 열이 두 번째 열보다 이전 날짜 일 때 음수 차이가 반환 될 수 있습니다.

열의 어느 쪽인가의 값이 null 의 경우, 결과의 열은 null 가됩니다.

열 중 하나에 문자열 now 가 있으면 현재 날짜 - 시간이 대체됩니다. 현재 발생하면 지시문은 현재 모든 행에서 동일한 값을 적용합니다.

예156

Page 163: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이 레코드를 예제로 사용 :

{ "create_date": "02/12/2017", "update_date": "02/14/2017"}

이 지시문 적용 :

diff-date update_date create_date diff_date이 레코드를 얻는다 :

{ "create_date": "02/12/2017", "update_date": "02/14/2017", "diff_date": 17280000}

157

Page 164: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Drop

DROP 지시문은 레코드의 열을 삭제하는 데 사용됩니다.

구문

drop <column>[,<column>]*

그만큼 <column> 삭제할 레코드의 열 이름입니다.

사용을 위한 참고사항

DROP 지시문을 적용한 후 열과 관련 값이 레코드에서 제거됩니다. 나중의 지시문은 삭제 된 열을 참조할 수 없습니다.

이 레코드를 예제로 사용 :

{ "id": 1, "timestamp": 1234434343, "measurement": 10.45, "isvalid": true}

158

Page 165: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이 지시문 적용 :

drop isvalid,measurement

유효하지 않거나 측정 필드가 없는 레코드가 생성됩니다.

{ "id": 1, "timestamp": 1234434343}

159

Page 166: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Encode

ENCODE 지시어는 RFC3248 에 따라 base32, base64 또는 hex 중 하나로 열 값을 인코딩합니다.(RFC-4648)

구문

encode <base32|base64|hex> <column>

그만큼 <column> 인코딩이 적용되는 열의 이름입니다.

사용을 위한 참고사항

데이터의 기본 인코딩은 여러 가지 상황에서 기존의 이유로 US-ASCII 데이터로 제한되는 환경에서 데이터를 저장하거나 전송하는 데 사용됩니다. 텍스트 편집기를 사용하여 오브젝트를 조작할 수 있기 때문에 레거시 제한이 없는 새 어플리케이션에서 기본 인코딩을 사용할 수 있습니다.

ENCODE 지시문은 다음 형식의 이름을 가진 새 열을 생성합니다. <column> _encode_ <type> .

다음 룰에 따라 다른 컬럼 값이 처리됩니다.

열이 null 의 경우, 결과의 열도 null 가됩니다.

지정된 열이 레코드에 없으면 레코드는 no-op 로 건너 뜁니다.

160

Page 167: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

열 값이 유형 문자열 또는 바이트 배열이 아니면 실패합니다.

DECODE 지시문을 참조하십시오.

이 레코드를 예제로 사용 :

{ "col1": "Base32 Encoding", "col2": "Testing Base 64 Encoding", "col3": "Hex Encoding"}

다음 지시문 적용 :

encode base32 col1encode base64 col2encode hex col3

이 레코드를 얻는다 :

{ "col1": "Base32 Encoding", "col2": "Testing Base 64 Encoding", "col3": "Hex Encoding", "col1_encode_base32": "IJQXGZJTGIQEK3TDN5SGS3TH", "col2_encode_base64": "VGVzdGluZyBCYXNlIDY0IEVuY29kaW5n", "col3_encode_hex": "48657820456e636f64696e67"}

161

Page 168: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Extract Regex Groups

EXTRACT-REGEX-GROUPS 지시문은 정규식 그룹의 데이터를 자체 열로 추출합니다.

구문

extract-regex-groups <column> <regex-with-groups>

이 지시문은 정규 표현식을 기반으로 추가 열을 생성합니다. <regex-with-groups> . 이것은 $ 0 정규식 그룹을 무시합니다.

사용을 위한 참고사항

여러 그룹이 일치하면 지시.은 여러 컬럼을 작성합니다.

열의 기본 이름에는 패턴이 일치하는 일치 횟수 및 일치 위치가 추가됩니다. <column> _ <match-count> _ <match-position> .

이 레코드를 예제로 사용 :

162

Page 169: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

{ "title": "Toy Story (1995)"}

이 지시문 적용 :

extract-regex-groups title [^(]+\(([0-9]{4})\).*

이 레코드를 얻는다 :

{ "title": "Toy Story (1995)", "title_1_1: "1995"}

title_1_1 필드는 다음 형식을 따릅니다. <column> _ <match-count> _ <match-position> .

163

Page 170: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Fail on condition

FAIL 지시문은 조건이 true 로 평가될 때 파이프 라인 처리에 실패합니다.

구문

fail <condition>

그만큼 <condition> 레코드가 오류 콜렉터로 송신되어야 하는지 여부를 지정하는 조건을 지정하는 JEXL 표현식입니다.

사용을 위한 참고사항

FAIL 지시어의 가장 일반적인 사용은 조건이 충족 될 때 파이프 라인의 추가 처리를 실패하는 것입니다.

다음 세 필드가 있는 레코드를 가정합니다.

오류 이름

164

Page 171: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

오류 개수

이러한 지시문은 이러한 규칙을 구현합니다. 이러한 조건 중 하나와 일치하는 레코드는 파이프 라인의 추가 처리를 종료합니다.

fail ErrorCount > 1

165

Page 172: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Fill Null or Empty

FILL-NULL-OR-EMPTY 지시문은 null 또는 비어있는 경우 (“”) 열 값을 고정 값으로 채 웁니다.

구문

fill-null-or-empty <column> <fixed-value>

만약 <column> 존재하지 않으면 지시문이 실패합니다.

그만큼 <fixed-value> 유형 문자열 일 수 있습니다.

사용을 위한 참고사항

FILL-NULL-OR-EMPTY 지시문은 열 값을 <fixed-value> 열의 값이 null 또는 하늘의 경우 (공 문자열, “”)

그만큼 <fixed-value> 문자열이어야 하며 빈 문자열 값일 수 없습니다.

레코드의 객체가 JSON 객체이고 null 인 경우 지시문은 해당 객체가 해당 레코드에도 적용되는지 확인합니다.

166

Page 173: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이 레코드를 예제로 사용 :

{ "id": 1, "fname": "root", "mname": null, "lname": "joltie", "address": ""}

다음 지시문 적용 :

fill-null-or-empty mname NAfill-null-or-empty address No address specified

이 레코드를 얻는다 :

{ "id": 1, "fname": "root", "mname": "NA", "lname": "joltie", "address": "No address specified"}

167

Page 174: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Filter Row If Matched

FILTER-ROW-IF-MATCHED 지시문은 열의 패턴과 일치하는 레코드를 필터링 합니다.

더 이상 사용되지 않는 사항

대신 FILTER-ROWS-ON 지시문을 사용하십시오.

구문

filter-row-if-matched <column> <regex>

그만큼 <regex> 모든 레코드의 열 값에 대해 평가되는 유효한 정규 표현식입니다.

사용을 위한 참고사항

FILTER-ROW-IF-MATCHED 지시문은 모든 레코드의 열 값에 정규 표현식을 적용합니다. 정규 표현식이 열 값과 일치하면 레코드는 생략되며, 그렇지 않으면 다음 지시문의 입력으로 있는 그대로 전달됩니다.

정규식이 null 이면 값은 JSON null 값뿐만 아니라 모든 null 과 비교됩니다.

168

Page 175: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

예제

이 레코드를 예제로 사용 :

{ "id": 1, "name": "Joltie, Root", "emailid": "[email protected]", "hrlywage": "12.34", "gender": "Male", "country": "US"}

이 지시문 적용 :

filter-row-if-matched country !~ US

(미국이 “미국”과 일치하지 않는) 미국에 없는 개인의 레코드를 걸러 낼 수 있습니다.

이 지시문 적용 :

filter-row-if-matched (country !~ US && hrlywage > 12)

미국이 아니고 (미국이 “US”와 일치하지 않는) 시간당 임금 (hrlywage)이 12 보다 큰 개인의 레코드를 걸러 낼 수 있습니다.

169

Page 176: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Filter Row If True

FILTER-ROW-IF-TRUE 지시문은 조건과 일치하는 레코드를 필터링 합니다.

더 이상 사용되지 않는 사항

대신 FILTER-ROWS-ON 지시문을 사용하십시오.

구문

filter-row-if-true <condition>

그만큼 <condition> true 또는 false 가되는 유효한 부울 식입니다.

사용을 위한 참고사항

FILTER-ROW-IF-TRUE 지시문은 각 레코드의 부울 조건을 평가합니다. 평가 결과가 true이면 레코드를 건너 뜁니다. 그렇지 않으면 그대로 다음 지시문의 입력으로 전달됩니다.

그만큼 <condition> 는 JEXL 표현식 언어로 지정되며 추가 유틸리티 라이브러리는 수학 및 문자열 네임 스페이스에 정의됩니다.

170

Page 177: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

JEXL 표현식을 작성하는 방법에 대한 정보는 commons-jexl documentation 문서를 참조하십시오.

예제

이 레코드를 예제로 사용 :

{ "id": 1, "name": "Joltie, Root", "hrlywage": "12.34", "gender": "Male", "country": "US"}

이 지시문 적용 :

filter-row-if-true country !~ US

(미국이 “미국”과 일치하지 않는) 미국에 없는 개인의 레코드를 걸러 낼 수 있습니다.

이 지시문 적용 :

filter-row-if-true (country !~ US && hrlywage > 12)

미국이 아니고 (미국이 “US”와 일치하지 않는) 시간당 임금 (hrlywage)이 12 보다 큰 개인의 레코드를 걸러 낼 수 있습니다.

171

Page 178: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Filter Rows On

FILTER-ROWS-ON 지시어는 조건에 따라 레코드를 필터링합니다.

구문

filter-rows-on <filter-type> <options>

그만큼 <filter-type> 사용 된 필터 유형과 필터 유형을 지정합니다.

지원되는 필터 유형 및 해당 옵션 :

condition-false <boolean-expression>condition-true <boolean-expression>empty-or-null-columns <column>[,<column>]*regex-match <regular-expression>regex-not-match <regular-expression>

사용을 위한 참고사항

FILTER-ROWS-ON 지시어는 필터 유형과 부울 또는 정규 표현식을 각 레코드의 열 값에 적용합니다. 표현식이 열 값에 대해 true 또는 true 를 반환하면 레코드가 생략됩니다. 그렇지 않으면 그대로 다음 지시문의 입력으로 전달됩니다.

그것은 다음과 같은 조합입니다. <filter-type> 및 옵션. 예를 들어, condition-true 가 사용되고 <boolean-expression> true 로 평가하면 행이 생략되고 전달되지 않습니다.

172

Page 179: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

예제

이 레코드를 예제로 사용 :

{ "id": 1, "name": "Joltie, Root", "emailid": "[email protected]", "hrlywage": 12.34, "gender": "Male", "country": "US"}

이 지시문 적용 :

filter-rows-on condition-true country !~ 'US'

(미국이 “미국”과 일치하지 않는) 미국에 없는 개인의 레코드를 걸러 낼 수 있습니다.

이 지시문 적용 :

filter-rows-on condition-true (country !~ 'US' && hrlywage > 12)

미국이 아니고 (미국이 “US”와 일치하지 않는) 시간당 임금 (hrlywage)이 12 보다 큰 개인의 레코드를 걸러 낼 수 있습니다.

173

Page 180: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Find and Replace

FIND-AND-REPLACE 지시문은 “sed”와 같은 표현식을 사용하여 문자열 열 값을 변환하여 텍스트를 찾고 바꿉니다.

구문

find-and-replace <column> <sed-script>

사용을 위한 참고사항

이 지시문은 주어진 열의 단일 값에서 작동하는 열 기반 텍스트 프로세서입니다. sed 스크립트는 각 텍스트 값에 적용되어 데이터를 변환합니다.

지시어 사용 방법에 대한 일반적인 예 :

find-and-replace <column> s/regex/replacement/g

이 지시문은 정규 표현식과 일치하는 열 값을 대체 값으로 바꿉니다.

s 는 “대체”을 의미합니다. g 는 “global”을 나타내며, 이는 값에서 일치하는 모든 항목이 대체됨을 의미합니다.

일치시킬 정규 표현식은 첫 번째 구분 기호 (이 예에서는 슬래시) 뒤에 배치되고 대체 값은 두 번째 구분 기호 다음에옵니다. 슬래시 (/)는 구분 기호 및 “검색”문자의 원점으로

174

Page 181: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

사용되는 일반 기호입니다.

예를 들어 hello 의 모든 항목을 message 열에서 world 로 바꾸려면 다음을 수행하십시오.

find-and-replace message s/hello/world/g

슬래시 (예 : / usr / local / bin 을 / common / bin)가 포함 된 경로 이름을 변경하려면 백 슬래시를 사용하여 슬래시를 이스케이프 처리하십시오.

find-and-replace column s/\/usr\/local\/bin/\/common\/bin//g

이 레코드를 예제로 사용 :

{ "body": "one two three four five six seven eight"}

다음 두 가지 지시문 적용 :

find-and-replace body s/one/ONE/gfind-and-replace body s/two/2/g

이 레코드를 얻는다 :

{ "body": "ONE 2 three four five six seven eight",}

175

Page 182: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Flatten

FLATTEN 지시문은 반복 필드의 요소를 개별 레코드로 분리합니다.

구문

flatten <column>[,<column>]*

그만큼 <column> JSON 배열 인 열의 이름입니다.

사용을 위한 참고사항

FLATTEN 지시문은 반복되는 데이터를 유연하게 탐색하는 데 유용합니다.

각 병합된 값과 레코드의 다른 필드 사이의 연결을 유지하기 위해 FLATTEN 지시문은 다른 모든 열을 모든 새 레코드에 복사합니다.

예제

사례 1

col2 의 배열은 평탄화되고 col3 의 값은 col2 의 각 값에 대해 반복됩니다.

176

Page 183: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

입력 레코드

[ { "col1": "A" }, { "col1": "B" }, { "col2": [x1, y1], "col3": 10 }, { "col2": [x2, y2], "col3": 11 }]

출력 레코드

[ { "col1": "A" }, { "col1": "B" }, { "col2": "x1", "col3": 10 }, { "col2": "y1", "col3": 10 }, { "col2": "x2", "col3": 11 }, { "col2": "y2", "col3": 11 }]

사례 2

col2 및 col3 의 배열은 병합됩니다.

입력 레코드

[ { "col1": "A" }, { "col1": "B" }, { "col2": [ "x1", "y1", "z1" ], "col3": [ "a1", "b1", "c1" ] }, { "col2": [ "x2", "y2" ], "col3": [ "a2", "b2" ] }]

출력 레코드

[ { "col1": "A" }, { "col1": "B" }, { "col2": "x1", "col3": "a1" }, { "col2": "y1", "col3": "b1" }, { "col2": "z1", "col3": "c1" }, { "col2": "x2", "col3": "a2" }, { "col2": "y2", "col3": "b2" }]

177

Page 184: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

사례 3

col2 및 col3 의 배열은 병합됩니다.

입력 레코드

[ { "col1": "A" }, { "col1": "B" }, { "col2": [ "x1", "y1", "z1" ], "col3": [ "a1", "b1" ] }, { "col2": [ "x2", "y2" ], "col3": [ "a2", "b2", "c2" ] }]

출력 레코드

[ { "col1": "A" }, { "col1": "B" }, { "col2": "x1", "col3": "a1" }, { "col2": "y1", "col3": "b1" }, { "col2": "z1" }, { "col2": "x2", "col3": "a2" }, { "col2": "y2", "col3": "b2" }, { "col3": "c2" }]

사례 4

이 레코드를 예제로 사용 :

{ "x": 5, "y": "a string", "z": [ 1,2,3 ]}

178

Page 185: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이 지시문은 다음과 같은 세 가지 고유 한 레코드를 생성합니다.

x y z5 “a string” 15 “a string” 25 “a string” 3

지시문은 배열 (이 예에서는 z 열)이어야 하는 단일 인수를 사용합니다. 이 경우 “all”(*) 와일드 카드를 flatten 에 대한 인수로 사용하는 것은 지원되지 않으며 오류를 반환합니다.

179

Page 186: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Format Date

FORMAT-DATE 지시어는 날짜 및 시간 형식에 대한 사용자 정의 패턴을 허용합니다.

구문

format-date <column> <format>

사용을 위한 참고사항

날짜 및 시간 형식은 날짜 및 시간 패턴 문자열로 지정됩니다. 패턴 문자열 내에서 ‘A’에서 ‘Z’까지 및 ‘a’에서 ‘z’로 인용되지 않은 문자는 날짜 또는 시간 문자열의 구성 요소를 나타내는 패턴 문자로 해석됩니다. 해석을 피하기 위해 작은 따옴표 (‘)를 사용하여 텍스트를 인용 할 수 있습니다. 두 개의 작은 따옴표 ‘’는 작은 따옴표를 나타냅니다. 다른 모든 문자는 해석되지 않습니다. 형식화 중에 출력 문자열로 복사되거나 파싱 중에 입력 문자열과 일치됩니다.

이 패턴 문자가 정의됩니다 ( ‘A’에서 ‘Z’까지의 모든 다른 문자와 ‘a’에서 ‘z’까지는 예약 됨).

Letter Date or Time Component Presentation ExmplesG Era designator Text ADy Year Year 1996; 96Y Week year Year 2009; 09M Month in year Month July; Jul; 07w Week in year Number 27W Week in month Number 2D Day in year Number 189

180

Page 187: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

d Day in month Number 10F Day of week in month Number 2E Day name in week Text Tuesday; Tueu Day number of week (1=Monday,

…, 7=Sunday) Number 1a AM/PM marker Text PMH Hour in day (0-23) Number 0k Hour in day (1-24) Number 24K Hour in am/pm (0-11) Number 0h Hour in am/pm (1-12) Number 12m Minute in hour Number 30s Second in minute Number 55S Millisecond Number 978z

Time zone General Time ZonePascific Standard Time PST; GMT-08:00

Z Time zone RFC 822 Time Zone -0800X Time zone ISO 8601 Time Zone -08; -0800;-08:00

예제

이 패턴을 사용하기 전에 PARSE-AS-DATE 지시문을 적용하여 완전한 날짜 - 시간 문자열을 올바르게 작성해야 합니다.

이 예제는 미국 로케일에서 날짜 및 시간 패턴을 해석하는 방법을 보여줍니다. 주어진 날짜와 시간이 2001-07-04 12:08:56 이고 미국 태평양 표준 시간대의 현지 시간 인 경우 다른 패턴을 적용하면 다음 문자열이 결과로 나타납니다.

Date and Time Pattern Date Stringyyyy.MM.dd G ‘at’ HH:mm:ss z 2001.07.04 AD at 12:08:56 PDTEEE, MMM d, ‘’yy Wed, Jul 4, ‘01h:mm a 12:08 PMhh ‘o’ ‘clock’ a, zzzz 12 o’clock PM, Pacific Daylight TimeK:mm a, z 0:08PM, PDTyyyy.MMMM.dd GGG hh:mm aaa 2001.July.04 AD 12:08 PMEEE, d MMM yyyy HH:mm:ss Z Wed 4 Jul 2001 12:08:56 -0700yyMMddHHmmssZ 010704120856-0700yyyy-MM-dd ‘T’ HH:mm:ss.SSSXXX 2001-07-04T12:08:56.235-07:00

181

Page 188: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

MM/dd/yyyy HH:mm 07/04/2001 12:09yyyy.MM.dd 2001-07-04

182

Page 189: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Format UNIX Timestamp

FORMAT-UNIX-TIMESTAMP 지시문은 UNIX timestamp 을 날짜로 포맷합니다.

구문

format-unix-timestamp <column> <pattern>

<column> 날짜로 포맷 할 열입니다.

<pattern> 타임 스탬프를 포맷 할 때 사용할 패턴 문자열입니다.

사용을 위한 참고사항

FORMAT-UNIX-TIMESTAMP 지시문은 패턴 문자열을 사용하여 UNIX 시간 소인을 파싱합니다. 그만큼 <column> 유닉스 스타일의 유효한 타임 스탬프를 포함해야 한다.

예제

183

Page 190: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이러한 패턴 문자열에 대한 설명 및 예는 FORMAT-DATE 를 참조하십시오.

184

Page 191: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Generate UUID

GENERATE-UUID 지시문은 레코드의 보편적 고유 식별자 (UUID)를 생성합니다.

구문

generate-uuid <column>

그만큼 <column> 레코드에 대해 생성 된 UUID 로 설정됩니다.

사용을 위한 참고사항

GENERATE-UUID 지시어는 유형 4 의 무작위로 생성된 UUID 를 생성합니다. UUID 는 암호학적으로 강한 의사 난수 생성 프로그램을 사용하여 생성됩니다.

이 레코드를 예제로 사용하여 레코드를 고유하게 식별할 임의의 식별자를 생성하려는 위치 :

{ "x": 1, "y": 2}

185

Page 192: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이 지시문 적용 :

generate-uuid uuid

이와 비슷한 레코드가 됩니다 (uuid 의 값은 다양합니다).

{ "x": 1, "y": 2, "uuid": "57126d32-8c91-4c00-9697-8abda450e836"}

186

Page 193: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Hash

HASH 지시문은 메시지 다이제스트를 생성합니다.

구문

hash <column> <algorithm> [<encode>]

그만큼 <column> 해시가 적용될 열의 이름입니다. <algorithm> 은 적용되다.

만약 <encode> 가 true 로 설정된 경우 해시된 다이제스트는 왼쪽 패딩이 0 인 16진수로 인코딩됩니다. 기본적으로, <encode> true 로 설정됩니다. 16 진수 인코딩을 사용하지 않으려면 <encode> 거짓으로.

사용을 위한 참고사항

HASH 지시어는 <column> , 열의 내용을 메시지 해시로 바꿉니다. 이 지시문을 적용하면 새로운 열이 작성되지 않습니다.

이러한 알고리즘은 HASH 지시문에서 지원됩니다.

BLAKE2B-160

BLAKE2B-256

187

Page 194: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

BLAKE2B-384

BLAKE2B-512

GOST3411

GOST3411-2012-256

GOST3411-2012-512

KECCAK-224

코코넛 -224

KECCAK-256

KECCAK-288

KECCAK-384

KECCAK-512

MD2

MD4

MD5

RIPEMD128

RIPEMD160

188

Page 195: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

RIPEMD256

RIPEMD320

SHA

SHA-1

SHA-224

SHA-256

SHA-384

SHA-512

SHA-512 / 224

SHA-512 / 256

SHA3-224

SHA3-256

SHA3-384

SHA3-512

Skein-1024-1024

Skein-1024-384

189

Page 196: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Skein-1024-512

Skein-256-128

Skein-256-160

Skein-256-224

Skein-256-256

Skein-512-128

Skein-512-160

Skein-512-224

Skein-512-256

Skein-512-384

Skein-512-512

SM3

Tiger

호랑이

WHIRLPOOL

소용돌이

190

Page 197: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이 레코드를 예제로 사용 :

{ "message": "secret message"}

이 지시문 적용 :

hash message SHA3-384

메시지 다이제스트를 생성하고 열을 그 열로 바꿉니다.

{ "message": "9cc25835d1ef78b4cd8b36a0c4ad636a6094fbb944b1d880f21c7129a645e819d3be987e8ae2f0f8d6cbebb8452419ef"}

열 메시지는 SHA3-384 알고리즘을 사용하여 생성된 다이제스트로 대체됩니다. 열의 유형은 문자열입니다.

참고 : 기본적으로 인코딩은 켜져 있습니다. 언제 <encode> 가 false 로 설정된 경우 출력 열 유형은 바이트 배열입니다.

191

Page 198: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Increment a transient variable

INCREMENT-VARIABLE 지시문은 처리중인 입력 레코드에 로컬(local) 변수의 값을 증가시킵니다.

구문

increment-variable <variable> <value> <expression>

그만큼 <variable> 에 의해 증가됩니다. <value> 때 <expression> 사실이라고 평가합니다.

사용을 위한 참고사항

이 지정은 처리중인 레코드의 스코프(scope) 내에서만 적용됩니다. 일단 시스템이 새 레코드의 처리를 시작하면 일시적인 상태가 재설정됩니다.

내부적으로이 지시문은 긴 값을 증가시킵니다.

192

Page 199: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

IndexsplitIndexsplit

INDEXSPLIT 지시문은 주어진 인덱스의 문자열을 두 개의 하위 문자열로 나눕니다.

Deprecated더 이상 사용되지 않는 사항

대신 SPLIT-TO-COLUMNS 또는 PARSE-AS-FIXED-LENGTH 지시문을 사용하십시오.

193

Page 200: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Invoke HTTP

INVOKE-HTTP 지시문은 지정된 필드로 구성된 본문으로 HTTP POST 요청을 트리거하는 실험적인 지시문입니다.

구문

invoke-http <url> <column>[,<column>*] <header>[,<header>*]

그만큼 <column> 서비스에 보낼 값을 지정합니다. <url> POST 요청에서 본문으로.

사용을 위한 참고사항

INVOKE-HTTP 지시문은 기존 REST 서비스를 사용하여 데이터에 변환을 적용하는 데 사용됩니다. 이 지시문은 지정된 열을 POST 본문으로 JSON 객체 형태로 전달합니다. JSON 객체의 키는 열 이름이며 열에 저장된 객체에서 파생된 값과 유형이 들어 있습니다.

서비스에 의한 요청 처리시, INVOKE-HTTP 지시문은 데이터가 JSON 객체로 다시 쓰여질 것으로 기대합니다. JSON 객체는 열 이름이 되는 키와 값이 키에 대해 반환되는 값인 레코드에 추가됩니다. 유형은 모두 유효한 JSON 유형입니다.

현재 JSON 응답은 간단한 유형이어야 합니다. 중첩된 JSON 은 현재 지원되지 않습니다.

194

Page 201: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

참고 : HTTP 호출과 관련하여 상당한 비용이 들며 이 지시어를 사용하여 대량의 데이터를 처리하는 환경에서는이 지시문을 사용하지 않아야 합니다.

HTTP 서비스가 둘 이상의 헤더를 전달해야 하는 경우 키 - 값 쌍으로 지정할 수 있습니다. 예 :

X-Proxy-Server=0.0.0.0,X-Auth-Type=Basic

참고 : 키와 값은 등호 (=)로 구분되며 머리글은 쉼표 (,)로 구분됩니다.

예제들

이 레코드를 예제로 사용 :

{ "latitude": 24.56, "longitude": -65.23, "IMEI": 212332321313, "location": "Mars City"}

위도와 경도가 지정된 우편 번호를 찾는 서비스는 http : // hostname / v3 / api / geo-find 와 같은 주소에서 사용할 수 있다고 가정합니다.

이 지시문 적용 :

invoke-http http://hostname/v3/api/geo-find latitude,longitude

이것은 POST 호출로 변환됩니다.

POST v3/api/geo-find

195

Page 202: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

시체와 함께 :

{ "latitude": 24.56, "longitude": -65.23}

지시문에 대한 매개 변수로 지정된 두 개의 필드만 서비스에 보내집니다.

실패한 경우 입력 레코드는 오류 콜렉터에 전달되어 나중에 다시 처리 할 수 있습니다.

196

Page 203: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

JSON Path

JSON-PATH 지시문은 JSON 레코드를 읽는데 DSL 을 사용합니다.

구문

json-path <source-column> <destination-column> <expression>

<source-column> “루트 멤버 개체”또는 “$”로 간주되어야 하는 레코드의 열을 지정합니다.

<destination-column> 표현식의 결과가 저장 될 레코드의 출력 열 이름입니다.

<expression> JSON 경로 표현식입니다. 자세한 내용은 아래의 사용법 참고 사항을 참조하십시오.

사용을 위한 참고사항

표현식은 항상 XPath 표현식이 XML 문서와 함께 사용되는 것과 같은 방식으로 JSON 구조체를 참조합니다. “루트 멤버 개체”는 개체 또는 배열 인 경우 항상 $로 참조됩니다.

Notation표기법

197

Page 204: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

표현식은 “점 표기법”을 사용할 수 있습니다.

$.name.first

또는 “대괄호 표기법”:

$['name']['first']

연산자

Operator Description$ The root element to query; this starts all path expressions@ The current node being processed by a filter predicate* Wildcard; available anywhere a name or numeric are required.. Deep scan; available anywhere a name is required.<name> Dot-notated child['<name>' (, '<name>')] Bracket-notated child or children[<number> (, <number>)] Array index or indexes[start:end] Array slice operator[?(<expression>)] Filter expression; must evaluate to a boolean value

기능

함수는 경로의 끝에서 호출 될 수 있습니다. 함수에 대한 입력은 경로 표현식의 출력입니다. 함수 출력은 함수 자체에 의해 지시됩니다.

198

Function Returns OutputMin() The min value of an array of numbers Doublemax() The max value of an array of numbers Doubleavg() The average value of an array of numbers Doublestddev() The standard deviation value of an array of numbers Doublelength() The length of an array Integer

Page 205: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

필터 연산자

필터는 배열을 필터링 하는 데 사용되는 논리 표현식입니다. 일반적인 필터는 다음과 같습니다.

[?(@.age>18)]

여기서 @는 처리중인 현재 항목을 나타냅니다.

보다 복잡한 필터는 논리 연산자 &&와 ||를 사용하여 만들 수 있습니다.

문자열 리터럴은 [? (@. color == ‘blue’)] 또는 [? (@. color == “blue”)]와 같이 작은 따옴표 나 큰 따옴표로 묶어야 합니다.

FliterOperator Description== Left is equal in type and value to right (note 1 is not equal to '1')!= Left is not equal to right< Left is less than right<= Left is less than or equal to right> Left is greater than right>= Left is greater than or equal to right=~ Left matches regular expression [?(@.name=~/foo.*?/i)]in Left exists in right [?(@.size in ['S', 'M'])]nin Left does not exist in rightsize Size of left (array or string) matches rightempty Left (array or string) is empty

예제

199

Page 206: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이 레코드를 예제로 사용 :

{ "store": { "book": [ { "category": "reference", "author": "Nigel Rees", "title": "Sayings of the Century", "price": 8.95 }, { "category": "fiction", "author": "Evelyn Waugh", "title": "Sword of Honour", "price": 12.99 }, { "category": "fiction", "author": "Herman Melville", "title": "Moby Dick", "isbn": "0-553-21311-3", "price": 8.99 }, { "category": "fiction", "author": "J. R. R. Tolkien", "title": "The Lord of the Rings", "isbn": "0-395-19395-8", "price": 22.99 } ], "bicycle": { "color": "red", "price": 19.95 } }, "expensive": 10}

JSON Path(click link to test) Result$.store.book[*].author The authors of all books$..author All authors$.store.* All things, both books and bicycles$.store..price The price of everything

200

Page 207: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

$..book[2] The third book$..book[0,1] The first two books

$..book[:2]All books from index 0 (inclusive) until index 2 (exclusive)

$..book[1:2]All books from index 1(inclusive) until index 2 (exclusive)

$..book[-2:] Last two books$..book[2:] Book number two from tail$..book[?(@.isbn)] All books with an ISBN number$..book[?(@.isbn)] All books with an ISBN number$.store.book[?(@.price<10)] All books in store cheaper than 10:math:..book[?(@.price<=`['expensive'])] <http://jsonpath.herokuapp.com/?path=$..book%5B ?(@.price%3C=$%5B'expensive'%5D)%5D>`__

All books in store that are not "expensive"

$..book[?(@.author=~/.*REES/i)]All books matching a regex (ignore

case)$..* All books$..book.length() The number of books

201

Page 208: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Keep

KEEP 지정 문은 레코드에서 지정된 열을 유지하는 데 사용됩니다. 이것은 DROP 지시문의 반대 동작입니다.

구문

keep <column>[,<column>]

column 은 보관할 레코드의 열 이름입니다.

사용을 위한 참고사항

KEEP 지정문이 적용된 후에는 지정문에 지정된 열이 보존되고 다른 모든 열은 레코드에서 제거됩니다.

이 레코드를 예제로 사용 :

{ "id": 1,

202

Page 209: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

"timestamp": 1234434343, "measurement": 10.45, "isvalid": true}

이 지시문 적용 :

keep id,measurement

이 레코드를 얻는다 :

{ "id": 1, "measurement": 10.45}

203

Page 210: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Mask Number

MASK-NUMBER 지시문은 열 값에 대체 마스크를 적용합니다.

구문

mask-number <columm> <pattern>

그만큼 <column> 마스크 할 기존 열의 이름을 지정합니다.

그만큼 <pattern> 열 값을 마스크하는 데 사용할 대체 패턴입니다.

사용을 위한 참고사항

대체 마스킹은 일반적으로 신용 카드 또는 사회 보장 번호 마스킹에 사용됩니다. MASK-NUMBER 는 열 값에 대체 마스크를 적용합니다. 이 마스킹 유형은 패턴이 고정 길이 문자열에 적용되는 고정 마스킹입니다.

이러한 규칙은 패턴에 사용됩니다.

#을 사용하면 해당 위치의 숫자가 포함됩니다.

x 또는 다른 문자를 사용하여 해당 위치의 숫자를 마스크 하십시오.

204

Page 211: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

예제

이 레코드를 예제로 사용 :

{ "first": "Root", "last": "Joltie", "ssn": "000-00-0000", "cc": "4929790943424701"}

이 지시문 적용 :

mask-number ssn XXX-XX-####

이 레코드를 얻는다 :

{ "first": "Root", "last": "Joltie", "ssn": "XXX-XX-0000", "cc": "4929790943424701"}

이 지시문 적용 :

mask-number cc XXXXXXXXXXXX####

이 레코드를 얻는다 :

{ "first": "Root", "last": "Joltie", "ssn": "000-00-0000", "cc": "XXXXXXXXXXXX4701"}

205

Page 212: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Mask ShuffleMASK-SHUFFLE 지시어는 열 값에 셔플 마스킹을 적용합니다.

구문

mask-shuffle <columm>

그만큼 <column> 마스크 할 기존 열의 이름을 지정합니다.

사용을 위한 참고사항

MASK-SHUFFLE 지시문은 임의의 문자 대체 방법을 사용하여 난독 처리를 수행하기 위해 열 값에 셔플 마스킹을 적용합니다. 이 마스킹 유형은 고정 길이 마스킹입니다. 여기서 데이터는 고정 길이 문자열의 열에서 임의로 셔플됩니다.

모음, 자음 및 숫자는 각각 따로 따로 섞어서 대소 문자를 유지합니다.

예제

이 레코드를 예제로 사용 :

{ "first": "Root",

206

Page 213: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

"last": "Joltie", "ssn": "000-00-0000", "cc": "4929790943424701"}

다음 지시문 적용 :

mask-shuffle firstmask-shuffle lastmask-shuffle ssnmask-shuffle cc

이 레코드를 얻는다 :

{ "first": "Buek", "last": "Bumkyy", "ssn": "089-75-3119", "cc": "0897531194773254"}

207

Page 214: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Merge

MERGE 지시문은 세 번째 열을 레코드에 삽입하여 두 열을 병합합니다. 세 번째 열의 값은 지정된 구분 기호로 구분 된 두 열의 병합 된 값입니다.

구문

merge <first> <second> <new column> '<seperator>'

그만큼 <first> 과 <second> 열 값은 구분 기호를 사용하여 병합됩니다. 병합 할 열은 모두 있어야 하며 병합이 성공하려면 문자열 유형이어야 합니다.

그만큼 <new-column> 레코드에 추가 될 새로운 열입니다. 열이 이미 있으면 내용이 대체됩니다.

그만큼 <separator> 새 열의 값을 구분하는 데 사용할 문자 또는 문자열입니다. 작은 따옴표 사이에 지정됩니다. 예 : 공백 문자 : ‘ ’;.

이 지시어는 기존 열을 삭제하지 않습니다.

사용을 위한 참고사항

병합 할 열은 모두 유형 문자열이어야 합니다.

208

Page 215: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

예제

이 레코드를 예제로 사용 :

{ "first": "Root", "last": "Joltie"}

다음 지시문 적용 :

merge first last fullname ' 'merge first last fullname '''merge first last fullname '\u000A'merge first last fullname '---'

다음 레코드를 얻습니다.

구분 기호는 단일 공백 문자 (‘ ’)입니다.

{ "first": "Root", "last": "Joltie", "fullname": "Root Joltie"}

구분 기호는 작은 따옴표 문자 (‘’’)입니다.

{ "fname" : "Joltie", "lname" : "Root", "name" : "Joltie'Root"}

209

Page 216: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

구분 기호는 UTF-8 줄 바꿈 문자 ( ‘\ u000A’)입니다.

{ "fname" : "Joltie", "lname" : "Root", "name" : "Joltie\nRoot"}

구분 기호는 여러 문자 ( ‘---’)입니다.

{ "fname" : "Joltie", "lname" : "Root", "name" : "Joltie---Root"}

210

Page 217: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Parse AVRO File

PARSE-AS-AVRO-FILE 지시문은 AVRO 데이터 파일을 파싱합니다. AVRO 데이터 파일은 하나의 파일에 데이터 정의 (스키마)와 데이터를 함께 저장하므로 프로그램에서 AVRO 파일에 저장된 정보를 동적으로 이해하기 쉽습니다. AVRO 스키마는 JSON 형식이며, 데이터는 이진 형식으로 되어 있어 작고 효율적입니다.

구문

parse-as-avro-file <column>

그만큼 <column> binary octet stream 에 AVRO 데이터 파일의 전체 내용을 포함합니다.

사용을 위한 참고사항

이 지시어를 사용하여 AVRO 데이터 파일을 파싱하면 다음 규칙을 사용하여 구조가 병합됩니다.

INT, FLOAT, DOUBLE, STRING, SHORT 처럼 데이터 유형이 단순하면 열 이름은 AVRO 스키마의 열 이름이됩니다.

데이터 유형이 레코드 인 경우, 필드 이름은 접두어로 사용되어 레코드 내의 필드 이름을 지정합니다.

211

Page 218: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

212

Page 219: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Parse AVRO Encoded Messages

PARSE-AS-AVRO 지시문은 바이너리 또는 json AVRO 레코드 또는 파일로 인코딩된 메시지를 파싱합니다. 이 지시문은 Schema Registry 로 해독할 스키마의 등록을 요구합니다.

구문

parse-as-avro <column> <schema-id> <json|binary> [<version>]

그만큼 <column> id 로 등록된 Schema Registry 에 정의 된 스키마를 사용하여 whoes 값이 디코딩 될 열의 이름입니다. <schema-id> . 선택적으로 특정 <version> 등록된 스키마의 이름을 지정할 수 있습니다.

사용을 위한 참고사항

PARSE-AS-XML 지시문은 인디케이터 구조를 사용하여 XML 문서를 효율적으로 파싱하고 표현하며 다른 지시문을 사용하여 쿼리 할 수 있습니다.

213

Page 220: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Parse as CSV

PARSE-AS-CSV 는 입력 레코드를 쉼표로 구분된 값으로 파싱하기 위한 지시문입니다.

구문

parse-as-csv <column> <delimiter> [<header=true|false>]

그만큼 <column> 지정된 형식을 사용하여 CSV 로 파싱되어야 하는 레코드의 열을 지정합니다. <delimiter> . 입력 첫 번째 레코드의 값을 열 머리글로 설정해야 하는 경우 <header> 사실로; 기본적으로 false 로 설정됩니다.

예제

소비자 불만 CSV 파일의 한 줄을 생각해보십시오. CSV 파일의 각 행이 레코드로 추가됩니다.

{ "body": "07/29/2013,Consumer Loan,Vehicle Loan,Managing the loan or lease,,,,Wells Fargo & Company,VA,24540,,N/A,Phone,07/30/2013,Closed with explanation,Yes,No,468882"}

이 지시문 적용 :

parse-as-csv body ,214

Page 221: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이 레코드를 얻는다 :

{ "body": "07/29/2013,Consumer Loan,Vehicle Loan,Managing the loan or lease,,,Wells Fargo & Company,VA,24540,,N/A,Phone,07/30/2013,Closed with explanation,Yes,No,468882", "body_1": "07/29/2013", "body_2": "Consumer Loan", "body_3": "Vehicle Loan", "body_4": "Managing the loan or lease", "body_5": null, "body_6": null, "body_7": "Wells Fargo & Company", "body_8": "VA", "body_9": "24540", "body_10": null, "body_11": "N/A", "body_12": "Phone", "body_13": "07/30/2013", "body_14": "Closed with explanation", "body_15": "Yes", "body_16": "No", "body_17": "468882"}

첫 번째 레코드로 헤더를 사용하여 이 레코드를 사용하는 예를 들면 다음과 같습니다.

[ { "body": "Date,Type,Item,Action,Company" }, { "body": "07/29/2013,Consumer Loan,Vehicle Loan,Managing the loan or lease,Wells Fargo & Company" }]

이 지시문 적용 :

parse-as-csv body , true

215

Page 222: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이 레코드를 얻는다 :

{ "body": "07/29/2013,Consumer Loan,Vehicle Loan,Managing the loan or lease,Wells Fargo & Company" "Date": "07/29/2013", "Type": "Consumer Loan", "Item": "Vehicle Loan", "Action": "Managing the loan or lease", "Company": "Wells Fargo & Company"}

216

Page 223: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Parse as Date

PARSE-AS-DATE 지시문은 자연 언어 처리를 사용하여 날짜를 파싱하기 위한 것입니다.

구문

parse-as-date <column> [<time-zone>]

사용을 위한 참고사항

PARSE-AS-DATE 지시문은 표준 구문 인식 및 파싱 정보를 사용하여 해당 날짜 목록을 생성하는 표준 언어 인식 및 번역 기술을 적용합니다.

정식 날짜 (02/28/1979), 여유로운 날짜 (oct 1st), 상대 날짜 (다음 목요일 전날) 및 날짜 대체 (다음 수요일 또는 목요일) 등 여러 가지 방법으로 설명 된 날짜를 인식합니다.

이 지시문은 큰 텍스트 블록 내의 날짜 구성 요소를 검색하고 구조를 감지하고 날짜를 만듭니다.

구문을 사용하여 새 열을 만듭니다. <column> _1 은 파싱 결과를 포함합니다.

만약 <time-zone> 가 제공되지 않으면 UTC 가 시간대로 사용됩니다.

217

Page 224: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

예제

이 레코드를 예제로 사용 :

{ "create_date": "now",}

이 지시문 적용 :

parse-as-date create_date US/Eastern

이 레코드가 생성됩니다 (실제 실행 결과는 이 실행시기에 따라 다릅니다).

{ "create_date": "now", "create_date_1": "Mon May 01 14:13:35 EDT 2017"}

218

Page 225: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Parse as Excel

PARSE-AS-EXCEL 은 XLS, XLSX 파일을 파싱하는 명령입니다.

구문

parse-as-excel <column> <sheet number> | <sheet name>

그만큼 <column> Excel 에 포함 된 레코드의 열을 지정합니다. 그만큼 <sheet number> 또는 <sheet name> 파싱해야할 Excel 파일 내의 시트를 지정합니다.

219

Page 226: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Parse as Fixed Length

PARSE-AS-FIXED-LENGTH 지시문은 지정된 각 필드의 너비가 있는 고정 길이 레코드로 열을 파싱합니다.

구문

parse-as-fixed-length <column> <width>[,<width>]* [<padding>]

사용을 위한 참고사항

고정 너비 텍스트 파일은 열 너비, 패드 문자 및 왼쪽 또는 오른쪽 정렬로 형식이 지정된 텍스트 파일의 특수한 경우입니다. 열 너비는 문자 단위로 측정됩니다.

예를 들어 텍스트 파일에 첫 번째 열에 항상 정확히 10 자의 데이터가 있는 경우 두 번째 열은 정확히 5 이고 세 번째 열은 정확히 12 자입니다. 이것은 고정 너비 텍스트 파일로 분류됩니다.

정의되지 않은 경우 <padding> 문자는 공백 문자로 간주됩니다.

220

Page 227: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이 레코드를 예제로 사용 :

{ "body": "12 10 ABCXYZ"}

이 지시문 적용 :

parse-as-fixed-length body 2,4,5,3

이 레코드를 얻는다 :

{ "body": "12 10 ABCXYZ", "body_1": "12", "body_2": " 10", "body_3": " ABC", "body_4": "XYZ}

221

Page 228: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Parse as HL7

PARSE-AS-HL7 지시문은 상태 수준 7 버전 2 (HL7 V2) 메시지를 파싱하기 위한 것입니다. HL7 은 시스템간에 데이터를 교환하기 위해 의료 업계에서 사용되는 메시징 표준입니다.

구문

parse-as-hl7 <column>

그만큼 <column> HL7 V2 메시지, v2.1 에서 v2.6 을 포함합니다.

사용을 위한 참고사항

다음은 레코드에 있는 HL7 V2 메시지의 예입니다.

MSH|^~\&||.|||199908180016||ADT^A04|ADT.1.1698593|P|2.6PID|1||000395122||LEVERKUHN^ADRIAN^C||19880517180606|M|||6 66TH AVE NE^^WEIMAR^DL^98052||(157)983-3296|||S||12354768|87654321NK1|1|TALLIS^THOMAS^C|GRANDFATHER|12914 SPEM ST^^ALIUM^IN^98052|(157)883-6176NK1|2|WEBERN^ANTON|SON|12 STRASSE MUSIK^^VIENNA^AUS^11212|(123)456-7890IN1|1|PRE2||LIFE PRUDENT BUYER|PO BOX 23523^WELLINGTON^ON^98111|||19601||||||||THOMAS^JAMES^M|F|||||||||||||||||||ZKA535529776

HL7 V2 메시지의 데이터는 다음과 같이 계층적으로 구성됩니다.

222

Page 229: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

메시지 = {세그먼트, 세그먼트, ... 세그먼트}

세그먼트 = {필드, 필드, ... 필드}

필드 = {구성 요소, 구성 요소, ... 구성 요소}

Component = {하위 구성 요소, 하위 구성 요소, ... 하위 구성 요소}

HL7 V2 메시지의 각 행은 세그먼트입니다. 세그먼트는 필드의 논리적 그룹입니다. 세그먼트의 처음 세 문자는 세그먼트 유형을 나타냅니다. 위의 메시지에는 다섯 개의 세그먼트가 있습니다. MSH (메시지 헤더); PID (환자 식별); 두 개의 NK1 (친족) 세그먼트; 및 IN1 (보험).

각 세그먼트는 필드로 구성됩니다. 필드에는 세그먼트의 목적과 관련된 정보 (예 : IN1 (보험) 세그먼트의 보험 회사 이름)가 들어 있습니다. 필드는 일반적으로 (항상은 아니지만) |로 구분됩니다. 캐릭터.

필드는 구성 요소로 나눌 수 있습니다. 구성 요소는 일반적으로 ^ 문자로 표시됩니다. 위의 예에서 PID (환자 식별) 세그먼트에는 성 (LEVERKUHN)과 성이 세 부분으로 구성된 LEVERKUHN ^ ADRIAN ^ C 가 포함 된 환자 이름 필드가 있습니다. 이름 (ADRIAN); 및 중간 머리 글자 (C). 구성 요소는 하위 구성 요소로 나눌 수 있습니다. 하위 구성 요소는 일반적으로 & 문자로 표시됩니다.

지시문을 사용하여 위의 메시지를 파싱하면 HL7 V2 구성 요소가 병합된 레코드와 모든 필드가 JSON 으로 변환된 레코드가 생성됩니다. 추가 파싱은 PARSE-AS-JSON 지시문을 사용하여 수행할 수 있습니다.

223

Page 230: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

위의 메시지에 이 지시문을 적용합니다.

parse-as-hl7 body

이 형식의 레코드가 됩니다.

{ "body": "<original-hl7-message>", "body_hl7_MSH_<field-index>": "<primitive-value>", ... "body_hl7_MSH_<field-index>_<component-index>": "<primitive-value>", ... "body_hl7_PID_<field-index>": "<primitive-value>", ... "body_hl7_PID_<field-index>_<component-index>": "<primitive-value>", ... "body_hl7_NK1_<field-index>>": "<primitive-value>", ... "body_hl7_NK1_<field-index>_<component-index>": "<primitive-value>", ... "body_hl7_IN1_<field-index>>": "<primitive-value>", ... "body_hl7_IN1_<field-index>_<component-index>": "<primitive-value>", ...}

각 세그먼트가 JSON 으로 변환되면 레코드에 PARSE-AS-JSON 또는 JSON-PATH지시문을 적용할 수 있습니다.

224

Page 231: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Parse as JSON

PARSE-AS-JSON 지시문은 JSON 객체를 파싱하기 위한 지시문입니다. 이 지시문은 String 또는 JSONObject 유형에서 작동할 수 있습니다. 지시문을 적용하면 JSON 의 상위 수준 키가 원래 열 이름에 추가되어 새 열 이름이 만들어집니다.

구문

parse-as-json <column-name> [<depth>]

<column-name> JSON 객체 인 레코드의 열 이름입니다.

<depth> JSON 객체 열거가 종료되는 깊이를 나타냅니다.

사용을 위한 참고사항

PARSE-AS-JSON 지시문은 복잡한 JSON 을 더 쉽게 이해하고 관리 할 수 있는 덩어리로 분해합니다. JSON 객체에 처음 적용될 때 키와 값으로 분리됩니다. 이 값은 그 자체로 PARSE-AS-JSON 지시문을 다시 적용하여 더 멀리 전개할 수 있는 JSON 객체 일 수 있습니다.

이벤트 객체의 키 이름은 JSON 파싱에 적용되는 열에 추가됩니다. 열 이름은 점 표기법을 사용합니다.

225

Page 232: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

예제

필드 본문에서 이 레코드를 예제로 사용하면 다음과 같습니다.

{ "id": 1, "name": { "first": "Root", "last": "Joltie" }, "age": 22, "weigth": 184, "height": 5.8}

이 지시문 적용 :

parse-as-json body

이 레코드를 얻는다 :

Field Name Field Values Field Typebody {...} Stringbody_id 1 Integerbody_name {"first": "Root", "last": "Joltie" } JSONObjectbody_age 22 Integer

body_weight

184 Integer

body_height 5.8 Double

동일한 지시문을 적용하지만 body_name 필드에서만 이 레코드가 됩니다.

226

Page 233: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

227

Field Name Field Values Field Typebody {...} Stringbody_id 1 Integerbody_name {"first": "Root", "last": "Joltie" } JSONObjectbody_name_first Root Stringbody_name_last Joltie Stringbody_age 22 Integerbody_weight 184 Integerbody_height 5.8 Double

Page 234: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Parser as Log

PARSE-AS-LOG 지시문은 Apache HTTPD 및 nginx 서버와 같은 액세스 로그 파일을 파싱합니다.

구문

parse-as-log <column> <format>

사용을 위한 참고사항

PARSE-AS-LOG 지시문은 다음을 지정하여 생성하는 일반 로그 파서를 제공합니다. <format> 로그 라인 또는 파일이 작성된 형식의. 로그 행의 구성 옵션을 지정하는 형식은 서비스가 작성한 액세스 로그 행의 스키마가 됩니다.

Apache HTTPD 매뉴얼에서 Custom Log Formats 에 지정된 구성 옵션 외에 다음 옵션이 인식됩니다.

공유지

결합된

결합

228

Page 235: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

리퍼러

에이전트

예 : 결합 된 로그 형식 또는 공통 로그 형식을 파싱하려면 다음을 사용할 수 있습니다.

parse-as-log body combinedparse-as-log body common

지원되지 않는 형식의 로그가 있는 경우 사용자 정의 형식을 지정할 수 있습니다. 이 경우 format 은 로그 라인 형식을 지정하는 토큰 문자열입니다.

nginx 의 경우 형식 토큰은 log_format 및 embedded variables 로 지정됩니다.

예제

공통 로그의 형식은 다음과 같습니다.

%h %l %u %t "%r" %>s %b

그리고 해당 로그 라인을 다음과 같은 형식으로 파싱해야 하는 레코드로 지정하십시오.

{ "body": "127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] \"GET /apache_pb.gif HTTP/1.0\" 200 2326"}

다음 지시문 중 하나를 적용하십시오.

parse-as-log body %h %l %u %t "%r" %>s %bparse-as-log body common

229

Page 236: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이 레코드를 얻는다 :

{ "ip_connection_client_host": "127.0.0.1", "ip_connection_client_host.last": "127.0.0.1" "number_connection_client_logname": null, "number_connection_client_logname.last": null, ... ... "http_path_request_firstline_uri_path": "/apache_pb.gif", "http_ref_request_firstline_uri_ref": null}

결합 된 로그 형식 사용 :

%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\

및 해당 로그 라인 :

127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"

이것과 같은 복잡한 형식도 파싱할 수 있습니다.

%t %u [%D %h %{True-Client-IP}i %{UNIQUE_ID}e %r] %{Cookie}i %s \"%{User-Agent}i\" \"%{host}i\" %l %b %{Referer}i

이러한 형식의 로그 행 예제 (참고 : 한 줄에서 다시 형식화) :

[03/Dec/2013:10:53:59 +0000] - [32002 10.102.4.254 195.229.241.182 Up24RwpmBAwAAA1LWJsAAAAR GET/content/dam/Central_Library/Street_Shots/Youth/2012/09sep/LFW/Gallery_03/LFW_SS13_SEPT_12_777.jpg.image.W0N539E3452S3991w313.original.jpg HTTP/1.1] __utmc=94539802; dtCookie=EFD9D09B6A2E1789F1329FC1381A356A|_default|1; dtPC=471217988_141#_load_;

230

Page 237: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Carte::KerberosLexicon_getdomain=6701c1320dd96688b2e40b92ce748eee7ae99722; UserData=Username%3ALSHARMA%3AHomepage%3A1%3AReReg%3A0%3ATrialist%3A0%3ALanguage%3Aen%3ACcode%3Aae%3AForceReReg%3A0; UserID=1375493%3A12345%3A1234567890%3A123%3Accode%3Aae; USER_DATA=1375493%3ALSharma%3ALokesh%3ASharma%3Alokesh.sharma%40landmarkgroup.com%3A0%3A1%3Aen%3Aae%3A%3Adomain%3A1386060868.51392%3A6701c1320dd96688b2e40b92ce748eee7ae99722; MODE=FONTIS; __utma=94539802.911097326.1339390457.1386060848.1386065609.190; __utmz=94539802.1384758205.177.38.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); __kti=1339390460526,http%3A%2F%2Fwww.domain.com%2F,;__ktv=28e8-6c4-be3-ce54137d9e48271; WT_FPC=id=2.50.27.157-3067016480.30226245:lv=1386047044279:ss=1386046439530; _opt_vi_3FNG8DZU=42880957-D2F1-4DC5-AF16-FEF88891D24E; __hstc=145721067.750d315a49c64268192826b3911a4e5a.1351772962050.1381151113005.1381297633204.66; hsfirstvisit=http%3A%2F%2Fwww.domain.com%2F|http%3A%2F%2Fwww.google.co.in%2Furl%3Fsa%3Dt%26rct%3Dj%26q%3Ddomain.com%26source%3Dweb%26cd%3D1%26ved%3D0CB0QFjAA%26url%3Dhttp%3A%2F%2Fwww.domain.com%2F%26ei%3DDmuSULW3AcTLhAfJ24CoDA%26usg%3DAFQjCNGvPmmyn8Bk67OUv-HwjVU4Ff3q1w|1351772962000; hubspotutk=750d315a49c64268192826b3911a4e5a; __ptca=145721067.jQ7lN5U3C4eN.1351758562.1381136713.1381283233.66; __ptv_62vY4e=jQ7lN5U3C4eN; __pti_62vY4e=jQ7lN5U3C4eN; __ptcz=145721067.1351758562.1.0.ptmcsr=google|ptmcmd=organic|ptmccn=(organic)|ptmctr=domain.com; RM=Lsharma%3Ac163b6097f90d2869e537f95900e1c464daa8fb9; wcid=Up2cRApmBAwAAFOiVhcAAAAH%3Af32e5e5f5b593175bfc71af082ab26e4055efeb6; __utmb=94539802.71.9.1386067462709; edge_auth=ip%3D195.229.241.182~expires%3D1386069280~access%3D%2Fapps%2F%2A%21%2Fbin%2F%2A%21%2Fcontent%2F%2A%21%2Fetc%2F%2A%21%2Fhome%2F%2A%21%2Flibs%2F%2A%21%2Freport%2F%2A%21%2Fsection%2F%2A%21%2Fdomain%2F%2A~md5%3D5b47f34172392487dcd44c1d837e2e54; has_js=1; SECTION=%2Fcontent%2Fsection%2Finspiration-design%2Fstreet-shots.html;JSESSIONID=b9377099-7708-45ae-b6e7-c575ffe82187; WT_FPC=id=2.50.27.157-3067016480.30226245:lv=1386053618209:ss=1386053618209; USER_GROUP=LSharma%3Afalse; NSC_wtfswfs_xfcgbsn40-41=ffffffff096e1a1d45525d5f4f58455e445a4a423660 200 "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)""www.domain.com" - 24516 http://www.domain.com/content/report/Street_Shots/Youth/Global_round_up/2013/01_Jan/mens_youth_stylingglobalround-up1.html

231

Page 238: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

232

Page 239: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Parse as Simple Date

PARSE-AS-SIMPLE-DATE 지시문은 날짜 문자열을 파싱합니다.

구문

parse-as-simple-date <column> <pattern>

사용을 위한 참고사항

PARSE-AS-SIMPLE-DATE 지시어는 패턴 문자열을 사용하여 날짜 문자열을 파싱합니다. 열이 null 이거나 이미 날짜로 파싱된 경우 이 지시문을 적용하는 것은 아무 작업이 아닙니다. 날짜로 분석할 열은 string 유형이어야 합니다.

예제

이러한 패턴 문자열에 대한 설명 및 예는 FORMAT-DATE 를 참조하십시오.

233

Page 240: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Parse as XML

PARSE-AS-XML 지시문은 XML 문서를 파싱합니다. 이 지시문은 XML VTD 객체로 파싱하기 위해 열에서 작동합니다. XPATH 지시문을 사용하여 추가로 쿼리할 수 있습니다.

구문

parse-as-xml <column>

그만큼 <column> XML. 서인 레코드의 컬럼 이름입니다.

사용을 위한 참고사항

PARSE-AS-XML 지시문은 인디케이터 구조를 사용하여 XML 문서를 효율적으로 파싱하고 표현하며 다른 지시문을 사용하여 쿼리 할 수 있습니다.

234

Page 241: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Parse XML to JSON

PARSE-XML-TO-JSON 지시문은 XML 문서를 JSON 구조로 파싱합니다. 지정문은 string 유형의 입력 열에서 작동합니다. 이 지시문을 적용하면 XML 이 JSON 문서로 변환되므로 PARSE-AS-JSON 지시문을 사용하여 파싱을 단순화할 수 있습니다.

구문

parse-xml-to-json <column-name> [<depth>]

<column-name> 은 레코드에서 XML 문서인 열의 이름입니다.

<depth> XML 문서 파싱이 처리를 종료해야 하는 깊이를 나타냅니다.

사용을 위한 참고사항

PARSE-XML-TO-JSON 지시어는 XML 문서를 효율적으로 파싱하고 추가 변환을 위해 JSON 객체로 제공합니다.

XML. 서에는 요소, 속성 W 내용 텍스트가 있습니다. 유사한 요소의 순서가 JSON 배열로 바뀌고 PARSE-AS-JSON 지시문을 사용하여 추가로 파싱할 수 있습니다.

파싱하는 동안 주석, 프롤로그, DTD 및 <[[]]> 표기법은 무시됩니다.

235

Page 242: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Quantize

QUANTIZE 지시문은 지정된 범위를 기반으로 열을 양자화합니다.

구문

copy <source> <destination> <range_lower1:range_upper1=value>[,<range_lower2:range_upper2=value>*]

그만큼 <source> column 은 양자화할 열입니다.

그만큼 <destination> column 은 양자화 결과가 기록되는 열입니다

QUANTIZE 지시문은 <source> column.

사용을 위한 참고사항

QUANTIZE 지시문은 <source> 열을 <destination> column.

옵션에 지정된 범위 목록을 사용하면 <value> 로 <destination> 소스 값이 범위 중 하나와 일치하는 경우 열입니다.

원본 값과 일치하는 마지막 범위가 사용됩니다.

236

Page 243: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

범위 제한이 누락된 경우 해당 범위는 오류 또는 예외없이 실패합니다.

만약 <destination> 열이 이미 있으면 해당 지시문은 해당 열의 기존 데이터보다 우선합니다.

의 값은 <source> 열은 숫자여야 합니다.

그만큼 <value> 범위의 숫자는 숫자 또는 문자열일 수 있습니다.

이러한 레코드를 예제로 사용 :

[ { "body": 1 }, { "body": 2 }, { "body": 3 }, { "body": 4 }, { "body": 5 },]

이 지시문 적용 :

quantize body body_q 1:2=20,3:4=40,5:10=max

237

Page 244: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

다음 레코드를 얻습니다.

[ { "body": 1, "body_q": 20 }, { "body": 2, "body_q": 20 }, { "body": 3, "body_q": 40 }, { "body": 4, "body_q": 40 }, { "body": 5, "body_q": "max" },]

238

Page 245: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Rename

RENAME 지시문은 레코드의 기존 열의 이름을 바꿉니다.

구문

rename <old> <new>

<old> 이름을 바꿀 기존 열의 이름입니다.

<new> 열의 새 이름입니다.

사용을 위한 참고사항

RENAME 지시문은 지정된 열 이름을 새 이름으로 바꿔 이름을 바꿉니다. 이 지정 문이 레코드에 적용된 후에는 원래 열 이름을 더 이상 레코드에서 사용할 수 없습니다.

RENAME 지시문은 존재하는 열의 이름 만 바꿉니다. 레코드에 열 이름이 없으면 작업은 오류없이 무시됩니다.

239

Page 246: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이 레코드를 예제로 사용 :

{ "x": 6.3, "y": 187, "codes": { "a": "code1", "b": 2 }}

다음 지시문 적용 :

rename x heightrename y weight

이 레코드를 얻는다 :

{ "height": 6.3, "weight": 187, "codes": { "a": "code1", "b": 2 }}

240

Page 247: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Send to Error

SEND-TO-ERROR 지시문은 레코드 필터링을 허용하고 주어진 조건과 일치하는 필터링된 레코드를 오류 수집기(error collector)로 보냅니다. 오류 수집기가 파이프 라인의 다음 단계로 연결되어 있지 않으면 필터링 된 레코드가 삭제됩니다.

구문

send-to-error <condition>

그만큼 <condition> 레코드가 오류 콜렉터로 송신되어야 하는지 여부를 지정하는 조건을 지정하는 JEXL 표현식입니다.

사용을 위한 참고사항

SEND-TO-ERROR 지시문의 가장 일반적인 사용은 클린 데이터의 일부가 아닌 레코드를 필터링하는 것입니다. 이 규칙은 지정된 규칙을 준수하지 않는 레코드를 제거하는 데이터 정리 지침입니다.

레코드의 조건이 참으로 평가되면 레코드가 오류 콜렉터 (연결된 경우)로 송신됩니다. 조건이 false 로 평가되면 레코드가 변경되지 않고 전달됩니다.

241

Page 248: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

다음 세 필드가 있는 레코드를 가정합니다.

이름

나이

외설 (DOB)

데이터 정리 프로세스의 일부로 수집된 모든 레코드가 다음 규칙을 준수하는지 확인하십시오.

이름이 비어 있지 않습니다.

나이가 비어 있지 않고 1 이상 130 이하

DOB 가 유효한 날짜입니다.

이러한 지시문은 이러한 규칙을 구현합니다. 이러한 조건 중 하나와 일치하는 레코드는 추가 조사를 위해 오류 수집기로 전송됩니다.

send-to-error Name == nullsend-to-error Age.isEmpty()send-to-error Age < 1 || Age > 130send-to-error !date:isDate(DOB)

242

Page 249: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Set Charset

SET-CHARSET 지시문은 현재 데이터의 인코딩을 설정한 다음 이를 UTF-8 문자열로 변환합니다.

구문

set-charset <column> <charset>

column 은 변환 될 열의 이름입니다.

charset 는 열의 변환에 사용하는 캐릭터 셋입니다.

사용을 위한 참고사항

이 지시문은 열의 문자 집합을 charset 으로 설정합니다. 해당 charset 을 사용하여 열을 디코딩하고 이를 UTF-8 String 으로 변환합니다.

243

Page 250: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Set Column

SET-COLUMN 지시문은 열 값을 표현식 실행 결과로 설정합니다.

구문

set-column <columm> <expression>

그만큼 <column> 열의 이름을 지정합니다. 열이 이미 있으면 값은 지정된 표현식의 결과로 겹쳐 쓰여집니다. 열이 없으면 지정된 열의 결과와 함께 새 열이 만들어집니다.

그만큼 <expression> 유효한 Apache Commons JEXL expression 입니다.

사용을 위한 참고사항

SET-COLUMN 지시문은 열 값을 표현식 실행 결과로 설정합니다.

표현식은 Apache Commons JEXL 표기법으로 작성됩니다.

math : ceil 이나 string : upperCase 와 같이 네임 스페이스와 콜론을 함수 앞에 추가하여 다른 네임 스페이스의 함수 (예 : 문자열 및 수학)를 호출 할 수 있습니다.

244

Page 251: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

예제

이 레코드를 예제로 사용 :

{ "first": "Root", "last": "Joltie", "age": "32", "hrlywage": "11.79",}

다음 지시문 적용 :

set-column name concat(last, ", ", first)set-column is_adult age > 21 ? 'yes' : 'no'set-column salary hrlywage*40*50set column raised_hrlywage var x; x = math:ceil(FLOAT(hrlywage)); x + 1set column salutation string:upperCase(concat(first, ' ', last))

이 레코드를 얻는다 :

{ "first": "Root", "last": "Joltie", "age": "32", "hrlywage": "11.79", "name": "Joltie, Root", "is_adult": "yes", "salary": 23580.0, "raised_hrlywage": 13.0, "salutation": "ROOT JOLTIE"}

245

Page 252: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Set Columns

SET COLUMNS 지시문은 열의 이름을 지정된 순서대로 설정합니다.

구문

set columns <columm>[,<column>*]

그만큼 <column> 기존 열의 새 이름을 지정합니다.

사용을 위한 참고사항

SET COLUMNS 지시문의 가장 일반적인 용도는 CSV 파일을 파싱할 때 열의 이름을 설정하는 것입니다. 열 이름은 첫 x 번째 필드에서부터 시작하여 지정된 순서대로 레코드에 적용됩니다.

예제

이 레코드를 예제로 사용 :

{ "body": "1,2,3,4,5"}

246

Page 253: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

PARSE-AS-CSV 지시문을 사용하여 본문을 파싱한 경우 :

parse-as-csv body , false

결과 레코드는 다음과 같습니다.

{ "body": "1,2,3,4,5", "body_1": "1", "body_2": "2", "body_3": "3", "body_4": "4", "body_5": "5"}

SET COLUMNS 지시문을 적용하면 다음과 같습니다.

set columns a,b,c,d,e

이렇게 하면 다음과 같은 열 이름을 가진 레코드가 생성됩니다.

{ "a": "1,2,3,4,5", "b": "1", "c": "2", "d": "3", "e": "4", "body_5": "5"}

마지막 필드 (body_5)에는 예상된 이름이 지정되지 않았습니다.

이 문제를 해결하려면 다음을 사용하여 모든 열의 이름을 바꾸십시오.

parse-as-csv body , falseset columns body,a,b,c,d,e

247

Page 254: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이 레코드의 결과 :

{ "body": "1,2,3,4,5", "a": "1", "b": "2", "c": "3", "d": "4", "e": "5"}

또는 DROP 지시문을 사용하십시오.

parse-as-csv body , falsedrop bodyset columns a,b,c,d,e

결과는 다음과 같습니다.

{ "a": "1", "b": "2", "c": "3", "d": "4", "e": "5"}

흔한 실수

SET COLUMNS 지시문을 사용할 때 레코드의 필드 수는 SET COLUMNS 지시문의 열 이름 수와 동일해야 합니다. 그렇지 않은 경우 이 지정문은 부분적으로 레코드 필드의 이름을 지정합니다.

248

Page 255: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

열의 이름은 쉼표로 구분 된 단일 옵션에 있습니다. 공백으로 구분하면 첫 번째 열의 이름 만 설정됩니다.

이 지시문이 파이프 라인에서 실행되고 변환 될 “Name of field”필드가 *로 설정된 경우, 모든 필드가 레코드에 추가되어 열의 이름과 관련된 문제가 발생합니다. 이는 입력값으로부터 오는 열 이름들 역시 포함되기 때문입니다.

249

Page 256: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Set Record Delim

SET-RECORD-DELIM 지시문은 레코드 분리 문자를 설정합니다.

구문

set-record-delim <column> <delimiter> [<limit>]

사용을 위한 참고사항

이 지시문은 레코드 구분 기호 ( <delimiter> )를 사용하여 추가 레코드를 생성합니다. <column> . 선택적으로 한도 ( <limit> )를 지정하여 구분 기호가 적용될 때 생성되는 레코드 수를 제어 할 수 있습니다.

250

Page 257: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Set Type

열의 데이터 유형 변환

구문

set-type <column> <type>

그만큼 <column> 유형으로 변환됩니다. <typpe> . 사용할 수 있는 유형은 int, short, long, float, double, string, bytes, boolean 입니다.

251

Page 258: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Set a transient variable

SET-VARIABLE 지정문은 처리중인 입력 레코드에 로컬 변수의 값을 증가시킵니다.

구문

set-variable <variable> <expression>

그만큼 <variable> ~의 결과가 설정됩니다. <expression>.

사용을 위한 참고사항

이 지정문은 처리중인 레코드의 | 위 내에서만 적용됩니다. 일단 시스템이 새 레코드의 처리를 시작하면 일시적인 상태가 재설정됩니다.

252

Page 259: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Split By Separator

SPLIT-BY-SEPARATOR 지시문은 구분 기호를 기반으로 하는 열을 두 열로 나눕니다.

더 이상 사용되지 않는 사항

대신 SPLIT-TO-COLUMNS 지시문을 사용하십시오.

253

Page 260: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Split Email

SPLIT-EMAIL 지시문은 전자 메일 ID 를 계정과 해당 도메인으로 분할합니다.

구문

split-email <column>

그만큼 <column> 이메일 주소가 포함된 열입니다.

사용을 위한 참고사항

SPLIT-EMAIL 지시문은 전자 메일 주소를 계정 및 도메인과 같은 구성 요소로 파싱합니다.

전자 메일 주소를 분할한 후 지시문은 두 개의 새 열을 만들어 원래 열 이름에 추가합니다.

column_account

column_domain

전자 메일 주소를 올바르게 파싱할 수 없는 경우 추가 열은 여전히 생성되지만 파싱할 수 없는 부분에 따라 null 로 설정됩니다.

254

Page 261: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

예제

이 레코드를 예제로 사용 :

{ "name": "Root, Joltie", "email_address": "[email protected]",}

이 지시문 적용 :

split-email email_address

이 레코드를 얻는다 :

{ "name": "Root, Joltie", "email_address": "[email protected]", "email_address_account": "root", "email_address_domain": "example.com"}

파싱 오류가 있는 경우 : 레코드의 전자 메일 주소 필드가 null 인 경우 :

{ "email": null}

이 결과는 다음과 같습니다.

{ "email": null, "email_account": null, "email_domain": null}

255

Page 262: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이러한 레코드를 예제로 사용하여 다양한 이메일 ID 를 사용합니다.

[ { "email": "[email protected]" }, { "email": "[email protected]" }, { "email": "[email protected]" }, { "email": "joltie.'@.'root.'@'[email protected]" }, { "email": "Joltie, Root <[email protected]>" }, { "email": "Joltie,Root<[email protected]>" }, { "email": "Joltie,Root<[email protected]" }]

지시문을 실행하면 다음 레코드가 생성됩니다.

[ { "email": "[email protected]", "email_account": "root", "email_domain": "cask.co" }, { "email": "[email protected]", "email_account": "joltie.xxx", "email_domain": "gmail.com" }, { "email": "[email protected]", "email_account": "joltie_xxx", "email_domain": "hotmail.com" }, { "email": "joltie.'@.'root.'@'[email protected]", "email_account": "joltie.'@.'root.'@'.", "email_domain": "yahoo.com" }, { "email": "Joltie, Root <[email protected]>", "email_account": "joltie.root", "email_domain": "hotmail.com" }, { "email": "Joltie,Root<[email protected]>", "email_account": "joltie.root", "email_domain": "hotmail.com" }, { "email": "Joltie,Root<[email protected]", "email_account": null, "email_domain": null }]

256

Page 263: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Split to Columns

SPLIT-TO-COLUMNS 지시문은 정규 표현식을 기반으로 하는 열을 여러 열로 나눕니다.

구문

split-to-columns <column> <regex>

그만큼 <column> 지정된 정규식과 일치하는 하나 이상의 열로 분할됩니다. <regex> .

사용을 위한 참고사항

SPLIT-TO-COLUMNS 지시문은 열을 가져와 정규 표현식 구분 기호를 적용한 다음 분할에서 여러 열을 만듭니다. 열의 이름은 다음 형식으로되어 있습니다.

{ "column": "...", "column_1": "...", "column_2": "...", "column_3": "...", ... "column_n": "..."}

정규식을 사용하면 열의 데이터를 분할할 때 복잡한 검색 패턴을 사용할 수 있습니다. 표준 Java regular expression 을 지원합니다.

257

Page 264: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

원래 열은 열로 분할될 때 해당 열의 새로운 열을 생성합니다. column_1, column_2, through_column_n 은이 지정 문을 적용하여 생성된 분할의 n 부분을 포함하는 새 열입니다.

참고 :이 지시문은 문자열 유형의 열에 대해서만 작동할 수 있습니다.

예제

우리가 <separator> 문자열의 패턴 (쉼표) :

이것은 쪼개 질 것이다 1, 이것은 갈라진다 2, 이것은 갈라진다 3, 쪼갠다 4

이렇게하면 네 개의 새로운 열이 생성됩니다.

{ "1": "This will be split 1", "2": "This will be split 2", "3": "This will be split 3", "4": "Split 4"}

이 레코드를 예제로 사용 :

{ "id": 1, "codes": "USD|AUD|AMD|XCD"}

이 지시문 적용 :

split-to-columns codes \|

258

Page 265: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

참고 : 파이프 문자 (|)는 정규 표현식 패턴의 선택적 구분 기호이므로 이스케이프 하려면 백 슬래시가 필요합니다.

그러면 4 개의 열이 생성되고 각 분할값은 열 코드에 할당됩니다.

{ "id": 1, "codes": "USD|AUD|AMD|XCD", "codes_1": "USD", "codes_2": "AUD", "codes_3": "AMD", "codes_4": "XCD"}

259

Page 266: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Split to Rows

SPLIT-TO-ROWS 지시문은 구분 기호를 기반으로 하는 열을 여러 레코드로 분할하여 분할하여 생성 된 각 열 값에 대한 레코드 사본을 만듭니다.

구문

split-to-rows <column> <separator>

그만큼 <column> 에 기초하여 분리된다. <separator> 정규식 으로 정의 할 수 있습니다.

사용을 위한 참고사항

SPLIT-TO-ROW 지시문은 열을 가져와 정규 표현식 구분 기호를 적용한 다음 분할에서 여러 행을 만듭니다.

정규식을 사용하면 열의 데이터를 분할 할 때 복잡한 검색 패턴을 사용할 수 있습니다. 표준 Java 정규식 구문을 지원합니다.

만약 <separator> 정규 표현식 패턴이 입력 문자열의 일부와 일치하지 않으면 추가 행이 생성되지 않습니다.

일치하는 부분이 있고 일치가 입력 문자열을 n 개의 문자열로 분리하면 다른 열을 복사하여 생성 된 n 개의 행이 생성됩니다.

260

Page 267: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

참고 :이 지시문은 문자열 유형의 열에 대해서만 작동할 수 있습니다.

예제들

우리가 <separator> 문자열에 대한 \ n (줄 바꿈) 패턴 :

이것은 분할됩니다 1 \ n 분할됩니다 2

그러면 다음 값을 갖는 열이 있는 두 개의 출력 레코드가 생성됩니다.

[ { "column": "This will be split 1" }, { "column": "This will be split 2" }]

이 레코드를 예제로 사용 :

{ "id": 1, "codes": "USD|AUD|AMD|XCD",}

이 지시문 적용 :

split-to-rows codes \|

참고 : 파이프 문자 (|)는 정규 표현식 패턴의 선택적 구분 기호이므로 이스케이프 하려면 백 슬래시가 필요합니다.

이렇게 하면 4 개의 레코드가 생성되어 각 분할 값이 열 코드에 할당됩니다.

261

Page 268: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

[ { "id": 1, "codes": "USD" }, { "id": 1, "codes": "AUD" }, { "id": 1, "codes": "AMD" }, { "id": 1, "codes": "XCD" }]

262

Page 269: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Split URL

SPLIT-URL 지시문은 URL 을 프로토콜, 권한, 호스트, 포트, 경로, 파일 이름 및 쿼리로 분할합니다.

구문

split-url <column>

그만큼 <column> URL 을 포함하는 열입니다.

사용을 위한 참고사항

SPLIT-URL 지시문은 URL 을 구성 요소로 파싱합니다. URL 을 분할 할 때 지시문은 원래 열 이름을 추가하여 7 개의 새 열을 만듭니다.

column_protocol

column_authority

column_host

column_port

column_path

column_filename

column_query

263

Page 270: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

URL 을 올바르게 파싱할 수 없는 경우 예외가 throw 됩니다. URL 열이 없으면 null 값이 있는 열이 레코드에 추가됩니다.

예제

이 레코드를 예제로 사용 :

{ "url": "http://example.com:80/docs/books/tutorial/index.html?name=networking#DOWNLOADING"}

이 지시문 적용 :

split-url url

이 레코드를 얻는다 :

{ "url": "http://example.com:80/docs/books/tutorial/index.html?name=networking#DOWNLOADING", "url_protocol": "http", "url_authority": "example.com:80", "url_host": "example.com", "url_port": 80, "url_path": "/docs/books/tutorial/index.html", "url_filename": "/docs/books/tutorial/index.html?name=networking", "url_query": "name=networking"}

레코드의 URL 필드가 null 인 경우 :

{ "url": null}

264

Page 271: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

지시문은 다음을 생성합니다.

{ "url": null, "url_protocol": null, "url_authority": null, "url_host": null, "url_port": null, "url_path": null, "url_filename": null, "url_query": null}

265

Page 272: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Stemming

STEMMING 지시어는 영어 단어에 Porter 스테머 알고리즘을 적용합니다. Porter 스테머는 속도, 가독성 및 정확도 사이에서 우수한 균형을 유지합니다. 일련의 규칙 (변환)을 사용하여 연속적으로 적용됩니다. 일반적으로 약 60 개의 규칙을 6 단계로 적용합니다.

구문

stemming <column>

그만큼 <column> 문자열 배열 또는 유형 문자열 목록 유형의 단어 백을 포함합니다.

사용을 위한 참고사항

STEMMING 지시어는 토큰화 된 단어 모음에 줄기를 적용합니다. 이 지시어를 적용하면 <column> _porter 열. 필드가 보유하고 있는 객체의 유형에 따라 적절하게 변형됩니다.

이 레코드를 사용하여 문자열 배열 또는 문자열 목록으로 토큰화 된 단어 모음을 예로 듭니다.

{ "word" : { "how are you doing ? do you have apples ?" }

266

Page 273: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

}

이 지시문 적용 :

stemming word

결과는 다음과 같습니다.

{ "word": { "how are you doing ? do you have apples ?" }, "word_porter": { "how", "ar", "you", "do", "do", "you", "have", "appl" }}

267

Page 274: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Swap

SWAP 지시문은 두 열의 열 이름을 서로 바꿉니다.

구문

swap <column1> <colum2>

사용을 위한 참고사항

SWAP 지시문의 이름 바꾸기 <column1> ~의 이름으로 <column2> 과 <column2> ~의 이름으로 <column1> . 두 컬럼 중 하나가 존재하지 않으면, 지시문의 실행이 실패합니다.

이 레코드를 예제로 사용 :

{ "a": 1, "b": "sample string"}

268

Page 275: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

다음 지시문 중 하나를 적용하십시오.

swap a bswap b a

이 레코드를 얻는다 :

{ "b": 1, "a": "sample string"}

269

Page 276: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Table Lookup

TABLE-LOOKUP 지시문은 Table 데이터 세트에 대한 조회를 수행합니다.

구문

table-lookup <column> <table>

<column> 현재 레코드와 테이블에 존재하는 기존 열입니다.

<table> 에 의해 명명 된 열이 있는 테이블 데이터 집합입니다. <column>

사용을 위한 참고사항

TABLE-LOOKUP 지시문은 열을 조회 키로 사용하여 각 레코드에 대해 지정된 테이블 데이터 집합에 사용합니다. 열은 유형이 string 이어야합니다. 표의 행에 있는 값은 문자열로 구문 분석되고 조회 열과 행 열 이름을 밑줄로 결합하여 생성 된 이름으로 새 열의 레코드에 배치됩니다.

이 예는 테이블의 customerTable 데이터 집합에 대한 조회를 나타냅니다. 여기서 레코드의 필드 이름 customerUserId 가 조회 키로 사용됩니다.

270

Page 277: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이 데이터가 테이블 customerTable 에 있다고 가정합니다.

CustomerUserId Citybobistheman Palo Alto, CAjoe1984 Los Angeles, CArandomUserqwerty New York City, NY

지시문에 대한 입력 레코드가 다음과 같은 경우 :

CustomerUserId Product Quantitybobistheman Apples 10joe1984 Bicycle 1

이 지시문 적용 :

table-lookup customerUserId customerTable

다음과 같은 출력 레코드가 생성됩니다.

CustomerUserId Product Quantity CustomerUserId_Citybobistheman Apples 10 Palo Alto, CAjoe1984 Bicycle 1 Los Angeles, CA

271

Page 278: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Text Distance

TEXT-DISTANCE 지시문은 문자열 사이의 거리를 측정하는 지정된 방법을 사용하여 두 문자 시퀀스 간의 차이를 측정합니다.

구문

text-distance <method> <column-1> <column-2> <destination>

<method> 문자열 사이의 거리를 측정하는 데 사용할 메서드를 지정합니다. <column-1> 과 <column-2>

<destination> 결과 차이가 저장 될 열입니다. 존재하는 경우 겹쳐 씁니다. 존재하지 않으면 생성됩니다.

참고 : 두 열 중 하나 또는 둘 다 존재하지 않으면 오류가 반환되지 않고 대상 열이 계속 작성되거나 덮어 쓰기 됩니다.

사용을 위한 참고사항

다음과 같은 거리 측정 방법이 지원됩니다.

block-distance

block272

Page 279: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

cosine

damerau-levenshtein

dice

euclidean

generalized-jaccard

identity

jaccard

jaro

levenshtein

longest-common-subsequence

longest-common-substring

overlap-cofficient

simon-white

이 레코드를 예제로 사용 :

{ "tweet1": "CheeseBurgers are God tellin us everything's gonna be cool...", "tweet2": "Forgiveness can open up a whole new perspective on life, Forgiveness is an act of God's grace."}

이 지시문 적용 :

text-distance block tweet1 tweet2 distance

273

Page 280: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이 레코드를 얻는다 :

{ "tweet1": "CheeseBurgers are God tellin us everything's gonna be cool...", "tweet2": "Forgiveness can open up a whole new perspective on life, Forgiveness is an act of God's grace." "destination": 26.0}

274

Page 281: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Text Metric

TEXT-METRIC 지시문은 문자열 사이의 거리를 측정하는 지정된 방법을 사용하여 두 문자 시퀀스 간의 차이를 측정하는 미터법 (0 에서 1까지)을 제공합니다.

구문

text-metric <method> <column-1> <column-2> <destination>

<method> 문자열 사이의 거리를 측정하는 데 사용할 메서드를 지정합니다. <column-1> 과 <column-2>

<destination> 결과 차이가 저장 될 열입니다. 존재하는 경우 겹쳐 씁니다. 존재하지 않으면 생성됩니다.

참고 : 두 열 중 하나 또는 둘 다 존재하지 않으면 오류가 반환되지 않고 대상 열이 계속 작성되거나 덮어 쓰기 됩니다.

사용을 위한 참고사항

메트릭의 값은 항상 0 과 1 사이입니다.

275

Page 282: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

다음과 같은 거리 측정 방법이 지원됩니다.

block-distance

block

cosine

damerau-levenshtein

dice

euclidean

generalized-jaccard

identity

jaccard

jaro

levenshtein

longest-common-subsequence

longest-common-substring

overlap-cofficient

simon-white

이 레코드를 예제로 사용 :

{ "tweet1": "CheeseBurgers are God tellin us everything's gonna be cool...", "tweet2": "Beer is God's gift to humankind."}

276

Page 283: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이 지시문 적용 :

text-metric longest-common-subsequence tweet1 tweet2 distance

이 레코드를 얻는다 :

{ "tweet1": "CheeseBurgers are God tellin us everything's gonna be cool...", "tweet2": "Beer is God's gift to humankind." "destination": 0.26229507}

277

Page 284: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Trimming SpacesTRIM, LTRIM 및 RTRIM 지시문은 적용되는 문자열 값의 양쪽, 왼쪽 또는 오른쪽에서 공백을 제거합니다.

구문

trim <column>ltrim <column>rtrim <column>

이 지시문은 지정된 위치에 있는 공간의 내부 자르기를 수행합니다. <column>

사용법

trim 지시문은 UNICODE 공백 문자를 사용합니다. 다음은 TRIM, LTRIM 및 RTRIM 이 공백으로 인식하는 문자입니다.

Character Descriptiont Character tabulationn Line Feed (LF)U000B Line Tabulationf Form Feed (FF)r Carriage Return (CR)“” Spaceu0085 Next line (NEL)u00A0 No Break Spaceu1680 OGHAM Space Marku180E Mongolian Vowel Separatoru2000 EN Quadu2001 EM Quad

278

Page 285: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

u2002 EN Spaceu2003 EM Spaceu2004 Three Per EM spaceu2005 Four Per EM spaceu2006 Six Per EM spaceu2007 Figure Spaceu2008 Puncatuation Spaceu2009 Thin Spaceu200A Hair Spaceu2028 Line Separatoru2029 Paragraph Separatoru202F Narrow No-Break Spaceu205F Medium Mathematical Spaceu3000 Ideographic Space

이 레코드를 예제로 사용 :

{ "id": 1, "gender": " male ", "fname": " Root ", "lname": " JOLTIE ", "address": " 67 MARS AVE, MARSCIty, Marsville, Mars"}

이 지시어 적용

trim genderltrim fnamertrim lnameltrim address

이 레코드를 얻는다 :

279

Page 286: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

{ "id": 1, "gender": "male", "fname": "Root ", "lname": " JOLTIE", "address": "67 MARS AVE, MARSCIty, Marsville, Mars"}

280

Page 287: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

URL Decode

URL-DECODE 지시문은 application / x-www-form-urlencoded MIME 형식의 문자열을 문자열로 디코딩합니다.

구문

url-decode <column>

그만큼 <column> 디코딩 될 인코딩 된 URL 을 포함합니다.

사용을 위한 참고사항

변환 프로세스는 URL-ENCODE 지시어에서 사용되는 것과 반대입니다. 인코딩된 문자열의 모든 문자는 a ~ z, A ~ Z, 0 ~ 9 및 -, _,. 및 * 중 하나라고 가정합니다. 문자 %는 허용되지만 특수 이스케이프 시퀀스의 시작으로 해석됩니다.

자세한 내용은 https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1 을 참조하십시오.

이러한 규칙은 전환에 적용됩니다.

영숫자 a ~ z, A ~ Z 및 0 ~ 9 는 변경되지 않습니다.

281

Page 288: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

., -, * 및 _ 특수 문자는 변경되지 않습니다.

더하기 기호 (+)는 공백 문자 ‘’

% xy 형식의 시퀀스는 바이트를 나타내는 것으로 간주됩니다. 여기서 xy 는 8 비트 바이트의 두 자리 16 진수 표현입니다. 그런 다음 이러한 바이트 시퀀스 중 하나 이상을 연속적으로 포함하는 모든 하위 문자열은 해당 연속 바이트가 인코딩될 문자로 대체됩니다. 이러한 문자를 디코딩하는 데 사용되는 인코딩 체계가 지정 될 수 있으며, 지정되지 않은 경우 플랫폼의 기본 인코딩이 사용됩니다.

참고 : 문자열의 디코딩 스키마로 UTF-8 을 사용합니다.

282

Page 289: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

URL Encode

URL-ENCODE 지시문은 문자열을 application / x-www-form-urlencoded MIME 형식으로 인코딩합니다.

Syntax구문

url-encode <column>

그만큼 <column> 인코딩 할 URL 을 포함합니다.

사용을 위한 참고사항

이 규칙에 대한 자세한 내용은 https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1 을 참조하십시오.

문자열을 인코딩 할 때 다음 규칙이 적용됩니다.

영숫자 a ~ z, A ~ Z 및 0 ~ 9 는 변경되지 않습니다.

., -, * 및 _ 특수 문자는 변경되지 않습니다.

공백 문자`는 더하기 기호 (+)로 변환됩니다.

283

Page 290: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

다른 모든 문자는 안전하지 않은 것으로 간주되며 먼저 인코딩 스키마를 사용하여 하나 이상의 바이트로 변환됩니다. 각 바이트는 3 문자 문자열 % xy로 표시됩니다. 여기서 xy 는 바이트의 두 자리 16 진수 표현입니다. 사용할 인코딩 스키마는 UTF-8 이 좋습니다. 그러나 호환성을 위해 인코딩을 지정하지 않으면 플랫폼의 기본 인코딩이 사용됩니다.

참고 : 문자열의 인코딩 체계로 UTF-8 을 사용합니다.

URL-DECODE 지시문을 참조하십시오.

284

Page 291: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Write as CSV

WRITE-AS-CSV 지시어는 레코드를 CSV 형식으로 변환합니다.

구문

write-as-csv <column>

그만큼 <column> 레코드의 CSV 표현을 포함합니다.

사용을 위한 참고사항

WRITE-AS-CSV 지시문은 전체 레코드를 CSV 로 변환합니다. 만약 <column> 이미 존재하면 덮어 씁니다.

이 레코드를 예제로 사용 :

{ "int": 1,

285

Page 292: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

"string": "this, is a string."}

이 지시문 적용 :

write-as-csv body

이 레코드를 얻는다 :

{ "body": "1,\"this, is a string.\", "int": 1, "string": "this, is a string."}

286

Page 293: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Write as JSON Map

WRITE-AS-JSON-MAP 지시문은 레코드를 JSON 맵으로 변환합니다.

구문

write-as-json-map <column>

그만큼 <column> 레코드의 모든 필드에 대한 JSON 맵을 포함합니다.

사용을 위한 참고사항

WRITE-AS-JSON-MAP 지시문은 전체 레코드를 JSON 맵으로 변환합니다. 만약 <column> 이미 존재하면 덮어 씁니다.

필드가 보유하고 있는 객체의 유형에 따라 적절하게 변환됩니다.

이 레코드를 예제로 사용 :

287

Page 294: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

{ "int": 1, "string": "this, is a string."}

이 지시문 적용 :

write-as-json-map body

이 레코드를 얻는다 :

{ "body": { "int":1, "string": "this, is a string." }, "int": 1, "string": "this, is a string."}

288

Page 295: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Write as JSON object

WRITE-AS-JSON-OBJECT 지시문은 지정된 필드를 기반으로 JSON 객체를 작성하여 대상 열에 씁니다.

구문

write-as-json-object <destination-column> <source-column>[,<source-column>]*

그만큼 <destination-column> 에 지정된 모든 필드로 구성된 JSON 객체가 포함됩니다. <source-column> .

사용을 위한 참고사항

WRITE-AS-JSON-OBJECT 지시문은 객체에 추가되도록 지정된 필드 또는 열을 기반으로 JSON 객체를 작성합니다.

필드가 보유하고 있는 객체의 유형에 따라 적절히 JSON 유형으로 변환됩니다. NULL 도 처리되어 JsonNull 로 변환됩니다.

289

Page 296: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

이 레코드를 예제로 사용 :

{ "number": 1, "text": "this, is a string.", "height" : 1.5, "weight" : 1.67, "address" : null}

그리고 이 지시어를 적용 :

write-as-json-object body number,text,height,address

이 레코드를 얻는다 :

{ "body": { "number":1, "text": "this, is a string.", "height" : 1.5, "address" : null }, "number": 1, "text": "this, is a string.", "height" : 1.5, "weight" : 1.67, "address" : null}

290

Page 297: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

XPath Directives

XPATH 및 XPATH-ARRAY 지시문은 XML 문서의 XML 요소와 속성을 탐색합니다.

구문

xpath <column> <destination> <xpath>xpath-array <column> <destination> <xpath>

그만큼 <column> XPath 로 탐색 할 소스 XML 입니다.

사용을 위한 참고사항

소스 XML <column> 하나의 XPATH 지시문을 적용하기 전에 먼저 PARSE-AS-XML지시어를 적용해야 합니다.

PARSE-AS-XML 지시문을 적용하면 VTDNav 객체가 생성되어 XPATH 지시문을 적용할 수 있습니다. VTD Nav 는 메모리 효율적인 랜덤 액세스 XML 파서입니다.

그만큼 <destination> XPath 탐색 결과를 저장하는 데 사용할 열 이름을 지정합니다. XPath가 값을 생성하지 않으면 Null 값이 열에 기록됩니다.

XPath-ARRAY 지시어는 XPath 가 여러 값을 가질 수 있는 경우 사용해야 합니다. 결과 <destination> value 는 XPath 에 대한 모든 일치 항목의 JSON 배열입니다.

291

Page 298: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Functions함수(functions)는 데이터 준비 UI 에서 데이터를 변환하는 데 사용됩니다.

JSON Functions이들은 데이터 변환에 유용한 날짜 함수입니다. 이 모든 함수는 PARSE-AS-JSON 지시문과 함께 사용됩니다.

사전 요구 사항

이 모든 기능은 PARSE-AS-JSON 지정문을 적용한 후에 만 적용할 수 있습니다.

네임 스페이스

모든 날짜 관련 함수는 json 네임 스페이스에 있습니다.

예제 데이터

다음과 같은 입력 레코드를 작업 공간 본문에 업로드 하십시오.

{ "name": { "fname": "Joltie", "lname": "Root", "mname": null }, "coordinates": [ 12.56, 45.789 ],

292

Page 299: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

"numbers": [ 1, 2.1, 3, null, 4, 5, 6, null ], "moves": [ { "a": 1, "b": "X", "c": 2.8}, { "a": 2, "b": "Y", "c": 232342.8}, { "a": 3, "b": "Z", "c": null}, { "a": 4, "b": "U"} ], "integer": 1, "double": 2.8, "float": 45.6, "aliases": [ "root", "joltie", "bunny", null ]}

이러한 레코드가 로드되면 여기에 나열된 함수를 적용하기 전에 이러한 지시문을 적용하십시오:

parse-as-json bodycolumns-replace s/body_//g

JSON 함수 목록

Function Description Example

array_join (aliases, separator)

Joins all the elements in an array with a string separator. Returns the array unmodified if an object. Handles nulls.

set-column alias _list json:array_join(aliases, ",")

array_sum (numbers)

Computes sum of the elements. Skips null values. Returns 0 if any elements that are not summable are found.

set-column sum j son:array_sum(numbers)

array_max (numbers)

Finds the maximum of the elements. Skips null values. Returns 0x0.0000000000001P-1022if any issues with an element.

set-column max j son:array_max(numb ers)

293

Page 300: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

array_min (numbers)

Finds the minimum of the elements. Skips null values. Returns 0x1.fffffffffffffP+1023if any issues with an element.

set-column min j son:array_min(numbers)

294

Page 301: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Type Functions이들은 데이터 유형을 탐지하는 기능입니다. 이 함수는 filter-row-if-false, filter-row-if-true, filter-row-on 또는 send-to-error 지시문에서 사용할 수 있습니다.

사전 요구 사항

이것들은 filter- * 또는 send-to-error 지시문에서만 사용할 수 있습니다.

네임 스페이스

모든 유형 관련 함수는 네임 스페이스 유형입니다.

예제 데이터

다음과 같은 입력 레코드를 작업 공간 본문에 업로드 하십시오.

{ "name": { "fname": "Joltie", "lname": "Root", "mname": null }, "date": "12/17/2019", "time": "10:45 PM", "boolean": "true", "coordinates": [ 12.56, 45.789 ], "numbers": [ 1, 2.1, 3, null,

295

Page 302: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

4, 5, 6, null ], "moves": [ { "a": 1, "b": "X", "c": 2.8}, { "a": 2, "b": "Y", "c": 232342.8}, { "a": 3, "b": "Z", "c": null}, { "a": 4, "b": "U"} ], "integer": "1", "double": "2.8", "empty": "", "float": 45.6, "aliases": [ "root", "joltie", "bunny", null ]}

이러한 레코드가 로드되면 여기에 나열된 함수를 적용하기 전에 이러한 지시문을 적용하십시오:

parse-as-json bodycolumns-replace s/body_//g

유형 함수 목록

각 함수는 조건이 충족되면 true 를 반환하고 그렇지 않으면 false 를 반환합니다.

Function Description Example

isDate(string) Tests if string value is a date fieldfilter-row-if-true type:is Date(date)

isTime(string) Tests if string value is a date timefilter-row-if-true type:is Time(time)

isBoolean(string) Tests if string value is a boolean fieldsend-to-error !type:isBoolean(boolean)

isNumber(string) Tests if string value is a number fieldsend-to-error !type:isNumber(integer)

isEmpty(string) Tests if string value is emptysend-to-error !type:isEmpty(empty)

296

Page 303: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

isDouble(string) Tests if string value is a double fieldsend-to-error!type:isDouble(double)

isInteger(string) Tests if string value is an integer fieldsend-to-error!type:isInteger(integer)

297

Page 304: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Geofence Functions위치 점이 주어진 지오 펜스 집합 안에 있는지 감지하는 기능입니다. 이 함수는 filter-row-if-false, filter-row-if-true, filter-row-on, set column 또는 send-to-error 지시문에서 사용할 수 있습니다.

사전 요구 사항

지오 펜스는 geoJson 형식으로 표현되어야 합니다. 위치 좌표는 Double 유형 값으로 표시되어야 합니다.

예제 데이터

다음과 같은 입력 레코드를 작업 공간 본문에 업로드 하십시오.

{ "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": {}, "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.05870628356934, 37.37943348292772 ], [ -122.05724716186525, 37.374727268782294 ], [ -122.04634666442871, 37.37493189292912 ], [ -122.04608917236328,

298

Page 305: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

37.38175237839049 ], [ -122.05870628356934, 37.37943348292772 ] ] ] } } ]}

이러한 레코드가 로드되면 위치 좌표의 직접 값을 사용하거나 열로 설정할 수 있습니다:

set column latitude 37.37220352507352set column longitude -122.04608917236328

지오 펜스(Geofence) 함수

이 함수는 위치 점이 지정된 지오 펜스 세트 중 하나에 있으면 true 를 반환하고 그렇지 않으면 false 를 반환합니다.

Function Description ExamplelocationInFence(double, double, String) Tests if point is inside the fences

send-to-error !geo:inFence(latitude,longitude,body)

299

Page 306: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Data Quality Functions이들은 데이터 유형을 탐지하는 기능입니다. 이 함수는 filter-row-if-false, filter-row-if-true, filter-row-on 또는 send-to-error 지시문에서 사용할 수 있습니다.

사전 요구 사항

이것들은 filter- * 또는 send-to-error 지시문에서만 사용할 수 있습니다.

네임 스페이스

모든 유형 관련 함수는 네임 스페이스 유형입니다.

예제 데이터

다음과 같은 입력 레코드를 작업 공간 본문에 업로드 하십시오.

{ "name": { "fname": "Joltie", "lname": "Root", "mname": null }, "date": "12/17/2019", "time": "10:45 PM", "boolean": "true", "coordinates": [ 12.56, 45.789 ], "numbers": [ 1, 2.1, 3, null,

300

Page 307: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

4, 5, 6, null ], "moves": [ { "a": 1, "b": "X", "c": 2.8}, { "a": 2, "b": "Y", "c": 232342.8}, { "a": 3, "b": "Z", "c": null}, { "a": 4, "b": "U"} ], "integer": "1", "double": "2.8", "empty": "", "float": 45.6, "aliases": [ "root", "joltie", "bunny", null ]}

이러한 레코드가 로드되면 여기에 나열된 함수를 적용하기 전에 이러한 지시문을 적용하십시오:

parse-as-json bodycolumns-replace s/body_//g

유형 함수 목록

각 함수는 조건이 충족되면 true 를 반환하고 그렇지 않으면 false 를 반환합니다.

Function Condition Example

isDate(string) Tests if string value is a date fieldfilter-row-if-true type:is Date(date)

isTime(string) Tests if string value is a date timefilter-row-if-true type:is Time(time)

isBoolean(string) Tests if string value is a boolean fieldsend-to-error !type:isBoolean(boolean)

isNumber(string) Tests if string value is a number fieldsend-to-error !type:isNumber(integer)

isEmpty(string) Tests if string value is emptysend-to-error !type:isEmpty(empty)

301

Page 308: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

isDouble(string) Tests if string value is a double fieldsend-to-error!type:isDouble(double)

isInteger(string) Tests if string value is an integer fieldsend-to-error!type:isInteger(integer)

302

Page 309: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Date Manipulation Functions이들은 데이터 유형을 탐지하는 기능입니다. 이 함수는 filter-row-if-false, filter-row-if-true, filter-row-on 또는 send-to-error 지시문에서 사용할 수 있습니다.

사전 요구 사항

이것들은 filter- * 또는 send-to-error 지시문에서만 사용할 수 있습니다.

네임 스페이스

모든 유형 관련 함수는 네임 스페이스 유형입니다.

예제 데이터

다음과 같은 입력 레코드를 작업 공간 본문에 업로드 하십시오.

{ "name": { "fname": "Joltie", "lname": "Root", "mname": null }, "date": "12/17/2019", "time": "10:45 PM", "boolean": "true", "coordinates": [ 12.56, 45.789 ], "numbers": [ 1, 2.1, 3, null, 4,

303

Page 310: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

5, 6, null ], "moves": [ { "a": 1, "b": "X", "c": 2.8}, { "a": 2, "b": "Y", "c": 232342.8}, { "a": 3, "b": "Z", "c": null}, { "a": 4, "b": "U"} ], "integer": "1", "double": "2.8", "empty": "", "float": 45.6, "aliases": [ "root", "joltie", "bunny", null ]}

이러한 레코드가 로드되면 여기에 나열된 함수를 적용하기 전에 이러한 지시문을 적용하십시오:

parse-as-json bodycolumns-replace s/body_//g

유형 함수 목록

Function Condition Example

isDate(string) Tests if string value is a date fieldfilter-row-if-true type:is Date(date)

isTime(string) Tests if string value is a date timefilter-row-if-true type:is Time(time)

isBoolean(string) Tests if string value is a boolean fieldsend-to-error !type:isBoolean(boolean)

isNumber(string) Tests if string value is a number fieldsend-to-error !type:isNumber(integer)

isEmpty(string) Tests if string value is emptysend-to-error !type:isEmpty(empty)

isDouble(string) Tests if string value is a double fieldsend-to-error!type:isDouble(double)

isInteger(string) Tests if string value is an integer fieldsend-to-error!type:isInteger(integer)

304

Page 311: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

305

Page 312: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Data Definition Manipulation Functions이들은 데이터 유형을 탐지하는 기능입니다. 이 함수는 filter-row-if-false, filter-row-if-true, filter-row-on 또는 send-to-error 지시문에서 사용할 수 있습니다.

사전 요구 사항

이것들은 filter- * 또는 send-to-error 지시문에서만 사용할 수 있습니다.

네임 스페이스

모든 유형 관련 함수는 네임 스페이스 유형입니다.

예제 데이터

다음과 같은 입력 레코드를 작업 공간 본문에 업로드 하십시오.

{ "name": { "fname": "Joltie", "lname": "Root", "mname": null }, "date": "12/17/2019", "time": "10:45 PM", "boolean": "true", "coordinates": [ 12.56, 45.789 ], "numbers": [ 1, 2.1, 3, null, 4,

306

Page 313: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

5, 6, null ], "moves": [ { "a": 1, "b": "X", "c": 2.8}, { "a": 2, "b": "Y", "c": 232342.8}, { "a": 3, "b": "Z", "c": null}, { "a": 4, "b": "U"} ], "integer": "1", "double": "2.8", "empty": "", "float": 45.6, "aliases": [ "root", "joltie", "bunny", null ]}

이러한 레코드가 로드되면 여기에 나열된 함수를 적용하기 전에 이러한 지시문을 적용하십시오:

parse-as-json bodycolumns-replace s/body_//g

유형 함수 목록

각 함수는 조건이 충족되면 true 를 반환하고 그렇지 않으면 false 를 반환합니다.

Function Condition Example

isDate(string) Tests if string value is a date fieldfilter-row-if-true type:is Date(date)

isTime(string) Tests if string value is a date timefilter-row-if-true type:is Time(time)

isBoolean(string) Tests if string value is a boolean fieldsend-to-error !type:isBoolean(boolean)

isNumber(string) Tests if string value is a number fieldsend-to-error !type:isNumber(integer)

isEmpty(string) Tests if string value is emptysend-to-error !type:isEmpty(empty)

isDouble(string) Tests if string value is a double field send-to-error!

307

Page 314: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

type:isDouble(double)

isInteger(string) Tests if string value is an integer fieldsend-to-error!type:isInteger(integer)

308

Page 315: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Services데이터 준비 서비스(services)는 RESTful 인터페이스를 사용하여 데이터를 노출하는 능력을 제공합니다.

Administration and Management Services Creating a Workspace

Deleting a Workspace

Uploading a File to a Workspace

Downloading a File from a Workspace

## Creating a Workspace이 RESTful API 호출은 작업 영역, 즉 백엔드에서 wrangling 할 데이터를 임시로 저장하기 위한 스크래치 패드를 작성합니다. 작업 공간은 영 숫자 또는 밑줄 (_) 문자가 포함된 이름으로 식별됩니다.

URL

workspaces/:workspaceid

Method

PUT

URL Params

None

Data Params

Not Applicable

Success Response

Code 200 Content

{ 'status': 200, 'message': "Successfully created workspace ':workspaceid'"}

309

Page 316: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Error Responses

Code 500 Server Error Content

{ 'status': 500, 'message': "<appropriate error message>"}

또는

Code 500 Server Error Content

Unable to route to service <url>

Sample Call

$.ajax({ url: "${base-url}/workspaces/${workspace}", dataType: "json", type : "PUT", success : function(r) { console.log(r); } });

참고

백엔드 서비스가 시작되지 않거나 데이터 세트 쓰기가 실패하면 API 호출이 실패합니다.

## Deleting a Workspace이 RESTful API 호출은 작업 영역을 삭제합니다. 그러면 연결된 모든 데이터도 삭제됩니다.

URL

workspaces/:workspaceid

Method

DELETE

URL Params

None

Data Params

310

Page 317: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Not Applicable

Success Response

Code 200 Content

{ 'status': 200, 'message': "Successfully deleted workspace ':workspaceid'"}

Error Responses

Code 500 Server Error Content

{ 'status': 500, 'message': "<appropriate error message>"}

또는

Code 500 Server Error Content

Unable to route to service <url>

Sample Call

$.ajax({ url: "${base-url}/workspaces/${workspace}", dataType: "json", type : "DELETE", success : function(r) { console.log(r); } });

참고백엔드 서비스가 시작되지 않거나 데이터 세트 쓰기가 실패하면 API 호출이 실패합니다.

## Uploading a File to a Workspace

이 RESTful API 호출은 파일을 작업 영역에 업로드 합니다. 파일은 줄 분리 문자 (EOL)에

311

Page 318: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

따라 줄로 나뉩니다.

URL

workspaces/:workspaceid/upload

Method

POST

URL Params

None

Data Params

Not Applicable

Success Response

Code 200 Content

{ 'status': 200, 'message': "Successfully uploaded data to workspace ':workspaceid' (records 1000)"}

Error Responses

Code 500 Server Error Content

{ 'status': 500, 'message': "Body not present, please post the file containing the records to be wrangle."}

또는

Code 500 Server Error Content

Unable to route to service <url>

312

Page 319: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

또는

Code 500 Server Error Content

{ 'status': 500, 'message': "<appropriate error message>"}

Sample Call

$.ajax({ url: "${base-url}/workspaces/${workspace}/upload", type: 'POST', data: data, cache: false, contentType: 'application/octet-stream',

processData: false, // Don't process the files contentType: false, success: function(r) { console.log(r); }, error: function(r) { console.log(r); }

});

## Downloading a File from a Workspace

이 RESTful API 는 작업 공간에 데이터를 저장하는 파일로 다운로드 합니다.

URL

workspaces/:workspaceid/download

Method

GET

URL Params

None

Data Params

Not Applicable

Success Response

Code 200 Content

<data stored in workspace>

Error Responses

313

Page 320: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Code 500 Server Error Content

{ 'status': 500, 'message': "No data exists in the workspace. Please upload the data to this workspace."}

또는

Code 500 Server Error Content

Unable to route to service <url>

또는

Code 500 Server Error Content

{ 'status': 500, 'message': "<appropriate error message>"}

Sample Call

$.ajax({ url: "${base-url}/workspaces/${workspace}/download", type: 'GET', success: function(r) { console.log(r); }, error: function(r) { console.log(r); } });

314

Page 321: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Connection PropertiesFollowing are properties for different types of connections.

Property DescriptionDatabase

username(String) Username to be used in the connection

password

(String) Password to be used along with username. Empty should be double-quoted

hostname (String) Hostname to connect toport (Integer) Port numberssl (Boolean) true or falseurl (String) JDBC Url

Kafka

zkqorum (String) Zookeeper quorum string (host1:2181,host2:2181,host3:2181)

brokers (String) Kafka Broker

315

Page 322: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Connection Service연결 서비스는 연결 라이프 사이클을 관리하기 위한 RESTful API 를 제공합니다. 모든 연결 정보는 데이터 집합의 연결 저장소에 저장됩니다.

다음은 연결 서비스에서 지원되는 라이프 사이클 작업입니다.

새 연결 만들기 (POST, $ {base} / connections / create)

전체 연결 업데이트 (POST, $ {base} / connections / {id} / update)

연결 (PUT, $ {base} / connections / {id} / properties? key = <key> &amp; value = <value> )

연결의 모든 속성 가져 오기 (GET, $ {base} / connections / {id} / properties)

연결 삭제 (DELETE, $ {base} / connections / {id})

연결 복제 (GET, $ {base} / connections / {id} / clone)

모든 연결에 대한 정보 검색 (GET, $ {base} / connections)

연결에 대한 정보 검색 (GET $ {base} / connections / {id})

Base

다음은 서비스의 기본 URL 입니다.

http://localhost:11015/v3/namespaces/<namespace>/apps/dataprep/services/service/methods

NOTE: All examples below use a 'default' namespace.

생성 및 전체 업데이트를위한 JSON 객체 요청

다음은 요청에 포함될 수 있는 필드입니다.

316

Page 323: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

name (mandatory)

description (optional)

type (mandatory; one of:)

DATABASE

KAFKA

S3

properties (optional)

다음은 연결을 생성하기 위한 JSON 요청의 예입니다.

{ "name": "MySQL Database", "description": "MySQL Configuration", "type": "DATABASE", "properties": { "hostaname": "localhost", "port": "3306" }}

작성에 성공하면 항목의 ID 가 리턴 됩니다. 다음은 생성이 성공했을 때의 응답 예입니다.

{ "status": 200, "message": "Success", "count": 1, "values": [ "mysql_database" ]}

샘플 실행

JSON 연결

cat /Users/nitin/Work/Demo/data/mysql.connection.json{ "name":"MySQL Database",

317

Page 324: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

"type":"DATABASE", "description":"MySQL Configuration", "properties" : { "hostaname" : "localhost", "port" : 3306 }}

REST API 호출을 생성

curl -s --data "@/tmp/mysql.connection.json" 'http://localhost:11015/v3/namespaces/default/apps/dataprep/services/service/methods/connections/create' | python -mjson.tool{ "count": 1, "message": "Success", "status": 200, "values": [ "mysql_database" ]}

Repeat creation will fail반복 생성 실패

curl -s --data "@/Users/nitin/Work/Demo/data/mysql.connection.json" 'http://localhost:11015/v3/namespaces/default/apps/dataprep/services/service/methods/connections/create' | python -mjson.tool{ "message": "Connection name 'MySQL Database' already exists.", "status": 500}

연결 삭제

curl -X DELETE "http://localhost:11015/v3/namespaces/default/apps/dataprep/services/service/methods/connections/mysql_database" | python -mjson.tool{ "status":200, "message":"Success"}

318

Page 325: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

반복 삭제도 성공적으로 수행되거나 키를 찾을 수 없는 경우에도 수행됩니다.

curl -s -X DELETE "http://localhost:11015/v3/namespaces/default/apps/dataprep/services/service/methods/connections/mysql_database" | python -mjson.tool{ "message": "Success", "status": 200}

모든 연결 나열

curl -s "http://localhost:11015/v3/namespaces/default/apps/dataprep/services/service/methods/connections?type=*" | python -mjson.tool{ "count": 1, "message": "Success", "status": 200, "values": [ { "created": 1494529821, "description": "MySQL Configuration", "id": "mysql_database", "name": "MySQL Database", "type": "DATABASE", "updated": 1494529821 } ]}

데이터베이스 유형의 연결만 나열

curl -s "http://localhost:11015/v3/namespaces/default/apps/dataprep/services/service/methods/connections?type=database" | python -mjson.tool{ "count": 1, "message": "Success", "status": 200,

319

Page 326: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

"values": [ { "created": 1494529821, "description": "MySQL Configuration", "id": "mysql_database", "name": "MySQL Database", "type": "DATABASE", "updated": 1494529821 } ]}

연결 정보

curl -s "http://localhost:11015/v3/namespaces/default/apps/dataprep/services/service/methods/connections/mysql_database" | python -mjson.tool{ "count": 1, "message": "Success", "status": 200, "values": [ { "created": 1494527723, "description": "MySQL Configuration", "id": "mysql_database", "name": "MySQL Database", "properties": { "hostaname": "localhost", "port": 3306.0 }, "type": "DATABASE", "updated": 1494527723 } ]}

복제 연결

curl -s "http://localhost:11015/v3/namespaces/default/apps/dataprep/services/service/methods/connections/mysql_database/clone" | python -mjson.tool{ "count": 1, "message": "Success", "status": 200, "values": [ {

320

Page 327: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

"created": 1494528015, "description": "MySQL Configuration", "name": "MySQL Database_Clone", "properties": { "hostaname": "localhost", "port": 3306.0 }, "type": "DATABASE", "updated": 1494528015 } ]}

속성만 가져 오기(Fetch)

curl -s "http://localhost:11015/v3/namespaces/default/apps/dataprep/services/service/methods/connections/mysql_database/properties" | python -mjson.tool{ "count": 1, "message": "Success", "status": 200, "values": [ { "hostaname": "localhost", "port": 3306.0 } ]}

새 속성 추가 또는 기존 속성 업데이트

curl -X PUT -s "http://localhost:11015/v3/namespaces/default/apps/dataprep/services/service/methods/connections/mysql_database/properties?key=ssl&value=true" | python -mjson.tool{ "count": 1, "message": "Success", "status": 200, "values": [ { "hostaname": "localhost", "port": 3306.0, "ssl": "true" } ]}

321

Page 328: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

322

Page 329: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

지시문 실행

지시문 실행

작업 영역의 데이터에 지시문을 적용합니다.

URL

workspaces/:workspaceid/executeMethod

GET

URL Params

실행될 지시문은 질의 인수(query arguments)로 전달됩니다. 여러 개의 지시문을 실행하려면 여러 개의 쿼리 인수로 전달됩니다.

Required

directive=[encoded directive]

Optional

limit=[numeric]

Data Params

Not Applicable

Success Response

Code: 200 Content:

{ 'status': 200, 'message': 'Success', 'items': <count of records>, 'header': [ 'header-1', 'header-2', ..., 'header-n' ], 'value': { { processed record - 1},

323

Page 330: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

{ processed record - 2}, . . . { processed record - n} }}

Error Responses

Code: 500 Server Error Content:

{ 'status': 500, 'message': "<appropriate error message>"}

또는

코드 : 500 서버 오류 내용 :

Unable to route to service <url>

Sample Call

$.ajax({ url: "${base-url}/workspaces/${workspace}/execute", data: { 'directive': <directive-1>, 'directive': <directive-2>, ... 'directive': <directive-k> 'limit': <count> } cache: false type : "GET",

success : function(r) { console.log(r); } });

324

Page 331: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

요청 포맷 사양

(Request Format Specification)

Currently, the Data Prep front-end makes a GET call with all the directives in the query arguments. This causes issues on some browsers as there are limits as to how much data can be pushed using this approach. This document describes the format that is used for sending a request to the back-end.

현재 Data Prep 프런트 엔드(front-end)는 쿼리 인수(query arguments)에 있는 모든 지시문을 사용하여 GET 호출을 만듭니다. 이 접근법을 사용하여 얼마나 많은 데이터를 푸시(push)할 수 있는지에 대한 한계가 있기 때문에 일부 브라우저에서는 문제가 발생합니다. 이 문서는 백엔드(back-end)에 요청을 보내는 데 사용되는 형식에 대해 설명합니다.

사양 버전

이 문서는 요청 사양 버전 1.0 을 다루며 프론트 엔드 및 백엔드에서 이 요구 사항을 처리하는 방법을 자세히 설명합니다.

JSON 요청 포맷

{ "version": "1.0" "workspace": { "name": string, "results": number }, "recipe": { "directives": [ "string", "string", ... "string"

325

Page 332: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

], "save": boolean, "name": string }, "sampling": { "method": string, "seed": number, "limit": number }}

Version

이 사양 (1.0)의 버전을 지정합니다. 사양에 대한 추가 또는 삭제가 있는 경우 이 버전이 업데이트됩니다.

Workspace

이 섹션에서는 지시문이 적용되는 작업 영역(workspace) 및 결과 계산시 요청에서 반환해야 하는 레코드 수 (results)에 대한 정보를 제공합니다.

Property Mandatory DescriptionName Yes Name of the workspace that Data Prep should operate on

results YesNumber of records that should be returned in response to execution of the directives

Recipe

이 섹션에는 작업 영역의 데이터에 적용될 모든 지시문과 지시문을 이름이 있는 레시피로 저장하는 옵션이 포함되어 있습니다.

Field Mandatory Descriptiondirectives Yes List of directives to be applied on the data

save NoIf true, specifies that the directives should be saved. If so, then name should also be specified.

name NoName of the recipe. This option is valid only when save is set to true.

326

Page 333: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Sampling

이 섹션에서는 입력 데이터를 샘플링하는 방법에 대한 정보를 제공합니다.

Field Mandatory Description

Method YesType of sampling to be applied while selecting input data. Currently only supports first.

seed No The random seed to be used when sampling data

limit NoThe number of input records to be read from the source when applying directives

간단한 예 :

{ "version": "1.0", "workspace": { "name": "body", "results": 100 }, "recipe": { "directives": [ "parse-as-csv body ,", "drop body", "set-columns a,b,c,d" ], "save": true, "name": "my-recipe" }, "sampling": { "method": "first", "seed": 1, "limit": 1000 }}

327

Page 334: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Schema RegistrySchema Registry provides a serving layer for all types of metadata. It provides a RESTful interface for storing and retrieving schemas (AVRO, Protobuf, etc). It stores a versioned history of all schemas,

스키마 레지스트리(Schema Registry)는 모든 유형의 메타 데이터에 대한 서비스 계층을 제공합니다. 스키마 (AVRO, Protobuf 등) 저장 및 검색을 위한 RESTful 인터페이스를 제공합니다. 또한 모든 스키마의 버전 별 기록을 저장합니다.

스키마 정보

Field Description

ID Id of the schema as provided by the user.Name Display name for the schema.Description User facing description about the schema

Created DateTime in seconds about when the schema was created.

Updated DateTime in seconds about when the schema was last updated.

VersionTime in seconds about when the schema was last updated.

TypeType of the schema, currently supports AVRO and Protobuf-desc

Specification Byte array of the specification of schema

RESTful APIs

API Method Path Response Description

Create a schema entry

PUT /schemas 200 - OK, 500 - Error in backend

Creates an entry in the schema

328

Page 335: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

store

registry. No schema is registred.

Add a schema to schema entry POST /schemas/{id}

200 - OK, 500 - Error adding schema to schema registry

Adds a versioned schema to schema registry. POST should use Content-Type:application n/octet-stream

Delete all version of schema DELETE /schemas/{id}

200 - OK, 500 - Error deleting schema

Deletes the entire schema entry including all the versions of schema.

Delete a sepecific version of schema DELETE

/schemas/{id} /versions/{ve rsion}

200 - OK, 500 - Error deleting a version of schema

Deletes a specific version of schema, if schema is not found then a 404 is returned.

GET information about a a version of schema GET

/schemas/{id} /versions/{ve rsion}

200 - OK, 500 - Backend error, 404 - Schema id not found

Information about schema version and schema entry

GET information about schema entry GET /schemas/{id}

200 - OK, 500 - Error

Information about schema entry

List version for schema available GET

/schemas/{id} /versions

200 - OK, 500 - Error

List the versions of schema.

329

Page 336: STLogic · Web view예제 파일이나 템플릿으로 시작하거나 기존 구성 파일을 다시 사용하여 CDAP 파이프 라인 구성 사양(configuration specification)에

Data Prep Service

Data Prep 는 CDAP Service 로 통합되어 HTTP RESTful 기반 대화식 데이터 송수신을 지원합니다. 이 서비스의 주요 목적은 주어진 데이터 세트를 파싱(parsing)하는 데 필요한 지시문을 대화식으로 간단하고 쉽게 적용 할 수 있도록 하는 것입니다. 이 서비스는 대규모 데이터 처리를 대체하기 위한 것이 아닙니다. 이는 주로 데이터 샘플에 대해 대화식으로 지시문을 적용하는 데 사용됩니다.

기본 엔드 포인트는 다음과 같습니다.

http://<hostname>:11015/v3/namespaces/<namespace>/apps/dataprep/services/service/methods

다음은 제공되는 서비스 입니다 :

Administration and Management Directive Execution Column Type Detection and Statistics Column Name Validation

요청 형식 사양 섹션은 요청을 백엔드로 보내는 데 사용되는 형식을 설명합니다.

330