繁体   English   中英

VerticaCopyStream非常慢

[英]VerticaCopyStream is very slow

我使用vertica flex table将json加载到vertica而不定义表,并且我的加载时间出现问题。

我使用jdbc驱动器连接到vertica,然后使用此代码。

String copyQuery = "COPY schema.tablename FROM STDIN PARSER fjsonparser()";
VerticaCopyStream vstream = new VerticaCopyStream((VerticaConnection)conn, copyQuery);
InputStream input;
vstream.start();
for(JsonNode json : jsonList){
     input = new ByteArrayInputStream(json.toString().getBytes());
     vstream.addStream(input);
     input.close();
}
vstream.execute();
vstream.finish();

命令“ vstream.execute()”花费5000秒JSON需要12秒,但是当我从文件中使用COPY命令时,它会运行不到一秒钟。

您的问题不在于VerticaCopyStream,而是与您使用的不同解析器有关,您需要将apple与apple进行比较,JSON解析器应比简单CSV解析器更慢。

如果您通过使用vsql运行samr插入,它将解决问题

来自客户端的COPY FROM STDINCOPY LOCAL流数据。 仅使用COPY (没有LOCAL或STDIN)在服务器上运行它,将直接从vertica守护程序直接加载,而没有网络延迟(假设它在本地磁盘上,而不在NAS上)。

另外,您重新实例化ByteArrayInputStream的方法...将您的jsonList转换为InputStream并将其仅传递给输入而不是为每个项目创建输入流是否更好?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM