csv 파일 양식이 다음과 같이 되어있다.

category, language, year

data1, data2, data3

 

 

 

Google Cloud Storage 에서 저장되어 있는 CSV 파일을 읽어서

category language year 순으로 되어 있는 데이터를 가공해서 처리할건데 

 

첫번째) 

{ category : { language : 횟수, language : 횟수 } } 저장할 생각입니다.

 

두번째)

{ category : { year : language, year : language } }, 단 여기서 language 상태에서 중복을 발생시키면 데이터 사이즈가 커지므로 포함 여부를 살펴보고 존재하지 않으면 넣지 않을 생각입니다.

 

첫번째 아이디어 구체화)

IoT, 'c, c++, python', 2015 한 줄을 형성하는데 , 가 두개 있다는 사실을 인지하면

0 1 2 

3 4 5

6 7 8 

9 10 11 

12 13 14 

15 ...

[ 0, 3, 6, 9, 12, 15 ... ] 위치에 category 가 들어가는 패턴을 확인할 수 있었습니다.

     

for word in text.split(self.delimiter):
     print(i)
     i = i+1
     pre_processing.append(word)

 

실제로 , 를 기준으로 자르는 Process 과정들을 pre_processing 이라는 list에 추가하였습니다.

이후에 dict 를 생성해 보겠습니다. 

{ category : { language : 횟수, language : 횟수 } }

-> { language : 횟수, language : 횟수 } 를 category dict를 먼저 만든후에 append 하는 방법으로 진행

{ category : { year : language, year : language } } 

-> {year : language } (단, 중복 X ), language String에 모두 포함시키고 wordcount 를 수행해서 year에 어떤 언어가 어떤 횟수를 가지고 있는지 파악해야 할것 같다.

최종적으로 { category : { year : { language : 횟수 } } 나올것 이다.

 

만든 후에 일반 CSV 형태로 만드는것을 목표로 진행합니다.

 

ㅡ. dataflow 에서 csv 파일 불러올 때(참고)

일반적인 csv 파일을 dataflow에서 분석했을때 

category, language, year 

web, c c++ java, 2015 

한 줄씩 한 파일로 나왔다. 

gs:// 에서 읽어올 때 한줄을 문자열로 읽어온다.

 

Partition 해서 언어 별로 분류 할 수 있다. 

 

combinePerKey 개수 셀때 용이할 수 있다.