最近在搞sqoop的导入导出操作。但是今天遇到一个表数据量特别大。我们想通过sqoop的导入功能对数据进行导入,但是从oracle当中导入数据的时候,如果是需要平行导入的话必须使用--split-by,也就是设置map的数量。
一种就是不指定--split-by(切分的字段)直接使用一个map的形式就行导入操作。
我这张表的数据是40G,我将其用10个map进行导入,然后按照其中一个number类型的字段进行对数据进行切分。然后导入,导入的脚本如下:
#!/bin/bashurl="jdbc:oracle:thin:@172.16.250.10:1521:stupor"database="XD_CORE"tables=("report_residual_money_detail_fields")tables_num=${#tables[@]}username="qry_read"password="****"for((i=0;i
下面是我执行真个脚本的时候导入花费的时间。做了一个对比。
这里可以看出,原来是4个map导入数据,后面换成10个map导入数据。这里的导入时间虽然没有减少很多,但是时间还是减少了一些。
具体的原理参考下面的连接,这位老哥说的很不错:
https://blog.csdn.net/weixin_40137479/article/details/79117358