sqoop命令with--scala中使用进程(“< sqoop command>”)进行查询!不起作用

6l7fqoea  于 2021-06-03  发布在  Sqoop
关注(0)|答案(1)|浏览(274)

我正在尝试运行一个sqoop命令,在scala shell上使用--query选项 Process("<sqoop command>").! 但它显示了下面描述的一个错误。
如果我使用--table而不是--query,它就像一个符咒。
但是对于我的需求,我需要使用--query。
它给出的错误是:

ERROR tool.BaseSqoopTool: Error parsing arguments for import:  
ERROR tool.BaseSqoopTool: Unrecognized argument: *  
ERROR tool.BaseSqoopTool: Unrecognized argument: from

等。
提前谢谢
下面的代码在sparkscalashell中正常工作。

Process("""sqoop import <queuename> --connect <connection-string-db2> -- 
    username <username> --password <password> --table "<database.table>" -- 
    target-dir <target directory> --delete-target-dir --fields-terminated-by 
    '\\001' --lines-terminated-by '\\n' --null-string '\\\\N' --null-non- 
    string '\\\\N' --hive-drop-import-delims -m 1""").!

但是当我改变——逐表——查询(并使用其中的任何基本查询,例如。 "SELECT * FROM DATABASE.TABLE" ),它不起作用。。。以下是不起作用的命令:

Process("""sqoop import <queuename> --connect <connection-string-db2> -- 
    username <username> --password <password> --query "SELECT * FROM 
    DATABASE.TABLE AND \$CONDITIONS" --target-dir <target directory> -- 
    delete-target-dir --fields-terminated-by '\\001' --lines-terminated-by 
    '\\n' --null-string '\\\\N' --null-non-string '\\\\N' --hive-drop- 
    import-delims -m 1""").!
c86crjj0

c86crjj01#

我认为您需要在--query之后转义双引号。

相关问题