我正在开发一个每天处理大数据(大小约3TB)的项目。我们的数据管道的第一阶段使用名为freebcp
的工具将数据从MS-SQL Server复制到主机(Linux服务器)。关于freebcp的更多信息是here
使用Linux服务器上的这个工具,我们在SQL Server上运行一组存储过程并导出数据并批量传输。最近我观察到,如果数据很大(~200GB),数据传输会在一段时间后停滞不前。我运行了几个命令(sp_who2
和dbcc inputbuffer(spid)
)来监视SQL服务器上存储过程的执行情况。我们观察此过程使用的CPU时间和磁盘IO。如果这几分钟没有改变,我们假设作业停止,并手动终止这些存储过程以继续我们的数据处理任务。
这种数据拷贝停止的可能原因是什么?
有没有更好的方法将数据从SQL服务器批量复制到linux主机?可能是freebcp的替代品。在此之后,我们将这些数据加载到hadoop文件系统中运行我们的map reduce任务。
答案 0 :(得分:1)
如果未阻止对BCP源的SELECT
查询,则可能导致停顿的原因是客户端消耗结果时出现问题。
您是否考虑过免费SQL Server ODBC Driver for Linux?这包括BCP命令行实用程序。