我们在参数“ –query”中提供的选择查询失败。
命令 curl -u:-d用户名= -d命令=“导入--connect jdbc:sqlserver://:1433;数据库=-用户名-密码-查询\\” select \ * \\ from \\ MEDICAL_DEP_EMPS \\“-附加--target-dir adl://.azuredatalakestore.net//sheriff/testnewrdbmstoadld --temporary-rootdir adl://.azuredatalakestore.net//sheriff/testnewrdbmstoadld/temp --as-textfile --enclosed-by'--escaped-by / --null-string \\ N --null-non-string \\ N --fields-terminated-by,--optional-enclosed-by / -m 1“ -d statusdir =“ adl://.azuredatalakestore.net/tmp/dataingestion/3802/statusdirec1” https://qa-spark-cluster.azurehdinsight.net/templeton/v1/sqoop
日志: 19/12/12 15:11:36 INFO sqoop.Sqoop:正在运行的Sqoop版本:1.4.6.2.6.5.3009-43 19/12/12 15:11:36 WARN tool.BaseSqoopTool:在命令行上设置密码不安全。考虑改用-P。 12/12/19 15:11:36 INFO manager.SqlManager:使用默认的fetchSize为1000 19/12/12 15:11:36 INFO工具.CodeGenTool:开始代码生成 19/12/12 15:11:36错误工具。ImportTool:遇到IOException正在运行导入作业:java.io.IOException:查询[\“ select \ * \ from \ MEDICAL_DEP_EMPS \”]在WHERE子句中必须包含“ $ CONDITIONS”
答案 0 :(得分:0)
Sqoop --query选项希望您以自由格式的选择查询传递$ CONDITIONS。
您可以参考SqoopUserGuide中的“ 7.2.2。选择要导入的数据”和“ 7.2.3。自由格式查询导入”
尽管下面的链接不是“ squer import的卷曲”,但我希望它能为您提供帮助。
submit-apache-sqoop-jobs-by-using-curl
示例: 使用单个映射器时,一个映射器将顺序传输全部选定数据。
--query 'SELECT * FROM a WHERE $CONDITIONS' -m 1
如果使用双引号,则需要添加\以避免替换。
--query "SELECT * FROM a WHERE \$CONDITIONS" -m 1
使用多个映射器时,根据--split-by子句拆分并替换$ CONDITIONS之后,所有映射器将并行传输所选数据。
--query 'SELECT * FROM a WHERE $CONDITIONS' -m 3 --split-by a.column