python—使用sqoop并行导入oracle表的最佳方法是什么?

k75qkfdt  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(583)

我使用sqoop将oracle表导入hdfs。
我有大约50个表要导入,在50个表中有10-15个表太大(大约50gb)。
这是我第一次希望将它们作为一个完整的负载导入,之后我将只导入增量数据。
目前我已经准备了两个shell脚本作为follows:- 1. 完全转储脚本(每天需要完全转储)2。用于增量数据的脚本(因为我已经完全转储了,现在它将只获取增量数据)。
我把这两个剧本安排在一个特定的时间,比如早上7点。
两个脚本都运行得很好,但正如您所看到的,它只会并行执行两个sqoop作业。
但是我想一次启动4个sqoop作业来获得更多的并行性。
那么我如何通过并行执行两个以上的sqoop作业来实现更多的并行性呢。
任何有关这方面的帮助都将不胜感激。
这是我的贝壳样本scripts:-

  1. sqoop job --exec sqoop_job1
  2. sqoop job --exec sqoop_job2
0h4hbjxa

0h4hbjxa1#

apacheoozie是一个编排工具,它可以帮助您根据需要顺序或并行地运行作业。如果您安装了apacheoozie,您可以尝试一下。它有一个针对sqoop的操作,您不需要通过shell脚本。oozie具有工作流或编排工具的所有特性,如重新运行或如果满负荷无法停止一切等
定义如何运行多个作业的示例workflow.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <workflow-app xmlns="uri:oozie:workflow:0.2" name="sqoop-wf-fork-example">
  3. <start to="sqoop-wf-fork"/>
  4. <fork name="sqoop-wf-fork">
  5. <path start="sqoop-categories"/>
  6. <path start="sqoop-customers"/>
  7. </fork>
  8. <action name="sqoop-categories">
  9. <sqoop xmlns="uri:oozie:sqoop-action:0.2">
  10. <job-tracker>${jobTracker}</job-tracker>
  11. <name-node>${nameNode}</name-node>
  12. <configuration>
  13. <property>
  14. <name>mapred.job.queue.name</name>
  15. <value>${queueName}</value>
  16. </property>
  17. </configuration>
  18. <command>import --connect jdbc:mysql://localhost:3306/retail_db --username root --password cloudera --table categories --driver com.mysql.jdbc.Driver --delete-target-dir --m 1</command>
  19. </sqoop>
  20. <ok to="joinActions"/>
  21. <error to="fail"/>
  22. </action>
  23. <action name="sqoop-customers">
  24. <sqoop xmlns="uri:oozie:sqoop-action:0.2">
  25. <job-tracker>${jobTracker}</job-tracker>
  26. <name-node>${nameNode}</name-node>
  27. <configuration>
  28. <property>
  29. <name>mapred.job.queue.name</name>
  30. <value>${queueName}</value>
  31. </property>
  32. </configuration>
  33. <command>import --connect jdbc:mysql://localhost:3306/retail_db --username root --password cloudera --table customers --driver com.mysql.jdbc.Driver --delete-target-dir --m 1</command>
  34. </sqoop>
  35. <ok to="joinActions"/>
  36. <error to="fail"/>
  37. </action>
  38. <join name="joinActions" to="end-wf"/>
  39. <kill name="fail">
  40. <message>Sqoop failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
  41. </kill>
  42. <end name="end-wf"/>
  43. </workflow-app>
展开查看全部

相关问题