【问题标题】:Import the all tables from RDBMS using sqoop使用 sqoop 从 RDBMS 导入所有表
【发布时间】:2017-08-02 16:51:43
【问题描述】:

我正在尝试使用 sqoop 将数据从测试 mysql 数据库导入到 hadoop。但是有些表有主键,有些表没有主键。

$sqoop import-all-tables --connect jdbc:mysql://192.168.0.101/mysql -username test -P --warehouse-dir /home/user_all_tables

17/08/01 22:46:54 错误 tool.ImportAllTablesTool:导入期间出错: 找不到表 general_log 的主键。请明确说明 使用 --split-by 或使用 '-m 1' 执行顺序导入。

请建议我如何在 sqoop 命令行中使用 split by。

【问题讨论】:

    标签: hadoop sqoop sqoop2


    【解决方案1】:

    要使import-all-tables 工具有用,必须满足以下条件:

    • 每个表都必须有一个单列主键。
    • 您必须打算导入每个表的所有列。
    • 不得使用非默认拆分列,也不得通过 WHERE 子句强加任何条件。

    默认选项不适合非主键表,因此它不起作用。在这里,我将建议使用-m 1 选项来严格使用一个映射器进行导入。

    Sqoop 命令:

    import-all-tables --connect jdbc:mysql://192.168.0.101/mysql -username test \ 
    -P --warehouse-dir /home/user_all_tables -m 1
    

    【讨论】:

    • 谢谢桑迪普
    • 您可以尝试其他选项,而不是设置 -m 1 单个映射器。使用 --spilt-by 并指定具有唯一值的列。
    • @kumsgs - 是的!但在这种情况下,他必须调查所有非主键表以找出要使用 --split-by 指定的整数列
    • 然后所有非主键表都需要单独的 Sqoop 命令,因为表的整数列可能不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多