sqoop导出到sql server失败

时间:2014-03-26 10:44:46

标签: hadoop hive apache-pig sqoop

我试图将250万个数据(75个chararray列)从hdfs导出到sqlserver。它因以下错误而失败,

  

引起:java.io.IOException:com.microsoft.sqlserver.jdbc.SQLServerException:传入的表格数据流(TDS)远程过程调用(RPC)协议流不正确。此RPC请求中提供的参数太多。最高为2100。

然后我通过了"-D sqoop.export.records.per.statement=10"这个声明以及sqoop导出它工作但是它非常慢。加载250mb的数据需要15​​分钟。

无论如何我们可以改善表现。

以下是实际的sqoop cmd:

  

sqoop export -D sqoop.export.records.per.statement = 10 --connect' jdbc:sqlserver://199.198.165.191:1433; username = ; password = ;数据库=数据库' --table Facttable --columns DimDateID,DimQHourID,ETLMergedFileQHourlyNortelID,DimSWVersionID,DimFreqCellRelationID,OSSC_RC,SubNetwork1,SubNetwork2,MeContext,ENodeBFunction,EUtranCellFDD,EUtranFreqRelation,EUtranCellRelation,Time,GmtOffset,ffv,sn,st,vn,cbt,ts,neun ,nedn,NESW,MTS,GP,SF,pmHoExeAttLteInterF,pmHoExeAttLteIntraF,pmHoExeSuccLteInterF,pmHoExeSuccLteIntraF,pmHoPrepAttLteInterF,pmHoPrepAttLteIntraF,pmHoPrepSuccLteInterF,pmHoPrepSuccLteIntraF,Count_Null,Count_Negative,Count_Threshold,pmHoExeAttLteInterFLb,pmHoExeSuccLteInterFLb,pmHoOscInterF,pmHoOscIntraF,pmHoPrepAttLteInterFLb,pmHoPrepSuccLteInterFLb,pmHoPrepTNotAllowedLteInterF,pmHoPrepTNotAllowedLteIntraF,pmHoTooEarlyHoInterF ,pmHoTooEarlyHoIntraF,pmHoTooLateHoInterF,pmHoTooLateHoIntraF,pmHoWrongCellInterF,pmHoWrongCellIntraF,pmHoWrongCellReestInterF,pmHoWrongCellReestIntraF,pmLbQualifiedUe,pmZtemporary36,pmHoExeAttLteIntraFTuneOut,pmHoExeSuccLteIntraFTuneOut --export-DIR / Fact_Peg --direct -m 8 --input场终止逐&#34 ;," --input-lines-terminated-by" \ n&#34 ;;

"

2 个答案:

答案 0 :(得分:1)

批量插入是最快的方式。目前,SQOOP和SQL Server附带的默认驱动程序不支持批量插入。您可能想从DataDirect尝试第三方JDBC5驱动程序。

https://www.progress.co.uk/sitecore/content/Progress%20Root/Home/support-and-services/evaluation-support/support-matrices/jdbc-xe

答案 1 :(得分:0)

查看sqoop命令,指定8个映射器。首先,8可能太多,您的数据库无法同时处理。其次,这8位地图制作者没有按分配规范来平等地划分出口工作。我会删除-m 8参数并再次运行。它只有250mb,取决于您的群集它不应该花费很长时间。