sqoop导入多个表

Dan*_*all 7 hadoop hive hdfs sqoop

我们正在使用Cloudera CDH 4,并且能够按预期将表从Oracle数据库导入到HDFS仓库中。问题是我们的数据库中有成千上万个表,而sqoop只支持一次导入一个表。

哪些选项可用于将多个表导入HDFS或Hive?例如,一次将200个表从oracle导入到HDFS或Hive的最佳方法是什么?

到目前为止,我看到的唯一解决方案是为每个表导入创建一个sqoop作业,然后分别运行它们。由于Hadoop设计用于处理大型数据集,因此似乎应该有更好的方法。

小智 5

您可以使用“import-all-tables”选项一次将所有表加载到 HDFS 中。

sqoop import-all-tables --connect jdbc:mysql://localhost/sqoop --username root --password hadoop  --target-dir '/Sqoop21/AllTables'
Run Code Online (Sandbox Code Playgroud)

如果我们想排除一些表加载到 hdfs 中,我们可以使用“--exclude-tables”选项

前任:

sqoop import-all-tables --connect jdbc:mysql://localhost/sqoop --username root --password hadoop  --target-dir '/Sqoop21/AllTables'  --exclude-tables <table1>,<tables2>
Run Code Online (Sandbox Code Playgroud)

如果我们想存储在指定的目录中,那么你可以使用“--warehouse-dir”选项

前任:

sqoop import-all-tables --connect jdbc:mysql://localhost/sqoop --username root --password hadoop --warehouse-dir '/Sqoop'
Run Code Online (Sandbox Code Playgroud)


Jit*_*t B 4

  1. 假设每个表的 sqoop 配置相同,您可以列出需要导入的所有表,然后迭代它们以启动 sqoop 作业(理想情况下异步启动它们)。您可以运行以下命令从 Oracle 获取表列表: SELECT owner, table_name FROM dba_tables 参考

  2. Sqoop 确实提供了导入所有表的选项。检查此链接。但也有一些限制。

  3. 修改sqoop源代码并根据您的需要重新编译。sqoop 代码库有很好的文档记录并且安排得很好。