sqoop导出到sql server与大容量插入到sql server

7gyucuyw  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(430)

我有一个关于apachesqoop的独特查询。我已经使用apachesqoop导入工具将数据导入到hdfs文件中。
下一步,。我需要使用hadoop(sqoop)将数据放回另一个数据库(基本上我正在执行从一个数据库供应商到另一个数据库供应商的数据传输)。
要将数据放入sql server,有两个选项。
1) 使用sqoop导出工具连接到我的rdbms(sqlserver)并直接导出数据。
2) 使用copytolocal命令将hdfs数据文件(csv格式)复制到本地计算机,然后对这些csv文件执行bcp(或大容量插入查询)以将数据放入sqlserver数据库。
我想知道哪种方法是最完美的(或者更准确地说是正确的)方法,以及哪种方法比这两种方法更快——从hdfs到rdbms的批量插入或apachesqoop导出??
除了上面提到的这两种方法之外,还有其他方法可以更快地从一个数据库供应商传输到另一个数据库供应商吗。?
我使用6-7个Map器(要传输的记录约为2000-2500万)
如果我的问题不清楚,请建议并告知我。
提前谢谢。

zkure5ic

zkure5ic1#

如果您所做的只是从一个供应商到另一个供应商的etl,那么使用sqoop/hdfs是一个糟糕的选择。如果数据源于hdfs或打算留在hdfs中,sqoop就非常有意义。如果集合如此之大,足以保证在转换阶段有一个大型集群,我也会考虑sqoop。但是仅仅2500万张唱片是不值得的。
使用SQLServerImport,对于大型导入,必须实现最少的日志记录,这需要大容量插入。尽管2500万不足以使批量选项成为必需,但仍然有一个sqoop或sqoop2不支持sqlserver的批量插入。
我建议改为ssis。它比sqoop成熟得多,它具有批量插入任务和丰富的转换特性集。您的小导入在ssis可以处理的大小范围内。

相关问题