使用拆分

时间:2018-06-15 19:29:47

标签: hadoop sqoop

我使用Sqoop将数据从memsql导入到Hdfs。我在Memsql中的源表没有任何整数值,我创建了一个新表,包括一个新列' test'使用现有列。

FOllowing是查询

sqoop进口--connect JDBC:MySQL的:// XXXXXXXXX:3306 / DB_NAME --username XXXX --password XXXXX --query"选择闭合,extract_date,打开,关闭,浇铸(地板(RAND() * 1000000 as int)作为来自tble_name的测试,其中\ $ CONDITIONS" --target-dir / user / XXXX - split-by test;

此查询给了我以下错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法中有错误;检查与您的MySQL服务器版本相对应的手册,以便在table_name附近使用(&= 39; as int)作为测试的正确语法,其中(1 = 0)'在第1行

我也尝试了另一种方式:

sqoop import --connect jdbc:mysql:// XXXXX:3306 / XXXX --username XXXX --password XXXX --query" select closed,extract_date,open,close,ceiling(rand()* 1000000 )来自table_name的测试,其中\ $ CONDITIONS" --target-dir / user / dfsdlf --split-by test;

使用以下查询执行作业,但没有传输数据。它表示split-by列是float类型并严格地将其更改为整数类型。

请帮我这个,将split-by列从float类型

更改为整数类型

1 个答案:

答案 0 :(得分:0)

这个问题似乎主要与使用别名作为--split-by参数有关。 如果需要在查询中使用特定列,则可以运行查询  '从table_name'中选择closed,extract_date,open,close,ceiling(rand()* 1000000)在控制台中,获取控制台中表格的列名,并在--split-by' complete_column_name_from_console'中使用它。 (这里应该是--split-by' ceiling(rand()* 1000000)')。

相关问题