2017-02-09 6 views
0

logstash를 사용하여 CSV 파일의 데이터를 구문 분석하고 elasticsearch로 푸시합니다. 600k 라인을 가진 사전을 가지고 있는데, 필드 중 하나를 값의 문자열에 매핑하는 키로 사용합니다. 내가 증가logstash에서 사전 번역 최적화

filter{ 
    csv { 
     source => "destinationField" 
     columns => ["col1","col2","col3"]    
     separator => "," 
     } 

} 

이 2 개 블록을 추가하는 결과를 사용하여 읽기하는

내 destinationField의 쉼표로 구분 된 문자열을 얻을
filter { 
     translate { 
      dictionary_path => "somepath" 
      field => "myfield" 
      override => false 
      destination => "destinationField" 
     } 
    } 

나는 현재 내가 필요한 것을 달성하기 위해이 같은 플러그인을 번역 사용하고 내 처리 시간은 3 배. 이전에 모든 데이터를 처리하고 푸시하는 데 1 분이 걸렸다면 이제는 작업을 완료하는 데 3 분이 걸립니다.

예상되는 동작입니까 (큰 사전입니까?)? 아니면이 코드를 더욱 최적화 할 수있는 방법이 있습니까?

+0

글쎄, 파이프 라인에 추가 처리 단계를 포함하면 처리 시간이 늘어날 것으로 예상 할 수 있습니다. – Val

+0

사실! 그러나 처리 시간이 3 배로 늘어나는 것은 많은 것으로 보인다. 이 문제를 해결할 더 최적화 된 방법이 있는지 궁금합니다. – Vignesh

+0

한 줄로 최대 10 배까지 확장 할 수 있습니다. 결국 그것은 필터가 어떻게 구현되는지에 달려 있습니다. 나는'csv'에 대해서 너무 걱정하지 않지만'translate '한 것을 조사하고 싶을지도 모른다. – Val

답변

0

csv 필터는 비쌀 수 있습니다. logstash-filter-augment이라는 플러그인을 작성하여 translate과 거의 동일하게 작동하지만 네이티브 CSV 문서를보다 잘 처리합니다. csv 필터가 아닌 실제 CSV를 사용하여 필드를 구문 분석 할 수 있습니다.

+0

감사! 나는 이것을 시도 할 것이다. 이것을 사용하면 두 개의 필터 블록을 사용하는 것보다 훨씬 깨끗해 보입니다. – Vignesh