您好,我正在使用下面的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" --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"
但是我遇到了与$ condition相关的错误,我认为该错误已正确实现..请帮助..谢谢
警告:/usr/lib/sqoop/../accumulo不存在! Accumulo进口 将失败。请将$ ACCUMULO_HOME设置为Accumulo的根 安装。 17/11/17 10:12:10信息sqoop.Sqoop:正在运行的Sqoop 版本:1.4.6-cdh5.13.0 19/11/17 10:12:10 WARN工具.BaseSqoopTool: 在命令行上设置密码不安全。考虑使用 -P代替。 17/11/17 10:12:10 INFO manager.MySQLManager:准备使用MySQL流式结果集。 17/11/11 10:12:10信息 tool.CodeGenTool:开始生成代码19/11/17 10:12:10错误 tool.ImportTool:导入失败:java.io.IOException:查询[选择* 来自客户的客户,其中customer_street(如“%Plaza%” AND)必须包含 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)
答案 0 :(得分:1)
您好,以下内容应该有效
@cython.boundscheck(False)
@cython.wraparound(False)
def packlist(a):
out = bytearray(4*len(a))
cdef int[::1] outview = memoryview(out).cast('i')
cdef int i
for i in range(len(a)):
outview[i] = a[i]
return bytes(out)
答案 1 :(得分:0)
请参阅SqoopUserGuide中的“ 7.2.3。自由格式查询导入”
自由格式选择查询中的Sqoop --query选项需要$ CONDITIONS,并且在sqoop用户指南Notes中需要注意的地方很少。
示例:
使用单个映射器时,整个所选数据将由一个映射器顺序传输。
--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