【问题标题】:Create Sqoop Hive Import Job创建 Sqoop Hive 导入作业
【发布时间】:2019-03-05 14:05:03
【问题描述】:

我使用 Sqoop 成功地将 oracle 表的临时导入到 Hive 表中。现在我想使用我用于临时导入的确切参数创建并保存一个 Sqoop 作业。

但如果我说:

sqoop job --create myjob --import \ --connect jdbc:mysql://host.port/foo \ --username myUserName \ --password-file file:///myfile.pwd \ --table mytable \ --create-hive-table \ --hive-import \ --hive-database my_hive_db \ --hive-table my_hive_table \ --fields-terminated-by '|' \ --hive-drop-import-delims \ --m 1

我得到一个错误:

19/03/05 14:56:41 ERROR tool.BaseSqoopTool: Error parsing arguments for job: 19/03/05 14:56:41 ERROR tool.BaseSqoopTool: Unrecognized argument: --import 19/03/05 14:56:41 ERROR tool.BaseSqoopTool: Unrecognized argument: --connect 19/03/05 14:56:41 ERROR tool.BaseSqoopTool: Unrecognized argument: jdbc:mysql:@host:port/foo 如果我删除所有 \ 它仍然不起作用。

如何使用 Hive 导入的所有必要参数定义 Sqoop 作业?

【问题讨论】:

    标签: hadoop import hive sqoop hive-table


    【解决方案1】:

    您在--import 之间缺少space

    试试下面的语法:

    sqoop job --create myjob  -- import \
    --connect jdbc:mysql://host.port/foo \
    --username myUserName \
    --password-file file:///myfile.pwd \
    --table mytable \
    --create-hive-table \
    --hive-import \
    --hive-database my_hive_db \
    --hive-table my_hive_table \
    --fields-terminated-by '|' \
    --hive-drop-import-delims \
    --m 1 
    

    【讨论】:

      【解决方案2】:

      似乎是一个 bash 转义问题。行尾后面的“\”字符后面不应有空格。你可以看到额外的空格:

      cat -A sqoop_script.sh 
      

      【讨论】:

      • 不确定它是否是间距,但在这种情况下,您可能还想在 --import 之前检查双空格,并最初考虑删除换行符和斜杠,然后将所有内容放在 1 行查看如果命令正常工作。
      【解决方案3】:

      不确定您提供的示例是否错误,但我总是使用稍微不同的语法,其中 import 不是作业中的标志。

      对于documentation,这两种语法对我来说似乎很熟悉:

      sqoop import (generic-args) (import-args)
      sqoop-import (generic-args) (import-args)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-08-07
        • 2017-02-03
        • 1970-01-01
        • 1970-01-01
        • 2016-04-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多