我有一个关于Apache的唯一查询。我使用apache导入工具将数据导入到我的HDFS文件中。
下一个,。我需要使用Hadoop (Sqoop)将数据放回另一个数据库(基本上是从一个数据库供应商到另一个数据库供应商)。
要将数据放入Server,有两个选项。
1)使用Sqoop导出工具连接到我的RDBMS (SQL server),并直接导出数据。
2)使用copyToLocal命令将HDFS数据文件(以CSV格式)复制到本地机器,然后对这些CSV文件执行BCP (或大容量插入查询),将数据放入SQL server数据库。
我想了解哪一种方法是完美的(或者更准确地说是正确的),以及哪一种方法比这两种方法更快--从HDFS到RDBMS的批量插入或Apache导出。??
除了上面提到的这两种方式之外,还有其他方法可以更快地从一个数据库供应商转移到另一个数据库供应商吗?
我正在使用6-7个映射器(要传输的记录大约有2000万到2500万)。
如果我的问题不清楚,请提出建议,并告知我。
提前谢谢。
发布于 2014-06-14 06:58:13
如果您所做的只是从一个供应商到另一个供应商的ETL,那么通过Sqoop/HDFS是一个糟糕的选择。如果数据来源于HDFS或打算留在HDFS中,Sqoop是非常有意义的。如果集合太大,需要在转换阶段使用一个大型集群,我也会考虑sqoop。但是仅仅有2500万的记录是不值得的。
使用Server导入,必须在大型导入时实现最小测井,这需要批量插入。尽管25mil的大小不足以使bulk选项成为命令式,但AFAIK或sqoop2仍然不支持对Server的批量插入。
我建议改用SSIS。它比sqoop成熟得多,它有大容量插入任务和丰富变换特征复位。您的小导入在SSIS所能处理的大小范围内。
https://stackoverflow.com/questions/24217363
复制相似问题