本节主要对于100M以上的csv大数据文件高效导入到es中提供一种解决方案.
fastcsv
FastCSV是基于Java语言的超快速和简单的CSV库,RFC 4180兼容,项目许可为Apache2.0版.
该项目的性能与opencsv及 Super CSV等项目基准测试相比,有如下参考(来自FastCSV项目的自主测试,本人并未验证):
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wfzT8Z3C-1615126373613)(http://res.limuqiao.com/images?imageName=tech.Tech-bigdata-elasticsearch-dscsv-benchmark.png)]
使用该项目请在maven项目中使用以下依赖
<dependency>
<groupId>de.siegmar</groupId>
<artifactId>fastcsv</artifactId>
<version>1.0.3</version>
</dependency>
elasticsearch客户端
将数据传送给elasticsearch,其操作也需要es的java客户端的依赖包
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>6.6.2</version>
</dependency>
关键代码
- CSV文件的读取
File file = new File("foo.csv");
CsvReader csvReader = new CsvReader();
csvReader.setContainsHeader(true);
CsvContainer csv = csvReader.read(file

本文介绍了如何利用FastCSV库快速读取大型CSV文件,并通过Elasticsearch的Java High-Level REST Client进行批量处理,提高数据导入效率。文中详细展示了关键代码,包括CSV文件的读取、Elasticsearch的bulkProcessor设置,以及针对大文件读取的内存优化建议。
最低0.47元/天 解锁文章
1610





