How to Run Pyro

Sebastian Kruse et al. – Efficient Discovery of Approximate Dependencies (VLDB 2018) 의 코드가 깃헙에 올라와있는 것을 확인했다. Usage가 불친절해서 간단하게 메모.

먼저 Pyro jar file을 다운받는다. Pyro를 비롯한 Tane등의 알고리즘의 구현과 의존 라이브러리들이 합쳐진 jar 파일이다.

Metanome CLI jar file를 다운받는다. Metanome은 GUI가 포함된 데이터 분석 툴인 것 같다. 그걸 커맨드 라인에서 쉽게 실행할 수 있도록 코어 부분만 따로 빼낸 깃 레포인 듯.


반드시 git-bash가 아닌 터미널로(e.g. cmd) 다음 명령어를 실행한다.

명령어를 하나 하나 까보자.

  1. java: 우리는 자바 프로그램을 실행하고 있다.
  2. -cp metanome-cli-1.1.0.jar;pyro-distro-1.0-SNAPSHOT-distro.jar: classPath를 명시한다. 위에서 다운받은 jar 파일들을 명시하면 된다. 만약 windows를 사용 중이라면 path를 ;로 구분해야하고, unix-like os를 사용 중이라면 path를 :로 구분하자. git-bash는 이 부분에서 이상동작하여 추천하지 않는다.
  3. de.metanome.cli.App: 실행시킬 main() 함수를 들고 있는 클래스
  4. --algorithm de.hpi.isg.pyro.algorithms.Pyro: main의 매개변수로 넘어가는 첫 번째 부분. App main 함수에서 실행시킬 알고리즘을 넣는다.
  5. --file-key inputFile: main의 매개변수로 넘어가는 두 번째 부분. 여기를 참고해서 넣었다.
  6. --inputs e:\data\nhis\NHIS_OPEN_GJ_2002.CSV: main의 매개변수로 넘어가는 세 번째 부분. 입력 CSV의 경로를 넣어주면 된다. 이 때 입력 CSV의 형식은 header-less로 넣어주면 된다.

stdout과 file output이 모두 존재한다. stdout에는 소요시간 등의 로그 데이터가 찍히고, file은 JSON형식으로 다음과 같은 포맷이 출력된다. (이 사이트에서 포맷팅 했다.)

UCC로 column1이 선택되었다고 나오는데, 곧 이 속성이 후보 키라는 것이다. 참고로 0부터 시작하는 인덱스이므로 왼쪽에서 두 번째 속성을 가리킨다. (csv 파일에서 왼쪽에서 첫 번째 속성은 2002 단일 값이라 후보키가 될 수 없음)

Leave a Reply