Mysql 在hadoop上使用sqoop导入命令时出错
您好,我正在使用下面的sqoop命令,我认为应该可以工作Mysql 在hadoop上使用sqoop导入命令时出错,mysql,hadoop,sqoop,Mysql,Hadoop,Sqoop,您好,我正在使用下面的sqoop命令,我认为应该可以工作 [cloudera@quickstart ~]$ sqoop import --connect jdbc:mysql://quickstart.cloudera:3306/retail_db --username root --password cloudera --query "select * from customers where customer_street like '%Plaza%' AND $CONDITIONS" --
[cloudera@quickstart ~]$ sqoop import --connect jdbc:mysql://quickstart.cloudera:3306/retail_db --username root --password cloudera --query "select * from customers where customer_street like '%Plaza%' AND $CONDITIONS" --target-dir /user/cloudera/problem1/customers/textdata --fields-terminated-by '*' --lines-terminated-by '|' --as-textfile --columns "customer_id,customer_fname,customer_lname,customer_street" --split-by "customer_id"
但我得到了以下与$conditions相关的错误,我认为这些错误得到了正确的实现。。请帮忙。。谢谢
警告:/usr/lib/sqoop/。/accumulo不存在!Accumulo进口
将失败。请将$ACCUMULO_设置为ACCUMULO的根
安装。2017年11月19日10:12:10信息sqoop.sqoop:运行sqoop
版本:1.4.6-cdh5.13.0 19/11/17 10:12:10警告工具。BaseSqoopTool:
在命令行上设置密码是不安全的。考虑使用
-P取而代之。2017年11月19日10:12:10 INFO manager.MySQLManager:准备使用MySQL流媒体结果集。2017年11月19日10:12:10信息
tool.CodeGenTool:开始代码生成19/11/17 10:12:10错误
tool.ImportTool:导入失败:java.io.IOException:查询[选择]*
来自客户,如“%Plaza%”和]必须包含
WHERE子句中的“$CONDITIONS”。在
org.apache.sqoop.manager.ConnManager.getColumnTypes(ConnManager.java:332)
在
org.apache.sqoop.orm.ClassWriter.getColumnTypes(ClassWriter.java:1858)
位于org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1657)
在
org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:106)
位于org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:494)
位于org.apache.sqoop.tool.ImportTool.run(ImportTool.java:621)
org.apache.sqoop.sqoop.run(sqoop.java:147)位于
org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)位于
org.apache.sqoop.sqoop.runSqoop(sqoop.java:183)位于
org.apache.sqoop.sqoop.runTool(sqoop.java:234)位于
org.apache.sqoop.sqoop.runTool(sqoop.java:243)位于
org.apache.sqoop.sqoop.main(sqoop.java:252)
嗨,下面的方法应该有效
sqoop import --connect jdbc:mysql://quickstart.cloudera:3306/retail_db --username root --password cloudera --query "select * from customers where \$CONDITIONS AND customer_street like '%Plaza%'" --target-dir /user/cloudera/problem1/customers/textdata --fields-terminated-by '*' --lines-terminated-by '|' --as-textfile --columns "customer_id,customer_fname,customer_lname,customer_street" --split-by "customer_id"
请参阅中的“7.2.3.自由形式查询导入”
Sqoop——自由形式selectquery中的query选项需要$CONDITIONS,并且在Sqoop用户指南注释中很少需要注意
--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
这回答了你的问题吗?