본문 바로가기

프로젝트/여행지 오픈 API

[ElasticSearch, LogStash] LogStash로 csv 파일 적재

목차

    로그스태시란?

    로그는 표준화되지 않은 임의의 데이터 뭉치들이라고 할 수 있다.

    이러한 데이터들을 수집하는 과정에서 형태를 분석하고, 시스템에서 인식해서 저장할 수 있도록 정제하는 작업을 편리하게 지원한다.

     

     

    이전 게시글에서 로그스태시를 설치하였다.

    https://csg1353.tistory.com/35

     

    [ElasticSearch] Nori 분석기, 오타 보정(fuzzy), 로그스태시(logStash)

    노리 분석기 레퍼런스1 : https://esbook.kimjmin.net/06-text-analysis/6.7-stemming/6.7.2-nori 6.7.2 노리 (nori) 한글 형태소 분석기 - Elastic 가이드북 이번 장에서는 elasticsearch가 데이터를 저장하는 색인 과정에서

    csg1353.tistory.com

     

    로그스태시를 통해 csv파일을 적재해보자.

     

    파일 적재

    자세한 적재 방법은 개인정보 문제로 Notion에 기술한다. 여기서는 사용 방법만 작성하였다.

     

    scp -i [Your-PrivateKey.pem] [Your-Local-File] ec2-user@[Your-Instance-IP]:[Your-Server-Directory]
    
    //실제 사용 예시
    scp -i your-key.pem example.txt ec2-user@[Your-Instance-IP]:~

     

     

    Config 파일 작성

    Logstash 작동을 정의하는 configuration 파일을 작성한다.

     

    # 로그스태시 Config
    # mutate 함수는 동적 매핑이 아닌 임의의 숫자 자료형으로의 변경을 위해 작성하였음.
    input {
      file {
        path => "/home/ubuntu/csvFiles/test.csv" # 여기에 실제 CSV 파일 경로를 입력
        start_position => "beginning"
        sincedb_path => "/dev/null"
      }
    }
    
    filter {
      csv {
    # 분리자는 csv파일이기에, ','로 하도록 한다.
          separator => "," 
          columns => ["id","accommodation_name","accommodation_type","accommodation_addr","accommodation_score","accommodation_pic","accommodation_price","accommodation_lat","accommodation_lng"]
      }
    # 현재 숫자 값에 파싱데이터 ',' 가 포함되어 있어 임시 취소 처리 (100000이 아닌 100,000 이렇게 되어있음)
    #  mutate {convert => ["accommodation_score", "float"]}
    #  mutate {convert => ["accommodation_price", "integer"]}
    #  mutate {convert => ["accommodation_lat", "float"]}
    #  mutate {convert => ["accommodation_lng", "float"]}
    }
    
    output {
      elasticsearch {
        hosts => ["localhost:9200"]
        index => "test_logstash_accommodations"
      }
    }

    해당 config파일을 logstash.config로 만들고, 기본 디렉토리의 csvFiles에 보관했다.

     

    /usr/share/logstash/bin/logstash -f /home/ubuntu/logstash/logstash.conf

    해당 명령어로 로그스테시를 실행하자. (절대 경로를 사용해야 한다.)

    중간에 에러가 있었는데, /usr/share/logstash/data 쓰기 권한이 없는 경우가 있었다.

    이 경우 해당 명령어로 권한을 추가해주어야 한다.

     

    sudo chmod -R 777 /usr/share/logstash/data

     

     

    파싱 불가 이슈

     

    .csv파일은 일반적으로 ',' 로 쉼표 구분한다. 그런데 우리의 데이터셋에는 ','가 자주 사용되어 파신 과정에서 에러가 나는 것 같다.

     

    따라서 구분자를 쉼표가 아닌 커스텀 구분자를 사용해야 할 듯 하다.

     

    https://learnandcreate.tistory.com/560

     

    엑셀에서 저장한 csv의 구분기호 변경하기

    엑셀에서 저장한 csv의 구분기호 변경하는방법 csv는 쉼표(comma)를 기준으로 항목을 구분하여 저장한 데이터 형식이다. 기본적으로 쉼표로 설정되어있는 구분 문자(delimiter)를 사용자 지정할수있

    learnandcreate.tistory.com

     

    따라서, '|||' 로 구분을 하고자 한다.