在一个程序中,我做了类似的事情:
ResultSet rs = con.executeQuery(sql);
List l = new List();
while(rs.next()){
l.append(rs.getObject(xxx))
}
fileSys.write(l)
sql有10M记录。这个功能需要2小时才能完成。循环占用大部分时间。我想知道有更好的方法来做这件事吗?是否可以使用多线程?
答案 0 :(得分:1)
如果你必须通过网络从一个系统(SQL)到另一个系统(HDFS)移动大量数据(Giga Bytes),那么驱动复制的处理器中的线程(你的代码)将无济于事
1 您可以尝试在服务器上运行代码network throughput
2 您可以尝试仅复制自上次更改后的记录(HDFS尚未拥有该副本)。从长远来看,这将改善性能。第一次会很慢。第二次和第三次它会更快,因为你只移动已经改变的东西。使用UTC时间戳和"自"是基本概念