유 니 버 시 티-parsers:강력 한 CSV/TSV/넓 은 텍스트 파일 분석 라 이브 러 리(자바)
6475 단어 자바
다른 분석 라 이브 러 리 와 달리 유 니 버 시 티-parsers 는 고성능,확장 가능 을 출발점 으로 자체 구 조 를 설계 했다.이 구 조 를 바탕 으로 개발 자 는 새로운 파일 해석 기 를 구축 할 수 있 습 니 다.
1.개술
자바 개발 자로 서 저 는 현재 웹 프로젝트 개발 에 참여 하고 있 습 니 다.이 프로젝트 는 통신 운영 자가 현재 의 네트워크 를 평가 하고 해결 방안 을 제시 하 는 데 도움 을 주 고 있 습 니 다.이 프로젝트 에서 CSV 파일 은 운영 자 네트워크 데이터 의 적재 형식 으로 광대 역 사용자 의 실시 간 온라인 상태(온라인/오프라인)와 실시 간 데 이 터 를 포함한다.일반적으로 하나의 CSV 파일 은 수백 만 개의 기록 을 포함 하여 1GB 이상 에 이 를 수 있다.프로젝트 가 현재 사용 하고 있 는 CSV 분석 라 이브 러 리 는
JavaCSV 。
사업 자의 네트워크 규모 가 확장 되 고 시스템 모니터링 주기 가 늘 어 나 면서 CSV 파일 이 빠르게 커 졌 다.프로젝트 팀 은 초대형 CSV 데이터 분석 에 따 른 성능 문제(심지어 초 단위 의 분석 효율 포함)와 업무 변화 에 따 른 기능 확장 이 제 한 된 문 제 를 해결 해 야 한다.
여러 차례 의 테스트 와 분석 을 거 쳐 우 리 는 최종 적 으로 채용 을 확정 하 였 다.
uniVocity-parsersCSV 파일 분석 라 이브 러 리 로 서 실천 한 결과 우리 의 문 제 를 해결 한 것 이 확실 하 다.더 좋 은 성능 과 확장 성 을 제외 하고 이 라 이브 러 리 는 개발 자 에 게 간결 하고 알 기 쉬 운 API,개발 문서 와 튜 토리 얼 을 제공 합 니 다.고급 기능 확장 요구 에 대해 정부 에서 대응 하 는 유 료 서 비 스 를 제공한다.
프로젝트 관리
Github에 서 는 지금까지 63 개의 스타 와 8 개의 포크 가 있다.할 수 있다,...
여기,이곳와
여기,이곳관련 개발 문서 와 튜 토리 얼 을 찾 아 도 됩 니 다.
여기,이곳더 많은 예 와 뉴스 를 찾 아 라.
주목 할 점 은 Apache 커 뮤 니 티 의 유명한 오픈 소스 프로젝트 인 Apache Camel 도 유 니 버 시 티-parsers 를 통합 하여 CSV/TSV/정 폭 텍스트 파일 을 분석 하 는 추천 라 이브 러 리 로 삼 았 다.더 많은 정보 보기
여기,이곳 。
2.설치
저희 프로젝트 팀 은 지금 사용 하고 있 습 니 다.
1.5.1 버 전,이동 추천
유 니 버 시 티-parsers 공식 사이트최신 버 전 을 다운로드 합 니 다.
이 프로젝트 는 Maven 의 중심 창고 에 발표 되 었 기 때문에 pom.xml 에 다음 코드 를 직접 추가 할 수 있 습 니 다.
<dependency>
<groupId>com.univocity</groupId>
<artifactId>univocity-parsers</artifactId>
<version>1.5.1</version>
</dependency>
3.특성 소개
유 니 버 시 티-parsers 는 일련의 강력 한 기능 을 제공 하여 목록 식 데이터 에 대한 모든 처리 수 요 를 잘 만족 시 킬 수 있 습 니 다.다음 도표 에서 일부 관건 적 인 기능 을 보 여 주 었 다.
4.리스트 데이터 읽 기
CSV 의 모든 줄 읽 기
CsvParser parser = new CsvParser(new CsvParserSettings());
List<String[]> allRows = parser.parseAll(getReader("/examples/example.csv"));
파일 쓰기 와 관련 된 모든 기능 을 보 려 면 이동 하 십시오:
https://github.com/uniVocity/univocity-parsers#reading-csv
5.목록 데이터 쓰기
2 줄 코드 만 있 으 면 CSV 형식의 데 이 터 를 기록 할 수 있 습 니 다.
List<String[]> rows = someMethodToCreateRows();
CsvWriter writer = new CsvWriter(outputWriter, new CsvWriterSettings());
writer.writeRowsAndClose(rows);
파일 쓰기 와 관련 된 모든 기능 을 보 려 면 이동 하 십시오:
https://github.com/uniVocity/univocity-parsers/blob/master/README.md#writing
6.성능 과 확장 성
유 니 버 시 티-parsers 와 자바 CSV 의 테스트 대비 표를 비교 해 보 겠 습 니 다.
파일 크기
자바 CSV 분석 시간 소모
uniVocity-parsers 분석 시간 소모
10MB,145453 줄
1138ms
836ms
100 MB,809008 줄
23s
6s
434 MB,4499959 줄
91s
28s
1GB,23803502 줄
245s
70s
...에 있다
여기,이곳거의 모든 CSV 분석 라 이브 러 리 의 성능 비교 분석 표를 볼 수 있 는데 표 에서 유 니 버 시 티-parsers 가 절대적 인 우세 로 다른 라 이브 러 리 를 앞서 고 있 음 을 알 수 있다.
유 니 버 시 티-parsers 의 성능 과 유연성 측면 에서 의 장점 은 다음 과 같은 디자인 과 체제 덕분이다.
유 니 버 시 티-parsers 에 서 는 일부 핵심 데이터 처리 모듈 이 있 는데 그들 은 데 이 터 를 줄 별로 읽 고 쓰 며 열 별로 읽 고 쓰 며 행렬 데이터 의 전환 을 책임 집 니 다.다음은 이 핵심 모듈 의 관계 도 입 니 다.
Row Processor 인 터 페 이 스 를 실현 하거나 현 류 를 계승 하여 자신의 데이터 처리 모듈 을 개발 할 수 있 습 니 다.다음 코드 에서 저 는 간단 한 내부 익명 류 를 통 해 데이터 처리 모듈 을 개 발 했 습 니 다.
CsvParserSettings settings = new CsvParserSettings();
settings.setRowProcessor(new RowProcessor() {
StringBuilder stringBuilder = new StringBuilder();
/**
* , 。
**/
@Override
public void processStarted(ParsingContext context) {
System.out.println("Started to process rows of data.");
}
/**
* ,
**/
@Override
public void rowProcessed(String[] row, ParsingContext context) {
System.out.println("The row in line #" + context.currentLine() + ": ");
for (String col : row) {
stringBuilder.append(col).append("\t");
}
}
/**
* , 。
**/
@Override
public void processEnded(ParsingContext context) {
System.out.println("Finished processing rows of data.");
System.out.println(stringBuilder);
}
});
CsvParser parser = new CsvParser(settings);
List<String[]> allRows = parser.parseAll(new FileReader("/myFile.csv"));
유 니 버 시 티-parsers 라 이브 러 리 가 제공 하 는 특성 은 이 뿐만 이 아 닙 니 다.저희 프로젝트 에서 큰 역할 을 했 기 때문에 더 알 아 보 는 것 을 추천 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.