使用Process(“ <sqoop command =”“>”)在Scala中使用--query进行Sqoop命令!不工作

时间:2019-05-10 08:08:45

标签: scala shell apache-spark sqoop

我正在尝试使用Process("<sqoop command>").!在Scala shell上运行具有-query 选项的Sqoop命令,但是显示以下错误。

如果我使用-table 而不是-query ,它的作用就像是一种魅力。

但是根据我的要求,我需要使用-query

它给出的错误是:

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

预先感谢

以下代码可在Spark-Scala shell中正常运行。

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""").!    

但是当我通过-query 更改-table 时(并使用其中的任何基本查询,例如"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""").!  

1 个答案:

答案 0 :(得分:0)

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