Newer
Older
---
html:
toc: true
offline: true
export_on_save:
html: true
---
# CSV 파일 Parquet로 저장하기
---
이 예제에서는 CSV 자료를 Batch 형태로 입력받아 Parquet 파일로 저장하는 방법에 대해 설명합니다.
<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>을 사용하기 위해 필요한 입력자료 형태입니다.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
## 입력 데이터 준비하기
입력데이터는 헤더 정보를 포함하는 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">▶</span>)을 누릅니다. 이 예제의 엔진은 배치형태로 실행되므로 "Batch" 체크박스를 체크하고 워크플로우를 제출해야합니다.
![Batch 체크](images/2.7.3_run_workflow.png)
### 워크플로우 모니터링 하기
#### 워크플로우 상태 확인
KSB 웹툴킷 상단 "Monitoring" 메뉴의 "Workflow" 탭에서 작성한 워크플로우의 상태를 확인할 수 있습니다. 이 화면에서 실행 중인 워크플로우를 종료(<span style="color:red">◼</span>)할 수 있으며, 종료된 워크를로우를 다시 실행(<span style="color:#6698FF">▶</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).