在一个程序中,我做了一些类似的事情:
ResultSet rs = con.executeQuery(sql);
List l = new List();
while(rs.next()){
l.append(rs.getObject(xxx))
}
fileSys.write(l)sql有10M条记录。这个函数需要2小时才能完成。循环占用了大部分时间。我想知道有没有更好的方法来做这件事?可以使用多线程吗?
发布于 2014-07-12 16:20:33
如果您必须通过网络将大量数据(千兆字节)从一个系统(SQL)移动到另一个系统(HDFS),那么驱动复制的处理器(您的代码)中的线程将不会有多大帮助
1您可以尝试在具有更好network throughput的服务器上运行代码
HDFS 2您可以尝试仅复制自上次以来更改过的记录(HDFS尚无副本)。从长远来看,这将提高性能。第一次会很慢。第二次和第三次会更快,因为你只移动已经改变的东西。使用UTC时间戳和“更改时间”是基本概念
https://stackoverflow.com/questions/24665126
复制相似问题