2.7.3.CSV2Parquet.md 7.07 KB
Newer Older
HooYoungAhn's avatar
HooYoungAhn committed
---
html:
  toc: true
  offline: true
export_on_save:
  html: true
---
# CSV 파일 Parquet로 저장하기
---

이 예제에서는 CSV 자료를 Batch 형태로 입력받아 Parquet 파일로 저장하는 방법에 대해 설명합니다.

HooYoungAhn's avatar
HooYoungAhn committed
<b>참고</b>: Parquet 파일은 KSB 프레임워크가 제공하는 <a href="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/2.5.5.BatchAutoMLTrainInSingleEngine.md">AutoML 기능</a> 혹은 <a href="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/2.5.4.BatchMLTrainInSingleEngine.md">ML학습 기능</a>을 사용하기 위해 필요한 입력자료 형태입니다.
HooYoungAhn's avatar
HooYoungAhn committed

## 입력 데이터 준비하기
입력데이터는 헤더 정보를 포함하는 CSV 파일이어야 합니다. 본 예제에서는 Host PC의 "/home/csle/ksb-csle/examples/input/iris.csv" 를 사용자 HDFS repository 의 "dataset/input" 폴더에 업로드하여 사용합니다.

<b>참고</b>: 이전 버전의 KSB 프레임워크를 사용하고 있다면 iris.csv 가 없을 수도 있습니다. 이 경우 <a href="https://gist.github.com/curran/a08a1080b88344b0c8a7">여기에서</a> 다운받으면 됩니다.

iris.csv 는 다음과 같은 값을 저장하고 있습니다.

```sh
sepal_length,sepal_width,petal_length,petal_width,species
5.1,3.5,1.4,0.2,setosa
4.9,3.0,1.4,0.2,setosa
4.7,3.2,1.3,0.2,setosa
4.6,3.1,1.5,0.2,setosa
5.0,3.6,1.4,0.2,setosa
5.4,3.9,1.7,0.4,setosa
```

첫번째 줄은 헤더이고, 두번째 줄부터 자료값입니다. 각각의 값은 "," 로 분리되어 있어야 합니다.

## 워크플로우 생성하기
워크플로우 편집화면을 이용하여, 아래 과정을 거쳐 워크플로우를 생성합니다.

### 엔진 선택
기계학습모델 학습기능을 사용하기 위해 BatchToBatchStream 엔진을 드래그앤 드롭합니다. 속성값을 아래와 같이 지정합니다.

field  |value   | 설명
--|---|--
name  |  2.7.3.CSV2Parquet |  워크플로우 이름
description  | CSV 파일 Parquet로 변환하기 | 워크플로우 설명
isBatch  |  true | Batch 실행여부

#### Reader
파일을 읽기위해 FileReader를 드래그앤 드롭하고, 아래표와 같이 속성을 지정합니다.

field  |value   | 설명
--|---|--
filePath  |  dataset/input/iris.csv | 파일경로
fileType  | CSV |  파일형태
delimiter  |  , |  구분자
field  |   | 상세설정
header  | true  |  헤더포함여부

filePath는 직접 입력할 수도 있으며, 아래 화면처럼 GUI를 이용해 선택할 수도 있습니다 (filePath 속성에 "File" 버튼 클릭). 기타 속성은 기본값으로 두면 됩니다.

![파일 읽기](images/2.7.3_read.png)

#### Writer
Parquet 파일을 저장하기 위해 FileWriter를 드래그앤 드롭합니다.

field  |value   | 설명
--|---|--
filePath  |  dataset/input/iris.parquet |  저장경로 및 파일이름
fileType  | PARQUET |  파일형태
delimiter  |  , |  구분자
field  |   | 상세설정
header  | true  |  헤더포함여부

Reader의 경우와 마찬가지로 filePath는 직접 입력할 수도 있으며, GUI를 이용해 선택할 수도 있습니다.

#### Controller
Controller 로는 SparkSessionOrStreamController를 드래그앤 드롭합니다.

#### Runner
SimpleSparkRunner 를 드래그앤 드롭합니다.

field  |value   | 설명
--|---|--
inJason  |  false | Jason 형태 파라미터 전달여부
sparkArgs  |   |  Spark 상세설정

