hadoop sqoop导入,不带整数值,使用split by

x8diyxa7  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(367)

我正在使用sqoop将数据从memsql导入hdfs。我在memsql中的源表没有任何整数值,我创建了一个新表,其中包含一个新列test和现有列。
下面是查询
sqoop导入--连接jdbc:mysql://:3306/db_name --username x——password xx——query“select closed,extract\u date,open,close,cast(floor(rand()*1000000 as int))as test from tble\u name where$conditions——target dir/user/x——按测试拆分;
此查询给了我以下错误:
com.mysql.jdbc.exceptions.jdbc4.mysqlsyntaxerrorexception:您的sql语法有错误;检查与mysql服务器版本相对应的手册,以获得正确的语法,使用near'as int)as test from table_name where(1=0)'(第1行)
我也尝试了另一种方法:
sqoop导入--连接jdbc:mysql://xx:3306/x --username x——password x——查询“select closed,extract\u date,open,close,ceiling(rand()*1000000)as test from table\u name where$conditions”——target dir/user/dfsdlf——按测试拆分;
通过下面的查询可以执行作业,但是没有传输数据。它说按列拆分是浮点类型,并严格地将其更改为整数类型。
请帮助我将按列拆分从浮点类型更改为整数类型

bfhwhh0e

bfhwhh0e1#

问题似乎主要与使用别名作为--splitby参数有关。如果需要在查询中使用特定列,可以在控制台中运行查询“select closed,extract\u date,open,close,ceiling(rand()*1000000)from table\u name”,获取控制台中表的列名,并在--split by'complete\u column\u name\u from\u console'(这里应该是--split by'ceiling(rand()*1000000)'中使用它)。

相关问题