kaggle usage
Data-visualizer: CSV file -> ElasticSearch에 저장, 단 100MB 이하의 파일에 대해서만 사용가능 - csv 파일을 visualizer를 사용하면 무난하게 넣을 수 있지만, 들어간 데이터가 [] 형태여야 하는데 json 이라던지 하는 등 분석에 장애를 주는 데이터 형식은 logstash를 활용해 교정한다.
data flow:
kaggle(csv) -> data-visualizer
kaggle(csv) -> logstash(ruby,csv filter) -> elasticSearch(indexMapping,indexTemplate) -> kibana
logstash를 통해 csv 파일 전처리를 할 때, ruby 플러그인을 사용하면 로그스태시 내부에서 각 이벤트를 처리할 때 get,set함수를 통해 필드값을 읽고 변경할 수 있다.
logstash pipeling input { file { path => “C:/Users/leeseungyeup/Desktop/archive/tmdb_5000_movies.csv” start_position => “beginning” sincedb_path => “nul” } }
filter { csv { separator => “,” columns => [“budget”,”genres”,”homepage”,”id”,”keywords”,”original_language”,”original_title”,”overview”,”popularity”,”production_companies”,”production_countries”,”_release_date”,”revenue”, “runtime”,”spoken_languages”,”status”,”tagline”,”title”,”vote_average”,”vote_count”] remove_field => [“message”,”production_companies”,”production_countries”,”keywords”,”spoken_languages”,”@timestamp”,”path”,”@version”,”host”] skip_header => true }
1
2
3
4
5
6
7
8
9
10
11
12
13
date {
match => ["_release_date", "YYYY-MM-DD"]
target => "release_date"
timezone => "UTC"
remove_field => "_release_date"
}
ruby {
code => "
genres = JSON.parse( event.get('genres')).map{ |genre| genre['name'] }
event.set('genres', genres)
"
} }
output { elasticsearch { index => “tmdb_5000_movie2” } }
index_template을 사용해 매핑하면 설정이 동일한 복수의 인덱스를 만들 때 유리하다.