sparkArgs 버튼을 누르면 아래와 같이 Apache Spark 실행환경을 세부설정할 수 있는 창이 뜹니다. 이 예제에서는 기본값을 사용합니다.

#### Operator

이 예제에서는 CSV 파일의 칼럼들을 제어하기 위해 두개의 Operator를 사용합니다. 첫번째 Operator 는 VectorizeColumnOperator 입니다. 이 Operator 는 CSV 의 특정 칼럼을 선택해 Vector 로 합쳐 하나의 칼럼에 할당합니다. 속성값을 아래와 같이 설정합니다.

field  |value   | 설명
--|---|--
srcColumnNames  | sepal_length,sepal_width,petal_length,petal_width  | Vectorize 할 칼럼이름. "," 로 구분.
destColumnNames  | features  |  Vectorize 된 칼럼 이름
keepSrcColumns  | true  |  기존 칼럼 유지 여부

두번째로 사용할 Operator 는 RenameColumnOperator 입니다. 이 Operator 는 CSV의 특정칼럼 이름을 원하는 이름으로 변경해줍니다. 속성값을 아래와 같이 설정합니다.

field  |value   | 설명
--|---|--
existingName  | species | 기존 칼럼 이름
newName  | label  |  새로운 칼럼 이름

위 두 과정을 거치게 되면, 1) `sepal_length,sepal_width,petal_length,petal_width` 총 4개의 칼럼을 Vectorize 한 칼럼이 "features" 라는 이름으로 생성되고, 2) `species` 라는 이름을 가졌던 칼럼이 `label` 이라는 이름의 칼럼으로 변경됩니다.

### 워크플로우 완성 화면

아래 그림은 위 과정을 거쳐 완성된 워크플로우 화면입니다.

![워크플로우 완성 화면](images/2.7.3_workflow.png)

## 워크플로우 실행 및 모니터링하기

### 워크플로우 실행하기
위에서 작성한 워크플로우를 실행하기 위해서는 워크플로우 편집기 상단의 실행버튼  (<span style="color:#778899">&#9654;</span>)을 누릅니다. 이 예제의 엔진은 배치형태로 실행되므로 "Batch" 체크박스를 체크하고 워크플로우를 제출해야합니다.

![Batch 체크](images/2.7.3_run_workflow.png)

### 워크플로우 모니터링 하기

#### 워크플로우 상태 확인
KSB 웹툴킷 상단 "Monitoring" 메뉴의 "Workflow" 탭에서 작성한 워크플로우의 상태를 확인할 수 있습니다. 이 화면에서 실행 중인 워크플로우를 종료(<span style="color:red">&#9724;</span>)할 수 있으며, 종료된 워크를로우를 다시 실행(<span style="color:#6698FF">&#9654;</span>)할 수도 있습니다.

![워크플로우 동작 상태 확인](images/2.7.3_monitor.png)

#### 워크플로우 로그 보기
위 화면에서 "WorkFlow History" 탭을 선택하면, KSB 프레임워크가 수행한 워크플로우들의 목록 및 각각의 로그 (목록 최우측의 <b><span style="color:#6698FF">i</span></b> 버튼 클릭)를 확인할 수 있습니다.

![워크플로우 히스토리](images/2.7.3_history.png)

##  변환된 Parquet 파일 확인하기
실행결과물은 KSB 웹툴킷 상단의 "Repository" 메뉴에서 확인할 수 있습니다. 먼저 "applications" 폴더 안의 워크플로우 ID 폴더로 들어갑니다 (워크플로우 ID는 Monitoring 메뉴에서 확인 가능). 해당 경로안에 "output" 폴더가 생성되어 있고 FileWriter 에서 설정한 "dataset/input/iris.parquet" 파일이 생성되어 있으면 워크플로우가 성공적으로 수행된 것입니다. "iris.parquet" 파일 내부는 "Text 결과 파일 보기"를 클릭해 확인할 수 있습니다 (아래 그림 참조).

![결과확인](images/2.7.3_output.png)

<b>참고</b>: 생성된 파일은 parquet 파일로 일반 텍스트 형태가 아닙니다. 따라서 제대로 된 내용확인을 위해서는 Spark 프로그래밍이 필요합니다 (https://spark.apache.org/docs/latest/sql-programming-guide.html#parquet-files).